Plugin Registry
Complete catalog of available ElizaOS plugins and their capabilities
The ElizaOS Plugin Registry provides a centralized location for discovering and using plugins that extend your agents' capabilities. The plugin ecosystem is growing with contributions from developers worldwide, covering core functionality, AI integrations, and specialized features.
Core Plugins
Foundation Plugins
These plugins provide essential functionality for ElizaOS agents:
Bootstrap Plugin
Package: @elizaos/plugin-bootstrap
Status: Built-in (Required)
Essential initialization and runtime functionality for all agents. This plugin provides core actions, evaluators, and providers that form the foundation of agent behavior.
Key Features:
- Core actions: REPLY, IGNORE, FOLLOW_ROOM, MUTE_ROOM
- Image generation with GENERATE_IMAGE action
- Message handling and response generation
- Attachment processing (images, documents)
- Event system integration
- Built-in providers for context, time, entities, and more
Example Usage:
// Automatically included in all agents
const character = {
name: "MyAgent",
plugins: [
"@elizaos/plugin-bootstrap", // Always first
// ... other plugins
]
}
SQL Plugin
Package: @elizaos/plugin-sql
Status: Built-in (Required)
Provides database connectivity with automatic schema migrations for plugins. Supports both PostgreSQL and PGLite (embedded SQLite alternative).
Key Features:
- Dynamic schema migrations
- PostgreSQL and PGLite support
- Connection pooling
- Automatic table creation
- Plugin schema registration
Environment Variables:
# For PostgreSQL
POSTGRES_URL=postgresql://user:pass@localhost/db
# For PGLite (local file)
PGLITE_PATH=./.eliza/.elizadb
Example Plugin with Schema:
export const myPlugin: Plugin = {
name: "my-plugin",
schema: {
// Drizzle ORM schema definition
myTable: pgTable('my_table', {
id: uuid('id').primaryKey(),
data: text('data')
})
}
}
Development Plugins
Plugin Starter
Package: @elizaos/plugin-starter
Status: Template
A template for creating new plugins. Copy this to start building your own plugin.
Features:
- Complete plugin structure
- Example implementations
- TypeScript configuration
- Testing setup
Usage:
# Copy the starter
cp -r packages/plugin-starter packages/plugin-myservice
# Update package.json name
# Implement your plugin logic
Dummy Services Plugin
Package: @elizaos/plugin-dummy-services
Status: Development/Testing
Provides mock services and utilities for testing plugin development.
Features:
- Mock service implementations
- Test data generators
- Development utilities
- Example service patterns
AI & Model Plugins
Available AI Integrations
OpenAI Plugin
Package: @elizaos/plugin-openai
Version: 1.0.6
Status: Published on npm
Integration with OpenAI's GPT models and API services.
Features:
- GPT-4 and GPT-3.5 support
- Text generation and embeddings
- Function calling
- Vision capabilities with GPT-4V
- DALL-E image generation
Installation:
bun add @elizaos/plugin-openai
Environment Variables:
OPENAI_API_KEY=sk-your-openai-key
OPENAI_MODEL=gpt-4 # or gpt-3.5-turbo
OPENAI_MAX_TOKENS=2000
OPENAI_TEMPERATURE=0.7
Character Configuration:
{
"name": "MyAgent",
"plugins": [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-openai"
],
"settings": {
"model": "gpt-4",
"temperature": 0.7
}
}
Local AI Plugin
Package: @elizaos/plugin-local-ai
Version: 1.0.8
Status: Published on npm
Support for locally hosted language models using Ollama or compatible APIs.
Features:
- Ollama integration
- Local model serving
- Privacy-focused inference
- Custom model support
Installation:
bun add @elizaos/plugin-local-ai
Environment Variables:
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=llama2 # or any installed model
Example Usage:
const character = {
name: "LocalAgent",
plugins: [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-local-ai"
],
settings: {
model: "llama2"
}
}
TEE & Security Plugins
TEE Plugin
Package: @elizaos/plugin-tee
Status: Available
Trusted Execution Environment support for secure and verifiable agent operations.
Features:
- Secure computation
- Attestation support
- Private key management
- Verifiable execution
Use Cases:
- Blockchain agents
- Secure data processing
- Verifiable AI operations
RedPill Plugin
Package: @elizaos/plugin-redpill
Version: 1.0.3
Status: Published on npm
Advanced security and verification features for agents.
Installation:
bun add @elizaos/plugin-redpill
Creating Custom Plugins
Plugin Development Workflow
Create Your Plugin
Use the plugin starter template:
# In the monorepo
cp -r packages/plugin-starter packages/plugin-myservice
cd packages/plugin-myservice
Define Plugin Structure
// src/index.ts
import { Plugin } from "@elizaos/core";
import { myAction } from "./actions/myAction";
import { myProvider } from "./providers/myProvider";
import { myService } from "./services/myService";
import { myEvaluator } from "./evaluators/myEvaluator";
export const myPlugin: Plugin = {
name: "my-plugin",
description: "My custom plugin",
actions: [myAction],
providers: [myProvider],
services: [myService],
evaluators: [myEvaluator],
// Optional: Define database schema
schema: {
myTable: pgTable('my_table', {
id: uuid('id').primaryKey(),
data: jsonb('data')
})
}
};
export default myPlugin;
Implement Components
Action Example:
// src/actions/myAction.ts
import { Action, IAgentRuntime, Memory, State } from "@elizaos/core";
export const myAction: Action = {
name: "MY_ACTION",
description: "Performs my custom action",
similes: ["do something", "execute task"],
examples: [
[
{
entityId: "{{agentId}}",
content: { text: "Can you do something?" }
},
{
entityId: "{{agentId}}",
content: {
text: "I'll do that for you.",
action: "MY_ACTION"
}
}
]
],
validate: async (runtime: IAgentRuntime, message: Memory) => {
// Validation logic
return true;
},
handler: async (
runtime: IAgentRuntime,
message: Memory,
state?: State,
callback?: any
) => {
// Action implementation
await callback({
text: "Action completed!",
action: "MY_ACTION"
});
return true;
}
};
Test Your Plugin
# Run tests
bun test
# Test in development
bun run dev
Use in Your Agent
{
"name": "MyAgent",
"plugins": [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-myservice"
]
}
Plugin Architecture
Plugin Components
ElizaOS plugins can include multiple types of components:
Actions define what your agent can do. They process messages and generate responses.
interface Action {
name: string;
description: string;
similes: string[];
examples: Array<[Message, Message]>;
validate: (runtime, message) => Promise<boolean>;
handler: (runtime, message, state, callback) => Promise<boolean>;
}
Common actions: REPLY, GENERATE_IMAGE, SEND_MESSAGE, UPDATE_SETTINGS
Providers supply context and data for decision-making.
interface Provider {
name: string;
description: string;
getContext: (runtime, message, state) => Promise<string>;
}
Common providers: TIME, ENTITIES, RECENT_MESSAGES, CAPABILITIES
Services handle background tasks and external integrations.
interface Service {
name: string;
description: string;
start: () => Promise<void>;
stop: () => Promise<void>;
}
Common services: WebSocket connections, scheduled tasks, API listeners
Evaluators analyze conversations and trigger specific behaviors.
interface Evaluator {
name: string;
description: string;
evaluate: (runtime, message, state) => Promise<void>;
}
Common evaluators: sentiment analysis, fact extraction, goal tracking
Plugin Best Practices
Development Guidelines
- Always extend core functionality - Don't duplicate existing actions or providers
- Use TypeScript - Maintain type safety throughout your plugin
- Handle errors gracefully - Never crash the runtime
- Document thoroughly - Include examples and configuration options
- Test comprehensively - Unit and integration tests are essential
Performance Considerations
- Async operations: Always use async/await for I/O operations
- Rate limiting: Implement rate limits for external API calls
- Memory management: Clean up resources in service stop methods
- Caching: Use runtime.cacheGet/cacheSet for expensive operations
Security Guidelines
- Validate inputs: Always validate message content and parameters
- Sanitize outputs: Ensure responses don't contain sensitive data
- API key management: Use environment variables, never hardcode
- Permission checks: Verify user permissions before actions
External Plugin Integration
Adding External Plugins
There are several ways to add external plugins to your ElizaOS project:
Method 1: NPM Package
# Install from npm
bun add @elizaos/plugin-openai
# Add to character
{
"plugins": [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-openai"
]
}
Method 2: Git Submodule (Monorepo)
# Add as submodule
git submodule add https://github.com/org/plugin-custom packages/plugin-custom
# Update and install
git submodule update --init --recursive
bun install
# Use as workspace dependency
{
"dependencies": {
"@elizaos/plugin-custom": "workspace:*"
}
}
Method 3: Local Development
# Link local plugin
cd /path/to/my-plugin
bun link
cd /path/to/eliza-project
bun link @elizaos/plugin-myplugin
Community Plugin Development
Contributing Plugins
- Follow the plugin specification: Ensure compatibility with the Plugin interface
- Add comprehensive tests: Include unit and integration tests
- Document thoroughly: README, examples, and API documentation
- Submit for review: Create a PR to the ElizaOS repository
Plugin Ideas
The community is actively developing plugins for:
- Communication: Discord, Telegram, Slack, Teams
- Blockchain: Ethereum, Solana, Bitcoin integrations
- AI/ML: Various model providers and embeddings
- Data: Weather, news, search APIs
- Productivity: Calendar, email, task management
- Entertainment: Games, media, content generation
Getting Help
- Documentation: Plugin Development Guide
- Examples: Check existing plugins in
packages/
directory - Community: Join the ElizaOS Discord for support
- Issues: Report bugs and request features on GitHub
Quick Start Examples
Basic Agent with OpenAI
// character.ts
export const character = {
name: "Assistant",
description: "A helpful AI assistant",
plugins: [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-openai"
],
settings: {
model: "gpt-4",
temperature: 0.7
}
};
# .env
OPENAI_API_KEY=sk-your-key
POSTGRES_URL=postgresql://localhost/eliza
Local AI Agent
{
"name": "LocalAgent",
"description": "Privacy-focused local AI",
"plugins": [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-local-ai"
],
"settings": {
"model": "llama2"
}
}
# Start Ollama first
ollama run llama2
# .env
OLLAMA_HOST=http://localhost:11434
TEE-Enabled Agent
// For secure, verifiable operations
export const character = {
name: "SecureAgent",
plugins: [
"@elizaos/plugin-bootstrap",
"@elizaos/plugin-sql",
"@elizaos/plugin-tee",
"@elizaos/plugin-redpill"
]
};
Resources
- Plugin Development Guide - Comprehensive development guide
- Creating Plugins - Quick start tutorial
- Plugin Templates - Ready-to-use templates
- Plugin Testing - Testing strategies and tools
- Bootstrap Plugin Documentation - Core plugin reference
- SQL Plugin Documentation - Database plugin reference
- GitHub Repository - Source code and examples