YOUR AGENTS. IN FOCUS.

Every agent.
One clear
picture.

A live dashboard for Claude Code and Codex. See the work unfold. Know which Claude session needs you next.

npx ccdeck

Open source · Runs on your machine

Explore the deck
LOCAL / CONNECTEDDEMO DATA
CLAUDE CODE SESSIONweb-apiAdd rate limiting to the API3 subagents 17m
SUBAGENT RUNNINGreviewerRead · limit.test.ts
SUBAGENT DONEdocsWrite · api.md
SUBAGENT DONEtestsBash · npm test
One session needs you.web-api · Waiting for permission
6m ↗
The whole picture. The next move.

Illustrated session · Waiting status is Claude Code only.

BUILT FOR THE WAY YOU BUILD.Claude Code + CodexFrom scroll to signal ↓
INSIDE THE DECKAn interactive product walkthrough
ccdeck live 202.0k board tokens$5.23 board cost24¢/min Demo data
doneinfra3s session GPT-5.5 Rotate the deploy keys 3 tools23.5k tok 49¢
  • Bashterraform plan
  • Editkeys.tf
  • Bashterraform apply
liveweb-api17m session → 4Opus 5 Add rate limiting to the public API 4 tools 1 in-flight138.0k tok $4.28
  • livereviewer15m subagent Sonnet 5 6 tools 1 in-flight
    • Readlimit.ts
    • Grep"429"
    • Readlimit.test.tsrunning
  • donemigrator1s subagent Sonnet 5 2 tools
  • donedocs1s subagent Sonnet 5 2 tools
  • donegeneral-purpose2s subagent Sonnet 5 3 tools

Select any node on the canvas. This panel is drawn for the page; ccdeck shows the same facts on the node and its tool calls.

web-apilive

Claude Code session Opus 5 17m

Prompt

Add rate limiting to the public API

Tool calls · 4

  1. ReadREADME.md0.4s
  2. GreprateLimit0.6s
  3. Readrouter.ts0.3s
  4. Agent4 subagents15m

Tokens

in 41.2kout 96.8kcache 1.84M

$4.28 so far · 24¢/min

Demo data An invented session, drawn as a reconstruction of the deck.

Your terminal shows a scroll. ccdeck draws the tree.

One session becomes a team. ccdeck connects every agent to its work, so you can follow the whole story—from the first prompt to the last tool call.

The same events. A clearer picture.

17:42:00web-apiSession started
17:42:01reviewerSubagent spawned
17:42:02docsSubagent spawned
17:42:03Read limit.tsreviewer · tool call
17:42:04Grep 429reviewer · tool call
17:42:05Write api.mddocs · tool call
Demo data An illustrated Claude Code event stream. Reorganize it to see which agent did what.

  • Claude Code and Codex on one canvas

    Claude Code reports through a hook, and Codex is read from its own rollout log. The model chip on each node tells them apart.

  • It watches. It cannot steer.

    The hook only forwards events. It exits 0 and writes nothing back, so it has no way to allow, deny or rewrite a tool call.

The ccdeck session list. The topbar reads 1 waiting. web-api, on Opus 5, sits first, waiting 6m on a Bash call, above infra on GPT-5.5 and data-pipeline on Sonnet 5. The same web-api node on the canvas, carrying a yellow bar: Claude needs your permission, 6 minutes.
The real deck, version 3.22.5, running on demo data: the session list, and the same session’s node on the canvas. Open the full capture

The next thing that needs you.
Already at the top.

A permission prompt, or a finished turn waiting for your next instruction, moves that session to the top of the list with how long it has waited, longest first. The count in the topbar jumps to the oldest one, and the deck can raise a desktop notification when a session stops to ask.

Claude Code only. Codex is read from its rollout log, which records what happened rather than what is waiting now.

Know your limits. Switch without the detour.

See usage and quotas for Claude Code and Codex at a glance. Keep multiple Claude accounts ready, then switch from the deck without another trip through the terminal.

Every model.
One clear picture.

Zoom out from a single session. See your daily usage, compare models, and find where the cost comes from.

Usage history LOCAL LOGS / DEMO
Total cost$57.92
Daily average$8.27
Sep 8 — Sep 14

Daily cost by model. Explore 7, 14 or 30 days of illustrative local usage.

DAILY COST · USD Sep 8 — Sep 14Select a day to inspect ↗

Choose a day to see its model breakdown.

Demo data Illustrated costs, not a bill. History is grouped by day, model and CLI.

One working login.
Your machines, ready again.

Your desktop has a working Claude login. Your laptop should benefit from it. Pair your decks and choose which accounts to share: missing accounts can arrive automatically, and shared logins that stop working can repair themselves from a paired machine.

A little help from your other machine.

Desktop

Local network on · paired

work@studio.example

working · offered to paired decks

