Developer platform · Plugin directory
Publish tools, adapters, and observability integrations using AgentMug's shared plugin contract. Every plugin implements the same definePlugin() interface from @agentmug/runtime.
Workers are packaged jobs. Plugins extend what the runtime itself can do. MCP lets an external host call a worker; plugins extend the worker's own capabilities. They complement each other — a plugin can ship the tools a worker uses, and MCP exposes the finished worker to Claude Code, Cursor, or Cline.
Plugins are wired into a runtime you host. There is no cloud install flow yet — see “Publish a plugin” below for how entries get added.
@agentmug/otelEmits LLM-call + transcription spans into your existing OTel pipeline — Honeycomb, Datadog, Tempo, Jaeger, Sentry, anything OTel-compatible.
import { runAgent, noSourcePlan } from "@agentmug/runtime";
import { OtelTracingAdapter } from "@agentmug/otel";
await runAgent({
agentId: "...",
userId: "...",
userInput: "...",
adapters: {
persistence: yourPersistence,
llm: yourLlmClient,
tracing: new OtelTracingAdapter(),
},
onEvent: () => {},
});@agentmug/mcp-bridgeExpose any AgentMug agent as a Model Context Protocol server so Claude Code, Cursor, Continue, Cline, and Claude Desktop can call it as a tool.
// In your MCP client config (.claude/settings.json):
{
"mcpServers": {
"my-agent": {
"command": "npx",
"args": [
"-y",
"@agentmug/mcp-bridge",
"https://agentmug.com/api/external/agents/<AGENT_ID>"
],
"env": { "AGENTMUG_API_KEY": "am_agent_..." }
}
}
}@agentmug/cliRun .agent files from any shell. Cloud subcommands (create / list / fork / invoke) make the runtime agent-controllable: an LLM with shell access can ship new agents into your AgentMug account.
npm install -g @agentmug/cli export AGENTMUG_API_KEY=am_user_... agentmug create --prompt "Triage my Gmail and draft replies" agentmug list agentmug invoke email-triage --input "Summarize unread"
The plugin shape is one function call: definePlugin({ name, version, tools }). Consumers wire your package with registry.loadPlugin(yourPlugin), which registers your tools.
There is no automated publish flow. Publish your package to npm, then open a pull request adding it here with a one-line description — that PR is the review step.
Note: loadPlugin() currently registers tools only. A plugin may declare adapters, but the runtime does not read them yet — pass adapters directly to runAgent(), as the OpenTelemetry example above does.