Important: This guide covers advanced breaking changes for evaluators, services, and runtime methods. Read the main migration guide first for actions, providers, and basic migrations.
Table of Contents
Evaluators Migration
Evaluator Interface Changes
Evaluators remain largely unchanged in their core structure, but their integration with the runtime has evolved:Key Changes:
- Evaluation Results: The
evaluate()method now returnsEvaluator[]instead ofstring[]:
- Additional Parameters: The evaluate method accepts new optional parameters:
Services & Clients Migration
Service Registration Changes
Services have undergone significant architectural changes:Migration Steps:
- Remove Singleton Pattern:
- Update Service Registration:
- Service Type Enum Changes:
Runtime Method Changes
1. State Management
TheupdateRecentMessageState method has been removed:
2. Memory Manager Access
Memory managers are no longer directly accessible:3. Model Usage
Complete overhaul of model interaction:4. Settings Management
Global Settings Object Removed
The globalsettings object is no longer exported from @elizaos/core:
New Settings Methods
Migration Example
Common Settings Migration Patterns
- Environment Variables: Both v0 and v1 read from environment variables, but access patterns differ
- Dynamic Settings: v1 allows runtime setting updates with
setSetting() - Secret Management: v1 adds explicit secret handling with the
isSecretparameter
Real-World Fix: Coinbase Plugin
The Coinbase plugin’sgetCharityAddress function needs updating:
5. Event System
New event-driven architecture:Entity System Migration
The most significant change is the shift from User/Participant to Entity/Room/World:User → Entity
Participant → Room Membership
New World Concept
v1 introduces the concept of “worlds” (servers/environments):Connection Management
Client Migration
Clients now have a simpler interface:Quick Reference
Removed Methods
updateRecentMessageState()→ UsecomposeState(message, ['RECENT_MESSAGES'])registerMemoryManager()→ Not needed, use database adaptergetMemoryManager()→ Use database adapter methodsregisterContextProvider()→ UseregisterProvider()
Removed Exports
settingsobject → Useruntime.getSetting(key)instead
Changed Methods
evaluate()→ Now returnsEvaluator[]instead ofstring[]getAccountById()→getEntityById()ensureUserExists()→ensureConnection()generateText()→runtime.useModel()
New Methods
setSetting()registerEvent()emitEvent()useModel()registerModel()ensureWorldExists()getRooms()
Migration Checklist
- Update all evaluator result handling to expect
Evaluator[]objects - Remove singleton patterns from services
- Update service registration to pass classes instead of instances
- Replace
updateRecentMessageStatewithcomposeState - Migrate from
generateTexttoruntime.useModel - Update user/participant methods to entity/room methods
- Add world management for multi-server environments
- Convert clients to service-based architecture
- Update any direct memory manager access to use database adapter
- Replace
import { settings }withruntime.getSetting()calls - Update functions to accept
runtimeparameter where settings are needed
Need Help?
If you encounter issues not covered in this guide:- Check the main migration guide for basic migrations
- Review the v1.x examples in the ElizaOS repository for reference implementations
- Join our Discord community for support

