Skip to main content

Availability

Plugin manifests define plugin metadata, capabilities, permissions, and UI integration. Understanding manifests is essential for building secure, well-integrated plugins.

Manifest Structure

Edge Gateway Plugins

Edge Gateway plugins don’t use JSON manifests. Configuration is provided via the API when creating the plugin:
Hook types for Edge Gateway plugins:
  • pre_auth - Before authentication
  • auth - Custom authentication
  • post_auth - After authentication
  • on_response - Response modification
  • data_collection - Data export

AI Studio UI Plugins

Complete manifest structure for UI plugins:
Expandable

AI Studio Agent Plugins

Agent plugin manifests are simpler (no UI):
Expandable

Object Hooks Plugins

Object hooks plugins intercept CRUD operations on platform objects. These plugins use the unified SDK and register hooks programmatically, so the manifest doesn’t need special hook configuration.

Basic Object Hooks Manifest

Expandable
Note: Object hooks are registered via the GetObjectHookRegistrations() method in the plugin code, not in the manifest. The plugin_type is "ai_studio" since object hooks are Studio-only.

Hook Registration (Code, Not Manifest)

Object hooks are registered programmatically:
Expandable
Supported Objects:
  • llm - LLM provider configurations
  • datasource - Data source connections
  • tool - External tool definitions
  • user - User accounts
Supported Hook Types (per object):
  • before_create - Before object creation (can block)
  • after_create - After object creation (notification only)
  • before_update - Before object update (can block)
  • after_update - After object update (notification only)
  • before_delete - Before object deletion (can block)
  • after_delete - After object deletion (notification only)
Priority: Lower numbers run first (e.g., priority 5 runs before priority 10). Use priority to control hook execution order when multiple plugins register hooks for the same object/event.

Multi-Capability with Hooks

Object hooks plugins can combine hooks with UI:
Expandable
This plugin would:
  1. Register before_create hooks for datasources (via code)
  2. Block creation and add to pending approvals
  3. Provide UI dashboard to approve/reject
  4. Use RPC methods for approval actions
See examples/plugins/studio/llm-validator/ and examples/plugins/studio/hook-test-plugin/ for complete examples.

Resource Provider Plugins

Resource Provider plugins register custom resource types that integrate into the App creation flow. Declare resource types in the manifest’s resource_types section:
Expandable
Resource types declared in the manifest are automatically registered when the plugin loads. The plugin also implements ResourceProvider methods programmatically for runtime behavior. See Resource Provider Plugins for the full guide.

Service Scopes Reference

LLM Scopes

Tool Scopes

Datasource Scopes

App Scopes

Plugin Scopes

KV Storage Scopes

Analytics Scopes

UI Slot System

Available Slots

Add a collapsible section to the sidebar with nested items:
Expandable
Add a single link to the sidebar:

settings.section

Add a section to the Settings page:

app.detail.tab

Add a tab to App detail pages:

llm.detail.tab

Add a tab to LLM detail pages:

Mount Configuration

WebComponent Mount

  • kind: Must be "webc" for WebComponents
  • tag: Custom element tag name
  • entry: Path to JavaScript file (relative to plugin)
  • props: Properties passed to the component

Permission Validation

Permissions are validated when plugins call the Service API:
If your plugin doesn’t declare the required scope in its manifest, Service API calls will fail with permission errors.

Configuration Schema

Plugins can provide JSON Schema for their configuration:
Expandable
The platform uses this schema to:
  • Validate configuration on save
  • Generate UI forms
  • Provide inline documentation
  • Set default values

Security Best Practices

Principle of Least Privilege

Only request scopes your plugin actually needs:

Content Security Policy

Define CSP headers for UI plugins:

Input Validation

Always validate inputs in RPC methods:
Expandable

Secrets Management

Never hardcode secrets in manifests or code:

Versioning and Compatibility

Semantic Versioning

Use semantic versioning for plugin versions:
  • MAJOR: Breaking changes
  • MINOR: New features, backward compatible
  • PATCH: Bug fixes, backward compatible

Compatibility Declaration

Declare platform compatibility:

Testing Manifests

Validation

Validate your manifest before deployment:

Common Errors

Complete Examples

Minimal UI Plugin

Expandable
See plugins-studio-ui.md for complete rate-limiting-ui example.

Minimal Agent Plugin

Advanced Agent Plugin

Expandable