ElizaOS Architecture
Source analysis of elizaos/eliza v2.0.3-beta.10 (develop head 0250bfb9, 2026-06-13). character.json + plugin marketplace, now a cross-platform agent product-OS with sandboxed remote-mode plugins and pluggable vector storage.
Key Insights
- Character-driven runtime: Agents as JSON personality configs with knowledge arrays, style guides, topics, and message examples - separates behavior from implementation, enables non-technical creation
- Plugin composition: 4 types (Actions=tools, Providers=context, Evaluators=assessment, Services=background) - 158 plugins from Solana/EVM to Discord/Telegram, clean separation vs monolithic
- Multi-platform abstraction: Unified client pattern hides platform differences (Discord, Telegram, Twitter, Direct API) - cross-platform agents without platform-specific code
- Web3-native design: Built-in wallet + blockchain as first-class citizens (EVM chains, Solana, TEE) - token operations, DeFi, smart contracts integrated at the core
- Advanced memory with trust: RAG with embeddings + fact extraction, relationship tracking with trust scores, trajectory logging for decision trees - persistent context beyond simple chat history
What's Shocking
- Character JSON as portable agent identity: Share and fork entire agent personalities without any code or credentials. A JSON file IS the agent — bio, voice, style, lore, knowledge arrays, topics, message examples. Non-technical users create agents by editing text.
- The plugin ecosystem IS the product: 158 plugins (Solana, EVM, TEE, Farcaster, Discord, Telegram, Twitter, plus localdb/inmemorydb data plugins) with action/evaluator/provider architecture — the runtime is just a shell. The marketplace and community contributions are what drove 20K+ stars and a $20B+ partner ecosystem.
- Multi-agent coordination built-in: WorldEngine manages shared state across agent swarms. Trajectory logging persists decision trees. Trust scoring tracks relationships. This isn't single-agent scaffolding — it's orchestration infrastructure.
- April 2026 production pivot: 2680+ commits shifted from feature velocity to isolation hardening — AccountPool enforces single-source-of-truth for multi-account credentials, Docker runtime dependency isolation, vault-based secrets, and Android AOSP local inference. The project is maturing from alpha experimentation to production deployment patterns.
- June 2026: not a framework anymore: Three commits (4e7e410a1, f048a19ee, 5c3438af5) in the five days before v2.0.0-beta.0 add tray-first macOS startup, deferred embedding warmup, and post-ready voice load — these are end-user UX optimizations, not developer APIs. Combined with cloud patron chat provisioning and metered image-gen, ai16z is building the appliance (cloud + desktop SaaS), not just the toolkit.
- The orthogonal component changed: No longer "the only horizontally-scalable system, only via PostgreSQL+pgvector." Vector storage is now pluggable — pgvector still in
packages/cloud-shared (e.g. 0090_advanced_memory_vector_columns.sql), but packages/native ships sqlite-vec and plugins/plugin-localdb + plugins/plugin-inmemorydb sit alongside plugin-sql. character.json + plugin marketplace remain the through-line; the data layer spans cloud K8s and native desktop/mobile/embedded targets.
- Isolation boundary moved off-process (v2.0.3): Plugins ran in-process (None/Prompt) — your process, your permissions. v2.0.3 adds remote-mode plugins running in isolated Bun subprocesses/Workers behind an RPC wire envelope with a permissions manifest. Source-code proof:
packages/plugin-worker-runtime, plugin-host-shim (+ -electrobun/-ios/-android/-web), plugin-remote-manifest, and plugin-sub-agent-claude-code which drives the Claude Code CLI inside an isolated Bun subprocess. The boundary slides from in-process toward subprocess/Container with an explicit permission model.