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

  1. Your plugin runs as a gRPC server on a port
  2. You register it with a workspace by adding it to the workspace HCL config
  3. The platform connects, calls Register, and discovers your plugin's capabilities
  4. 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

Reference