Stop being the glue
between your agents.

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/cli

chit, not chat.

Chat is one agent at a time with you in the middle. A chit takes the middle out.

The chit is the routine.

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 run says what ran.

The CLI says what ran. No chat log.

$ chit run examples/consult.json --scope work-session
manifest: consult
scope: work-session-7f24089cc56
adapters: codex-exec, claude-cli

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

Read the chit before it fires.

Four views of the same graph: ASCII, JSON, Mermaid, HTML.

inputsquestionask_codexcodex-execask_claudeclaude-clioutformat

Every chit, checked.

Permissions are typed. Capabilities are checked. The chit cannot lie about what it enforces.

PASS
capabilities · all required surface capabilities present
WARN
unenforced permission · an adapter that cannot enforce a declared permission needs --allow-unenforced-permissions
FAIL
marker mismatch · manifest hash differs from sealed marker

Run it three ways.

The same chit, three execution modes. You choose how much to watch.

Foreground
Checkpoint every iteration. chit runs one round; you read the diff and the verdict, then advance.
Background
Run one task unattended. chit converges in a detached worker against a git worktree. Check on it later; read the receipt.
Batch
Run several tasks in parallel, one worktree each, with declared dependencies. The deliverable is a set of reviewable branches.
No chit, no work.
No work, no surprises.chit manifesto

Install

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.