What's Peculiar About OpenClaw
- Agents are config rows, not processes. Adding an agent = adding a JSON entry. No deployment, no daemon. System prompt assembled at runtime from config.
- Pi framework, not Claude Code. Uses
@mariozechner/pi-coding-agentto call Anthropic Messages API directly. Not a Claude Code wrapper, not a subprocess. CustomAgentTooltype with TypeBox schemas. - Manifest-first plugins. Each plugin declares capabilities/hooks in
plugin.jsonbefore code loads. Filesystem discovery only — bundled,node_modules/@openclaw/*, workspaceextensions/, orconfig.plugins.loadPaths. - Own plugin AND hook systems — completely separate from Claude Code's.
register(api)surface vs tool-level hooks. 5 hook categories, 4 bundled hooks (session-memory, command-logger, boot-md, bootstrap-extra-files). - Involuntary subagent injection. Child results force-injected into parent. Parent CANNOT refuse. A compromised subagent has unconditional write access to parent context.
- No fsync — accepts data loss. Atomic rename prevents zero-byte files, but temp files never fsynced. Deliberate trade: durability for simplicity.
- Single gateway process, 24+ channels. Telegram, Discord, Slack, WhatsApp, Signal, iMessage, Matrix, MS Teams, Google Chat, LINE, Twitch, Nostr, and more from one WebSocket server. Most channels of any system — and no horizontal scaling.
General agent concepts (how OpenClaw compares to other systems) live on the concept pages: Routing & Gateway · Memory · Subagents · Tools & Security · Project Management