AgentLayerdocs
Agent · Harness

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

PieceOwnerClaude CodeCodex
Operating manualHomeAGENTS.md through the .claude/CLAUDE.md bridgeAGENTS.md, read natively
SkillsPluginBundledBundled
MCP serverPluginRegistered by the plugin manifestRegistered per home in .codex/config.toml
HooksPluginBundledGenerated per home into .codex/hooks.json
Permissions and envHome.claude/settings.json, settings.local.jsonThe same files, projected into a profile, a rules file, and a shell env policy
Session capturePluginClaude transcript formatCodex 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 CodeCodex
Launch from the homeclaudecodex
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@agentlayercodex plugin remove then codex plugin add
Reconcile the home after an update/agent-kevin:upgrade$upgrade
See what loaded/contextThe 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:

  1. Read the manual. Any CLI that reads AGENTS.md gets the operating rules; the identity stack and indexes ride in on the SessionStart hook.
  2. Run the four hooks. session-start, session-capture at end and before compaction, and guard before shell commands. All shell into bin/kevin with a --hook-protocol=<host> flag.
  3. Register the MCP server with the home pinned (--home=).
  4. 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.

On this page