One agent proposes. Another verifies. Another executes. A chit captures the routine in a file the runtime reads. Codex, Claude, MCP, your shell. Choreographed. You step in when judgment matters.
$ bunx @chit-run/cliChat is one agent at a time with you in the middle. A chit takes the middle out.
A chit declares who runs, what context flows, what permissions apply, and where the work goes next. The runtime reads the chit. The output shows what ran.
{ "id": "consult", "description": "Ask Codex and Claude. Format the answer.", "participants": { "codex": { "agent": "codex", "session": "per_scope" }, "claude": { "agent": "claude", "session": "per_scope", "permissions": { "filesystem": "read_only" } } }, "steps": { "ask_codex": { "call": "codex" }, "ask_claude": { "call": "claude" }, "out": { "format": "## codex\\n..." } } }
The CLI says what ran. No chat log.
$ chit run examples/consult.json --scope work-session validation: capabilities: compatible agents: resolved permissions: read_only enforced codex via --sandbox read-only; claude via --permission-mode plan execution: level 0: ask_codex, ask_claude level 1: out run passes
Four views of the same graph: ASCII, JSON, Mermaid, HTML.
Permissions are typed. Capabilities are checked. The chit cannot lie about what it enforces.
The same chit, three execution modes. You choose how much to watch.
No chit, no work.
No work, no surprises.chit manifesto
The published CLI is @chit-run/cli. It runs under Bun and installs the chit binary.
$ bunx @chit-run/cli@latest --help $ bun install -g @chit-run/cli@latest $ chit --help
Example manifests and Studio live in the source repo. Start with the CLI, then open the docs when you want the full surface map.