ethos
General-purpose AI is fine for small talk, mediocre at real work. Ethos gives you a team of specialists — researcher, engineer, reviewer, coach, operator — each good at its one job. Same conversation across Slack, Telegram, and your terminal.
mit · node 24 · typescript strict · zero deps in the types layer

A generic agent has every tool. That is its problem. The toolset is the union of every task you might ever do, which is a security surface, a cost surface, and a quality surface. Voice is mush. Memory is a pile.
Personalities invert it. Each has a curated toolset, a first-person identity (SOUL.md), and a memory scope. Researcher gets the 8 tools it needs. Reviewer gets 3 and a per-personality memory scope so its code-review notes never leak into your coach session.
Specialization, not configuration. Personality is architecture, not a system prompt in a costume.
web_search web_extract web_crawl read_file search_files memory_read memory_write session_searchterminal read_file write_file patch_file search_files web_search web_extract execute_code run_tests lintread_file search_files session_searchweb_search web_extract memory_read memory_write session_searchterminal read_file write_file patch_file search_files execute_code run_testsEvery component is an interface in @ethosagent/types, injected at construction. Personality decides which tools enter the loop and which model handles the turn.
user input
│
▼
┌──────────────────────────────────────────────────────┐
│ AgentLoop.run(input, options) │
│ ───────────────────────────────────────────────── │
│ 1. resolve or create session │
│ 2. fire session_start hooks │
│ 3. persist user message │
│ 4. load history (trimmed) │
│ 5. prefetch memory (per personality scope) │
│ 6. build system prompt from injectors │
│ 7. before-prompt-build modifying hooks │
│ 8. agentic loop (LLM stream → tool calls → LLM ...) │
│ 9. pre-flight hooks → execute tools → collect │
└──────────────────────────────────────────────────────┘
│
▼
AsyncGenerator<AgentEvent>
│ text_delta, thinking_delta, tool_start, tool_end,
│ tool_progress, usage, done, error
▼
surfaces: cli · tui · vscode · email · telegram · slackArchitecture in 90 seconds →OpenClaw users migrate in one command. Any clawhub skill installs into Ethos directly — the catalogue becomes your toolset, no forks, no shims.
$ ethos claw migrate --dry-run # preview the plan, then re-run without --dry-run
Memory, skills, platform tokens, and API keys copy in place. Your SOUL.md becomes a migrated personality; built-in matches resolve automatically. Idempotent — safe to re-run.
$ ethos skills install steipete/slack # any slug clawhub serves, just works
The OpenClaw-compat layer parses SKILL.md frontmatter, environment substitutions, and OS gates — so the full clawhub catalogue runs unmodified inside your personality's toolset.