Plugins
Plugins are the primary mechanism for extending elizaOS functionality. They package related actions, evaluators, providers, services, and models into reusable modules that can be easily shared and composed.Plugin Architecture
A plugin is a self-contained module that can register multiple extension points:Creating a Plugin
Basic Plugin
Plugin with Initialization
Plugin with Service
Plugin with Model Handler
Plugin Registration
Plugins are registered during runtime initialization:Registration Flow
Plugin Components
Actions
See Actions documentation for details.Evaluators
Pre vs Post Evaluators
Pre vs Post Evaluators
Pre-phase evaluators run before memory storage:Post-phase evaluators run after response:
- Use for security checks
- Content filtering
- Rate limiting
- Input validation
- Can block or rewrite messages
- Reflection and analysis
- Trust scoring
- Relationship extraction
- Learning from interactions
Providers
Services
Routes
Add HTTP endpoints:/{pluginName}{path}
Events
Database Integration
Custom Adapter
Plugin Schemas
Define database schema for plugin-specific tables:runtime.initialize().
Plugin Dependencies
Declaring Dependencies
Plugin Loading Order
- Bootstrap plugin (always first)
- Advanced planning (if enabled)
- Advanced memory (if enabled)
- Character plugins (from
character.plugins) - Explicit plugins (from runtime constructor)
Testing Plugins
Unit Tests
Integration Tests
Official Plugins
Core Infrastructure
- @elizaos/plugin-sql - SQLite/PostgreSQL database adapter
- @elizaos/plugin-anthropic - Claude models
- @elizaos/plugin-openai - GPT models
- @elizaos/plugin-openrouter - Multi-provider routing
- @elizaos/plugin-ollama - Local model support
- @elizaos/plugin-google-genai - Gemini models
Communication Platforms
- @elizaos/plugin-discord - Discord bot integration
- @elizaos/plugin-telegram - Telegram bot
- @elizaos/plugin-x - X (Twitter) integration
- @elizaos/plugin-slack - Slack bot
Capabilities
- @elizaos/plugin-browser - Web automation
- @elizaos/plugin-image-generation - Image creation
- @elizaos/plugin-transcription - Audio-to-text
- @elizaos/plugin-video - Video processing
- @elizaos/plugin-pdf - PDF handling
Blockchain
- @elizaos/plugin-solana - Solana integration
- @elizaos/plugin-evm - Ethereum and EVM chains
- @elizaos/plugin-tee - Trusted execution environment
Publishing Plugins
NPM Package
Documentation
Include comprehensive documentation:- README.md - Overview and quick start
- API.md - Detailed API reference
- EXAMPLES.md - Usage examples
- CHANGELOG.md - Version history
Best Practices
Plugin development guidelines
Plugin development guidelines
-
Naming
- Use descriptive, lowercase names
- Prefix with organization:
@yourorg/eliza-plugin-name - Be specific:
weathernotutils
-
Configuration
- Use environment variables or settings
- Provide sensible defaults
- Validate configuration in
init()
-
Error Handling
- Catch and log errors appropriately
- Return meaningful error messages
- Don’t crash the runtime
-
Performance
- Avoid blocking operations
- Use caching where appropriate
- Clean up resources in service
stop()
-
Testing
- Write comprehensive unit tests
- Include integration tests
- Test error conditions
-
Documentation
- Document all public APIs
- Provide usage examples
- Explain configuration options
-
Versioning
- Follow semantic versioning
- Document breaking changes
- Maintain backwards compatibility
-
Dependencies
- Minimize external dependencies
- Use peer dependencies for core packages
- Keep dependencies updated
Next Steps
Actions
Build custom actions
Services
Create services
Runtime
Runtime integration
Contributing
Contribute to elizaOS