Skip to main content
elizaOS uses a plugin-based architecture for integrating different Language Model providers. This guide explains how to configure and use LLM plugins, including fallback mechanisms for embeddings and model registration.

Key Concepts

Model Types

elizaOS supports many types of AI operations. Here are the most common ones:
  1. TEXT_GENERATION (TEXT_SMALL, TEXT_LARGE) - Having conversations and generating responses
  2. TEXT_EMBEDDING - Converting text into numbers for memory and search
  3. OBJECT_GENERATION (OBJECT_SMALL, OBJECT_LARGE) - Creating structured data like JSON
Think of it like different tools in a toolbox:
  • Text Generation = Having a conversation
  • Embeddings = Creating a “fingerprint” of text for finding similar things later
  • Object Generation = Filling out forms with specific information

Plugin Capabilities

Not all LLM plugins support all model types. Here’s what each can do: Key Points:
  • 🌟 OpenAI, Google GenAI & OpenRouter = Do everything (jack of all trades)
  • 💬 Anthropic = Amazing at chat, needs a fallback for embeddings
  • 🏠 Ollama = Your local hero - does almost everything, no internet needed!

Plugin Loading Order

The order in which plugins are loaded matters significantly. From the default character configuration:

Understanding the Order

Think of it like choosing team players - you pick specialists first, then all-rounders:
  1. Anthropic goes first - It’s a specialist! Great at text generation but can’t do embeddings. By loading it first, it gets priority for text tasks.
  2. OpenRouter, OpenAI & Google GenAI come next - These are the all-rounders! They can do everything: text generation, embeddings, and structured output. They act as fallbacks for what Anthropic can’t do (embeddings).
  3. Ollama comes last - This is your local backup player! It supports almost everything (text, embeddings, objects) and runs on your computer. Perfect when cloud services aren’t available.

Why This Order Matters

When you ask elizaOS to do something, it looks for the best model in order:
  • Generate text? → Anthropic gets first shot (if loaded)
  • Create embeddings? → Anthropic can’t, so OpenAI steps in
  • No cloud API keys? → Ollama handles everything locally
This smart ordering means:
  • You get the best specialized models for each task
  • You always have fallbacks for missing capabilities
  • You can run fully offline with Ollama if needed

Real Example: How It Works

Let’s say you have Anthropic + OpenAI configured:

Model Registration

When plugins load, they “register” what they can do. It’s like signing up for different jobs:

How elizaOS Picks the Right Model

When you ask elizaOS to do something, it:
  1. Checks what type of work it is (text? embeddings? objects?)
  2. Looks at who signed up for that job
  3. Picks based on priority (higher number goes first)
  4. If tied, first registered wins
Example: You ask for text generation
  • Anthropic registered with priority 100 ✅ (wins!)
  • OpenAI registered with priority 50
  • Ollama registered with priority 10
But for embeddings:
  • Anthropic didn’t register ❌ (can’t do it)
  • OpenAI registered with priority 50 ✅ (wins!)
  • Ollama registered with priority 10

Embedding Fallback Strategy

Remember: Not all plugins can create embeddings! Here’s how elizaOS handles this: The Problem:
  • You’re using Anthropic (great at chat, can’t do embeddings)
  • But elizaOS needs embeddings for memory and search
The Solution: elizaOS automatically finds another plugin that CAN do embeddings!

Common Patterns

Anthropic + OpenAI Fallback

OpenRouter Standalone

OpenRouter + Local Fallback

Configuration

Environment Variables

Each plugin requires specific environment variables:

Available Plugins

Cloud Providers

Local/Self-Hosted

Best Practices

1. Always Configure Embeddings

Even if your primary model doesn’t support embeddings, always include a fallback:

2. Order Matters

Place your preferred providers first, but ensure embedding capability somewhere in the chain.

3. Test Your Configuration

Verify all model types work:

4. Monitor Costs

Different providers have different pricing. Consider:
  • Using local models (Ollama) for development
  • Mixing providers (e.g., OpenRouter for text, local for embeddings)
  • Setting up usage alerts with your providers

Troubleshooting

”No model found for type EMBEDDING”

Your configured plugins don’t support embeddings. Add an embedding-capable plugin:

“Missing API Key”

Ensure your environment variables are set:

Models Not Loading

Check plugin initialization in logs:

Migration from v0.x

In elizaOS v0.x, models were configured directly in character files:
The modelProvider field is now ignored. All model configuration happens through plugins.