Skip to Content

Plugins

Plugins extend Squadron with additional tools.

Loading Plugins

plugin "playwright" { source = "github.com/mlund01/plugin_playwright" version = "v0.0.2" settings { headless = false browser_type = "chromium" } }

Attributes

AttributeTypeDescription
sourcestringPlugin source (GitHub path or local path)
versionstringVersion tag or "local" for local development
settingsblockPlugin-specific configuration (optional)

Using Plugin Tools

Once loaded, plugin tools are available as plugins.<name>.<tool>:

agent "browser" { tools = [plugins.playwright.browser_navigate] } # Or use all tools from a plugin agent "browser" { tools = [plugins.playwright.all] }

Plugin Paths

Plugins are stored in .squadron/plugins/<platform>/<name>/<version>/plugin (e.g. .squadron/plugins/darwin-arm64/playwright/v0.0.2/plugin).

Creating Plugins

Use the squadron-sdk  to build plugins:

package main import squadron "github.com/mlund01/squadron-sdk" type MyPlugin struct{} func (p *MyPlugin) Configure(settings map[string]string) error { return nil } func (p *MyPlugin) ListTools() ([]*squadron.ToolInfo, error) { return []*squadron.ToolInfo{ { Name: "my_tool", Description: "Does something useful", Schema: squadron.Schema{Type: squadron.TypeObject}, }, }, nil } func (p *MyPlugin) Call(toolName, payload string) (string, error) { return "result", nil } func main() { squadron.Serve(&MyPlugin{}) }

Build and install:

mkdir -p .squadron/plugins/darwin-arm64/myplugin/local go build -o .squadron/plugins/darwin-arm64/myplugin/local/plugin .
Last updated on