Laptop

Local network on · paired

work@studio.example

login stopped workingreceiving a working login…working again · copied from Desktop

Mac mini

Local network off

not paired · nothing shared

Demo data Three of your machines. One selected Claude account. Demo timing is condensed. One working login. Another machine ready to go.
  1. Pair your machines

    Local Network is on by default. Open it in Claude accounts and accept the pairing request from your other deck.

  2. Share the accounts you choose

    Sign in on one machine and tick the accounts it may share. Paired decks can add those accounts without pasting a login blob.

  3. Skip the repeat sign-in

    Once a minute, paired decks check for missing accounts and broken shared logins. A working copy can repair a dead login; an account that still works stays untouched.

Scope. Claude logins only, between decks you paired. Repair requires that account to be selected for sharing on the receiving deck, too, and a paired machine with a working copy. This shares accounts, not agent sessions or remote control. On a VPN, a guest network or a second subnet, add a deck by address or with an invite. A live login crosses the network, so pairing is the decision that matters.

Your agents are busy.
How’s your machine?

CPU, memory and thermal readings beside the work. See what your local machine is handling without opening another monitor.

This machine ILLUSTRATED LINUX WORKSTATION · 8 CORES
12%

8 cores · per-core activity

RECENT CPU ACTIVITY
60 seconds agoNow
01 / LOOK BACKInspect the history.

Open a reading to explore its CPU, memory, load or thermal history.

02 / LOOK CLOSERFind the busy processes.

Inspect processes and their command lines, with machine readings still in view.

Room for the next task.

A quiet machine. Memory and CPU leave room for the work ahead.

Demo data One local machine, three illustrative moments. No readings are collected from your device.

Start in one command.

  1. Have Node.js 18 or newer

    And Claude Code, Codex, or both, on macOS, Linux or Windows.

  2. Run ccdeck

    npx ccdeck

    It opens http://127.0.0.1:4317 and, on the first run, adds its hook to ~/.claude/settings.json. If that port is busy, the terminal prints the one it took.

  3. Start an agent

    Run claude or codex in any folder. The session appears on the canvas by itself.

Demo data From command to canvas
TERMINAL

npx ccdeck

Ready to start your local deck.

01 · Start ccdeck02 · Open the dashboard03 · Run your agent

Illustrated setup. No commands run on your machine.

ccdeck keeps running after you close the terminal. npx ccdeck --stop turns it off, and npx ccdeck --uninstall removes its hooks. Setup and options on GitHub

What it touches.

ccdeck is local, but it is not read-only. This is the short version; the README lists every file and request, with the switch that turns each one off.

Stays on your machine

Your sessions, prompts and tool calls. There is no telemetry. The dashboard listens on 127.0.0.1; Local Network is on by default and also listens on your network; you can switch it off. Account transfer requires pairing and selected shared accounts.

Written on your machine

The hook entry in ~/.claude/settings.json, the deck’s event log, the helpers it manages (claude-swap and ccusage), Codex’s token in ~/.codex/auth.json, refreshed the way Codex refreshes it, and Browser Watch’s local findings and log.

Leaves your machine

A small version check to npm, installs and checks for those helpers, quota reads to Anthropic and OpenAI signed with your own credentials, and on Apple Silicon Macs whose sensors are silent, a one-time download of macmon.

Know what it reads.

Browser Watch starts enabled. It checks supported Chromium browsers for visits made after the deck started, looking for signs of browser automation while you were away. It temporarily copies history databases to query them, then deletes the copies. Findings stay on your machine.

Turn the watch off to stop background checks. Opening its panel still reads live. Existing visits from before the deck started are not included.

Questions

Does it work with Codex, or only Claude Code?

Both, on one canvas, with spend and quota for each. Two things are Claude Code only: the waiting-on-you queue, and account management, which includes Local network.

Can it approve my agent’s tool calls?

No. The hook forwards events and has no way to answer: it exits 0 and writes nothing to stdout, the two channels Claude Code gives a hook to allow, deny or rewrite a tool call. The deck never edits your code. Browser Watch has separate, configurable reactions to detected browser activity.

Do I have to keep a terminal open?

No. It runs in the background and survives the terminal closing. A global npm install also starts it when you log in; an npx run does not. npx ccdeck --stop ends it.

Is an account share safe to paste?

Treat it like a password. A share carries the account’s live login unencrypted, and it expires ten minutes after it is made.

Is Local network remote access?

No. It adds missing shared Claude accounts and repairs broken shared logins between paired decks. It does not share agent sessions, project files, or control of another machine.

What license is it under?

AGPL-3.0-only, since version 3.22.0. Releases up to 3.21.4 were MIT, and those grants stand. Running it on your own machine asks nothing of you. Licensing details

See your agents in one place.

npx ccdeck

View on GitHub