-
Notifications
You must be signed in to change notification settings - Fork 59
Plugins
Milady loads plugins at runtime via elizaOS. Plugins extend the agent with additional tools, connectors, and capabilities. The plugin system is managed through the plugins config block and the milady plugins CLI.
Plugins are resolved and loaded dynamically at agent startup. The @elizaos/plugin-plugin-manager package handles runtime installation and management.
The plugins config block controls what is loaded:
{
"plugins": {
"enabled": true,
"allow": ["telegram", "discord"],
"deny": ["twitch"],
"load": {
"paths": ["/path/to/my-local-plugin"]
}
}
}-
allow— optional allowlist of plugin IDs to load (all others blocked) -
deny— plugins to explicitly block, takes priority over allow -
load.paths— additional local paths to scan for plugins
milady plugins list # list installed plugins
milady plugins add <name> # install a plugin
milady plugins remove <name> # remove a pluginThe following @elizaos/plugin-* packages are included as dependencies in package.json:
| Plugin | Purpose |
|---|---|
| plugin-anthropic | Anthropic/Claude model provider |
| plugin-openai | OpenAI model provider |
| plugin-groq | Groq model provider |
| plugin-ollama | Ollama local model provider (see known issue in Model Providers) |
| plugin-openrouter | OpenRouter model aggregator |
| plugin-google-genai | Google Gemini models |
| plugin-telegram | Telegram bot connector |
| plugin-discord | Discord bot connector |
| plugin-twitch | Twitch chat connector |
| plugin-browser | Browser automation (Puppeteer/CDP) |
| plugin-shell | Shell command execution |
| plugin-pdf | PDF reading |
| plugin-vision | Vision/image analysis |
| plugin-knowledge | Document knowledge base |
| plugin-local-embedding | Local embedding model |
| plugin-sql | Database (PGLite/PostgreSQL, handles migrations) |
| plugin-agent-skills | elizaOS skills system |
| plugin-agent-orchestrator | Multi-agent orchestration |
| plugin-cron | Scheduled tasks |
| plugin-todo | Task/todo management |
| plugin-form | Form generation |
| plugin-experience | Agent experience and memory |
| plugin-personality | Agent personality system |
| plugin-rolodex | Contact and relationship tracking |
| plugin-secrets-manager | Secret management |
| plugin-trajectory-logger | Conversation trajectory logging |
| plugin-elizacloud | ElizaCloud integration |
| plugin-edge-tts | Edge TTS text-to-speech |
| plugin-elevenlabs | ElevenLabs TTS |
| plugin-computeruse | CUA (computer use agent) |
| plugin-claude-code-workbench | Claude Code workbench integration |
| plugin-cli | CLI tools for the agent |
| plugin-trust | Trust scoring |
The packages/ directory contains additional plugins specific to Milady:
| Package | Purpose |
|---|---|
| @milady/plugin-bnb-identity | BNB Chain identity |
| @milady/plugin-pumpfun-streaming | Pump.fun streaming |
| @milady/plugin-retake | Retake integration |
| @milady/plugin-streaming-base | Base streaming utilities |
| @milady/plugin-twitch-streaming | Twitch streaming |
| @milady/plugin-x-streaming | X (Twitter) streaming |
| @milady/plugin-youtube-streaming | YouTube streaming |
The plugins.slots config allows you to control which plugin owns specific system slots:
{
"plugins": {
"slots": {
"memory": "plugin-name"
}
}
}Set memory to "none" to disable memory plugins entirely.
Milady can fetch plugin metadata from registry endpoints. Additional registry endpoints can be configured:
{
"plugins": {
"registryEndpoints": [
{
"label": "My Registry",
"url": "https://my-registry.example.com/plugins.json",
"enabled": true
}
]
}
}{
"plugins": {
"entries": {
"telegram": {
"enabled": false
}
}
}
}Milady sets NODE_PATH in three places (src/runtime/eliza.ts, scripts/run-node.mjs, apps/app/electron/src/native/agent.ts) to ensure dynamic plugin imports resolve correctly when running from source or as an installed package. Do not remove this code. See docs/plugin-resolution-and-node-path.md in the repo for the full explanation.
A Bun exports patch (scripts/patch-deps.mjs) also fixes Cannot find module errors for plugins whose published package.json points exports["."].bun at a missing ./src/index.ts.