Building Plugins for AgentPlatform
AgentPlatform uses a gRPC-based plugin system. Plugins run as standalone processes that communicate with the platform over gRPC. You can write plugins in any language that supports gRPC — this guide covers Go and Python.
How Plugins Work
- Your plugin runs as a gRPC server on a port
- You register it with a workspace by adding it to the workspace HCL config
- The platform connects, calls
Register, and discovers your plugin's capabilities - The platform calls capability-specific RPCs based on what your plugin advertises
Every plugin implements the base Plugin service. Depending on what your plugin does, it also implements one or more capability services:
| Capability | Service | Purpose |
|---|---|---|
TOOL_PROVIDER |
ToolProvider |
Expose custom tools to the agent |
LLM_PROVIDER |
LLMProvider |
Provide LLM completions |
VIEW_PROVIDER |
ViewProvider |
Add UI views to the workspace dashboard |
LIFECYCLE_HOOK |
LifecycleHook |
Intercept and modify agent lifecycle events |
Quick Start
Prerequisites
Get the proto files from the AgentPlatform repository:
proto/
├── plugin.proto # Base Plugin service (required)
├── tool.proto # ToolProvider service
├── llm.proto # LLMProvider service
├── view.proto # ViewProvider service
├── lifecycle.proto # LifecycleHook service
└── platform.proto # PlatformHost callback service
Workspace Configuration
Register your remote plugin in the workspace HCL:
workspace "my-workspace" {
plugin "my-plugin" {
source = "remote://localhost:9010"
version = "1.0.0"
}
}
Plugin Settings
Plugins that define a config_schema block in their manifest get a settings UI automatically. The Settings page (accessible from the sidebar) renders a form for each plugin based on its schema fields.
Settings are per-workspace — each workspace has its own plugin configuration. Access settings from the workspace detail page via the Settings button.
Config merge order: manifest defaults → workspace settings → workspace HCL config overrides.
See the Manifest Reference for full field type documentation including ui_type, placeholder, and api_source attributes.
Examples
- Tool Plugin (Go) — A complete tool plugin in Go
- Tool Plugin (Python) — A complete tool plugin in Python
- View Plugin (Go) — A view plugin with UI in Go
- View Plugin (Python) — A view plugin with UI in Python
Reference
- Plugin API Reference — All gRPC services, messages, and enums
- HCL Component Reference — All UI components for view plugins
- Plugin Manifest — The manifest HCL format