Skip to content

Plugins

Plugins add new capabilities to gdc — extra tools, or handlers that react to what the agent does — packaged as self-contained, portable modules. Because they run in a sandboxed runtime, a plugin can extend gdc without being able to roam your system freely.

What a plugin can do

  • Add new tools the agent can call.
  • Add hooks that react to agent activity (see Hooks).

A plugin is distributed as a small bundle: a manifest describing it plus the compiled module.

Installing a plugin

# install into your user scope (available in every project)
gdc plugins install ./path/to/plugin --wasm ./path/to/plugin/module.wasm

# install into the current project only
gdc plugins install ./path/to/plugin --scope project \
  --wasm ./path/to/plugin/module.wasm

install takes the plugin's directory (or its manifest file) and the compiled module. User scope lands in ~/.gdc/plugins/; project scope in the project's .gdc/plugins/.

Managing plugins

gdc plugins list             # what's discovered, in every scope
gdc plugins list --json      # machine-readable
gdc plugins remove <name> --scope user   # uninstall (scope required)

Trust and limits

Plugins are governed by permissions just like other tools: by default the agent asks before using a plugin's tools. You can mark a plugin trusted and set a per-call time limit in configuration:

~/.gdc/config.toml
[plugin.plugins.my-plugin]
enabled          = true
trusted          = false   # ask before using this plugin's tools
call_timeout_secs = 30

Writing your own

Building a plugin is a developer task with its own workflow — defining a manifest, declaring capabilities, implementing the module, building it, and installing it. It requires a separate development toolkit and is documented in the dedicated plugin authoring guide; ask your gdc provider if you need it.

Plugins vs. MCP servers

Both extend the agent's tools, but they suit different needs:

Plugin MCP server
Runs Inside gdc's sandboxed runtime As a separate program or remote service
Best for Self-contained logic you package and ship Connecting to existing tools, data, and services
Distribution A bundle you install A command or URL you point at