

AIAgent, the Python core in run_agent.py (~8,900 lines) that handles prompt building, tool dispatch across 48 tools and 40 toolsets, context compaction and caching, memory persistence via MEMORY.md and FTS5 SQLite, and skill creation nudges. Below that sit the execution backends: terminal (local, Docker, SSH, Singularity, Daytona, Modal), 4 browser backends, 4 web backends, and dynamic MCP.AIAgent is the durable component. Execution backends are pluggable. Session history is persisted to SQLite with FTS5 full-text search — searchable across all past conversations.rl_training_tool.py, batch_runner.py).~/.openclaw/memory/{agentId}.sqlite. Hermes stores all sessions in ~/.hermes/state.db with a messages_fts FTS5 table. The raw storage architecture is structurally similar.MEMORY.md and memory/YYYY-MM-DD.md files — human-editable Markdownmemory_search (FTS5 keyword + optional vector embeddings)~/.hermes/memories/MEMORY.md and USER.md — also Markdown, also agent-managedsession_search tool: FTS5 full-text search + Gemini Flash summarization (not vector embeddings by default)SKILL.md format. Skills written for one are generally portable to the other — they describe procedural instructions in Markdown, not code. This wasn't coordinated top-down. It reflects a real convergence in how the ecosystem is thinking about skill abstraction.main, scribe, and optimus each on their own channels with their own personalities and permissions. Hermes uses Profiles: each profile is a fully isolated agent with its own config, memory, sessions, skills, and gateway process. Both support running multiple specialized agents; the architectural model differs.