elizaOS

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:

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

  1. Always extend core functionality - Don't duplicate existing actions or providers
  2. Use TypeScript - Maintain type safety throughout your plugin
  3. Handle errors gracefully - Never crash the runtime
  4. Document thoroughly - Include examples and configuration options
  5. 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

  1. Follow the plugin specification: Ensure compatibility with the Plugin interface
  2. Add comprehensive tests: Include unit and integration tests
  3. Document thoroughly: README, examples, and API documentation
  4. 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