Hosts
Kevin runs inside an agent CLI you already use. The home is the same on every host; what differs is how the host is wired to it.
A host is the agent CLI that opens the home, reads the manual, runs the skills, and calls the MCP server. Two are supported today: Claude Code and Codex. Everything the host does not own lives in the home, which is why a home works from either, and why a session ended in one is in the other's context next time.
What a host provides
| Piece | Owner | Claude Code | Codex |
|---|---|---|---|
| Operating manual | Home | AGENTS.md through the .claude/CLAUDE.md bridge | AGENTS.md, read natively |
| Skills | Plugin | Bundled | Bundled |
| MCP server | Plugin | Registered by the plugin manifest | Registered per home in .codex/config.toml |
| Hooks | Plugin | Bundled | Generated per home into .codex/hooks.json |
| Permissions and env | Home | .claude/settings.json, settings.local.json | The same files, projected into a profile, a rules file, and a shell env policy |
| Session capture | Plugin | Claude transcript format | Codex rollout format |
The home's settings live under .claude/ for historical reasons and are the source of truth for both hosts: Codex's wiring is generated from them, so a permission or a variable is set once. See Configuration.
Speaking to either host
| Claude Code | Codex | |
|---|---|---|
| Launch from the home | claude | codex |
| Run a skill | /agent-kevin:sync | $sync |
| Install the plugin | /plugin marketplace add … then /plugin install … | codex plugin marketplace add … then codex plugin add … |
| Update the plugin | /plugin update agent-kevin@agentlayer | codex plugin remove then codex plugin add |
| Reconcile the home after an update | /agent-kevin:upgrade | $upgrade |
| See what loaded | /context | The SessionStart payload names the harness on its first line |
These docs write skills by their bare name (sync, morning-briefing) and use host tabs wherever the exact command differs. Pick your host once in any tab strip; the choice sticks across pages.
The host does the thinking
The MCP server never calls a model. It does I/O and returns prompts; your own session synthesises, and the server confirms the write. The compile loop, briefings, and audits all run inside your turn, so they draw on whatever plan your host bills, never on a metered API key. The consequence is that Kevin is reactive: you start every session, nothing runs at 7am on its own. See History for why.
Adding a host
A new host needs four things, and the plugin isolates each behind a small surface:
- Read the manual. Any CLI that reads
AGENTS.mdgets the operating rules; the identity stack and indexes ride in on the SessionStart hook. - Run the four hooks.
session-start,session-captureat end and before compaction, andguardbefore shell commands. All shell intobin/kevinwith a--hook-protocol=<host>flag. - Register the MCP server with the home pinned (
--home=). - A capture adapter. One format module that turns the host's transcript into user and assistant turns.
Codex was the first host added this way; its page is the worked example.