Install ccdeck with npx and see your first session
To start ccdeck, run npx ccdeck in any terminal with Node.js 18 or newer: the deck opens in your browser at http://127.0.0.1:4317, adds its hook to ~/.claude/settings.json on its first run, and keeps running in the background after you close the terminal; npx ccdeck --stop stops it.
You will
- Start the deck with one command
- See your first session appear on the canvas
- Stop the deck, or keep it running across a reboot
The film’s lines, in order: Every terminal tab looks the same. One stopped to ask. You did not see it go by. Know which agent is waiting on you, and for how long. A session is a tree. ccdeck draws the tree. One canvas. No tabs. No kanban. It ends on the ccdeck logo, npx ccdeck, “Free, open source, runs on your machine.” and ccdeck.dev.
Before you start
- Node.js 18 or newer, and a browser.
- Claude Code, Codex, or both. You need no account, API key or config file.
- A choice about usage reports. From its first start, the deck sends installs (with the ccdeck.dev page the command was copied from, which
--refin step 1 names), updates, when your first session arrives, daily use, your 0–10 rating if you give one, and errors toapi.ccdeck.dev, with your IP address and, on all but errors, a device fingerprint, never your sessions, prompts or files. The deck has no switch for them.AGENTS_DECK_NO_REPORTS=1keeps a deck started with it from sending them. The deck that step 6 starts at login gets it on macOS and Linux if you set it for step 6, and on Windows only as a saved user variable.
Steps
-
Start the deck
Run this in any terminal. The deck opens in your browser and gives you the prompt back.
npx ccdeck --ref=guides-first-runIts address is on the
server readyline:http://127.0.0.1:4317, unless something else holds that port.More about the start-up report
Claude hooks, with a path: the hook Claude Code sends its events through is in place.Codex sessionsreadswatchingwhen the deck found Codex, andskippedwhen it did not.- When 4317 is taken, the deck tries up to ten random ports between 4318 and 4400, and prints the one it got.
--portand a number asks for a port of your choosing. - Running
npx ccdeckagain starts no second deck. It printsdeck already runningand opens that deck’s tab. - Started over SSH, the deck adds a line naming
ccdeck tui, which shows your accounts and the sessions waiting on you in that terminal.
-
Take the tour, or close it
The first time a browser opens the deck, a tour of eight pictures opens by itself. Press Enter to move on, or Esc to close it.
Demo data The first of the eight. To see it again, click Take the tour on the empty canvas, or press ? and click it there. Watch video beside it opens this page’s film.
The deck is in your browser’s language when ccdeck has it; Settings › General › Language changes that.
-
See what the deck added for Claude Code Claude Code only
On its first run the deck adds a hook to
~/.claude/settings.json. Claude Code sends its events through it to the deck. Your own hooks and settings stay as they are.It only reports. The hook cannot allow, deny or change a tool call.
More about the hook
It is one entry for each of up to twelve Claude Code events, marked
"__agent-dag": true, running~/.claude/agent-dag/hook.jswith a three-second timeout. Ten are always there.StopFailureis added when every Claude Code the deck finds is 2.1.78 or newer, andUserPromptExpansion, for Skill activity, when every one is 2.1.116 or newer, unless the deck was started withAGENTS_DECK_SKILL_HOOK=0. With$CLAUDE_CONFIG_DIRset, the settings and the hook live there instead. The hook sends only to decks on127.0.0.1, and exits when none is running.The deck writes the entries again on every start where it finds Claude Code, so one you delete by hand comes back.
npx ccdeck --uninstallremoves them. Codex gets no hook: the deck reads the files Codex writes under~/.codex/sessions. -
Start a session
Until a session sends something, the canvas reads Waiting for Claude Code or Codex, and Session not showing up? under it says how the deck hears from each CLI, or that it is not watching it. Run
claudeorcodexin any folder, and give it something to do.
Demo data Its pill reads LIVE while it works, and DONE once it stops. A session already working when the deck starts appears marked restored; a Claude Code one only on macOS and Linux.
-
Stop the deck when you want it off
Closing the terminal does not stop the deck. This stops every running deck:
npx ccdeck --stopnpx ccdeck --statusshows what is running, andnpx ccdeckbrings the deck back.Windows over ssh. A deck started in an ssh session ends when that session closes. Start it from an ordinary Windows terminal, or let the login item in step 6 start it.
-
Keep the deck across a reboot
A deck started with
npxdoes not start again when you log in. To have it start at login, run:npx ccdeck --installIt installs ccdeck globally with npm and adds a login item. From then on,
ccdeckworks withoutnpx, and the deck starts at login without opening a tab.Linux only. systemd ends your services at logout unless lingering is on.
--installprints the command that turns it on, and does not run it for you.More about the login item
- An npx run cannot have one: it would point into npm’s cache, which npm clears without warning.
- Installed with
npm i -g ccdeck, the first run adds it by itself, once per machine. - It is a launchd agent on macOS, a systemd user unit on Linux and a Task Scheduler logon task on Windows. A Linux machine that does not run systemd gets none, and the first start says so.
ccdeck --uninstall-serviceremoves it and leaves ccdeck installed.
If something goes wrong
No tab opened, or the page says Server unreachable
Run npx ccdeck. If the deck is running, it opens its tab. If not, it starts the deck, and an open page reconnects by itself.
Claude hooks says not installed, and the deck exits
The deck could not update your Claude Code settings.json, and the line under it says why. If the file is not valid JSON, repair it or move it aside, then run npx ccdeck again.
Claude hooks or Codex sessions says skipped
The deck did not find that CLI. Install it and run it, and the deck finds it within 15 seconds and restarts itself. If it was installed already, start the deck with npx ccdeck --claude or npx ccdeck --codex, or for Codex set CODEX_HOME to its folder.
ccdeck: command not found
A deck started with npx does not put ccdeck on your PATH, though a few lines it prints leave npx out. Type npx in front, as in npx ccdeck --install.
npx ccdeck --install says npm cannot write to the global prefix
Do what the message says: run sudo npm i -g ccdeck, or point npm at a folder you own. Once ccdeck is installed, ccdeck --install-service adds the login item.
Something else? See Troubleshoot ccdeck: status, logs, port and hooks.