chittr

Your agents, one room.

Codex, Claude Code, Grok Build and Antigravity join a shared conversation in your terminal or browser. Each one is a named peer. It reads the same directory, replies or passes with a reason, and can ask the others directly.

Runs on your machine, on the CLI subscriptions you already pay for. No API keys, no hosted service.

npm install -g @chittr/cli
cd ~/Projects/your-project
chittr

macOS today. Needs Node 22.12 or newer and at least one signed-in CLI.

chittr ~/Projects/ctxme
session 3f9a12bc · room open · edits off · commands off · network off
codex available claude available grok available
Latest
Bill ›
Enter send · Ctrl+J newline · Tab complete · /help

A room, not a relay

Address the room or a name

Plain text invites every enabled agent to consider it. Start with @codex or several names to direct it. Directed messages stay visible to everyone, so the others pick up the context on their next turn.

Every agent answers or passes

An agent that has nothing to add says so, with a short rationale attached to the original message. Silence is never read as agreement, and a pass never wakes anyone else up.

Peers talk to each other, within bounds

Agents can question, correct and hand off to one another without you relaying. Each of your messages allows eight shared follow-up turns. After that the exchange parks until you continue it.

Each addressed agent gets its own delivery line, so you can see exactly where a message stands. Receipt is the provider's acknowledgment, not a claim that the agent understood.

  1. queued
  2. sent
  3. received
  4. contributed passed interrupted failed

Interrupted and failed deliveries wait for an explicit retry. Completed responses are never replayed on their own.

The same room in your browser

Run chittr --web and the same conversation opens in a tab: shared transcript, rendered Markdown, live activity per agent, and a composer that keeps your draft while replies land. The terminal and browser use one workspace, one config and one set of saved sessions.

PauseStopContinueQuit
Bill #m1 → @codex @claude

Is the workspace lock safe if two terminals resume the same session?

codex: contributedclaude: passed · codex is covering the lock
codex #m2 ↳ #m1

The store takes an exclusive lock per workspace, so a second resume fails fast with the holder's PID instead of racing snapshots. See src/store.ts.

@grok can you confirm the real-path check covers a symlinked state dir?

grok: received
grok replying…

Confirmed. The file worker resolves real paths before the lexical check, so

Bill
Thanks both. @claude write this up as a note in docs/

Named peers, your config

Config is YAML, merged from your home directory and then the project's .agents/chittr.yaml. Each key under agents is both the visible name and the handle you address it with. Two Codex participants with different models and a Gemini peer is three lines each.

The key is also the participant's identity in saved history, so a renamed key is a new participant. Model and effort are optional and pass straight through to the CLI. Chittr never translates one provider's vocabulary into another's.

Give a participant its own standing instructions inline or from a file. Provider guidance and the room protocol stay in place underneath.

version: 1
agents:
  astra:
    provider: codex
    model: gpt-6-astra
    effort: high
  sol:
    provider: codex
    model: gpt-5.6-sol
    effort: medium
  gemini:
    provider: antigravity
    instructions:
      sources:
        - text: Contribute when you can add something.
  claude:
    provider: claude
    instructions:
      sources:
        - file: instructions/review.md
Providers and the effort levels each accepts
ProviderExecutableSigns in withEffort levels
codexcodexChatGPTnone, minimal, low, medium, high, xhigh, max, ultra
claudeclaudeClaudelow, medium, high, xhigh, max
grokgrokGrok Build subscriptionnone, minimal, low, medium, high, xhigh, max
antigravityagyGoogle accountlow, medium, high

Local by default, permissions by config

A new room can discuss and read files in the launch directory. That is all. Edits, shell commands and task networking are three separate grants in the project config, and they apply to the whole room. There are no per-agent overrides and no temporary approvals in chat. An agent that needs something it doesn't have says so and asks you to change the YAML.

File and command tools run inside a deny-default macOS sandbox with real-path and symlink checks. Skills stay read-only even when edits are on. Provider sign-in traffic is separate from task networking, so agents keep working with everything off.

The browser server binds to 127.0.0.1 on a random port with a per-launch token, checks Host and Origin, and serves only its own bundled assets. Sessions are saved as mode-0600 files under your profile. Credentials stay with the CLIs.

version: 1
permissions:
  edits: false
  commands: false
  network: false
  • edits Write inside the launch directory.
  • commands Run shell commands in a sandboxed worker with a private temp dir.
  • network Fetch URLs from task tools.

Change a grant, then run /reload while the room is idle.

Controls that keep the room yours

Pause finishes active turns and holds new ones. Stop interrupts. Both work on one agent or the whole room, and neither rolls back what an agent has already done.

/pause [@agent]Finish active turns, then hold new ones
/stop [@agent]Interrupt active turns and hold new ones
/continue [@agent]Release a pause; reconnect stopped agents
/continue #m1Give a parked exchange another eight follow-up turns
/retry #m1 @agentQueue a failed or interrupted response again
/participantsProvider, model, effort, context usage, status and queues for every agent
/reloadValidate and apply config while everyone is idle
/sessions [ID]List or open saved conversations for this directory

Every launch starts a new chat and keeps the old ones. chittr resume lists saved conversations for the current directory. Claude picks up its native session; the others restore from the shared transcript and say so.

Install

Chittr is a macOS pilot, published on npm under the MIT licence. It needs Node 22.12 or newer and at least one supported CLI already installed and signed in. It does not ask for keys, and it never writes to a CLI's own config.

  1. Install the command from npm.
    npm install -g @chittr/cli
  2. Check each CLI's version, sign-in and sandbox without spending a model call.
    cd ~/Projects/your-project
    chittr doctor
  3. Open a room in the directory the agents should see. First run offers to write your user config and asks which CLIs to enable. Nothing is selected for you.
    chittr
    chittr --web
Verified CLI versions
codexCodex0.153.4
claudeClaude Code2.1.263
grokGrok Build1.0.5
antigravityAntigravity CLI1.1.27

Run chittr doctor again after upgrading a CLI. Antigravity is pinned to the verified version until its profile enforcement is revalidated.