Captain Code shield emblem, engraved in black ink CAPTAIN CODE The Captain Command Centre

FIELD MANUAL · MISSION 01 · LOCAL ONLY

Your Claude Code UNDER COMMAND.

Claude Code is a CLI with real state — settings.json, skill folders, a plugin registry, MCP server definitions, memory files, and one JSONL transcript per session. All of it on disk. None of it visible.

Captain Code is the control room that reads those exact files and writes back to them — on your machine, on loopback, with nothing uploaded and no account to create.

MIT licensed · Node 18+ · npm install && npm start · lives at 127.0.0.1:8787

Engraved shield emblem with a five-pointed star SHIELD ACTIVE

Chapter 01 — The Situation

181 skills on the machine.
No way to see which ones were on.

The CLI is excellent at doing the work and terrible at telling you the state of the install. You know the skills are there. You do not know which are enabled, which are parked, which plugins are switched on, what the MCP servers point at, or what last month cost.

So the state lives on disk, unread, until a tool writes a new line into it. The Captain Command Centre reads the same files the tool reads, in the same machine — no wrapper, no exported report, no second source of truth.

  • Real files, real paths — every number traces back to a file on your disk
  • Nothing is deleted to disable it — folders move aside, nothing is destroyed
  • Secrets never leave the process — they render as 125 chars · hidden
  • Every mutation is reversible — a timestamped backup sits beside each file

Chapter 02 — The Console

Seven stations.
One machine. One operator.

01

Console

reads

Every transcript under ~/.claude/projects, the job records, the running tasks.

writes

Nothing. The console is a window, not a hand.

02

Tasks

reads

Job records, live processes on the box, tasks this dashboard started.

writes

Starts and stops headless claude runs.

03

Skills

reads

~/.claude/skills and ~/.claude/skills-off.

writes

Moves a folder between the two. Never deletes.

04

Plugins

reads

installed_plugins.json and the marketplace catalogue.

writes

enabledPlugins in settings.json.

05

MCP Servers

reads

mcpServers in ~/.claude.json, global and per project.

writes

Same file, plus the parked-servers file.

06

Settings

reads

settings.json, settings.local.json, CLAUDE.md, access config.

writes

All of them — with a backup on every change.

07

Memory

reads

~/.claude/memory and every project memory folder.

writes

The memory files themselves.

Chapter 03 — The Mission

Five steps to a command centre
over your own install.

  1. 01

    Deploy

    Clone, install, build, serve. One command if you let the installer do it.

    git clone https://github.com/aswathas/claude-command-center.git
    cd claude-command-center
    npm install
    npm run build
    npm start

    Windows: start.cmd does it in one click. macOS/Linux: ./scripts/install.sh.

  2. 02

    Plug in your Claude Code

    By default the console reads ~/.claude and ~/.claude.json — the install you already have, auto-detected. Point it somewhere else with two environment variables: a scratch profile, a second machine, a test rig.

    CLAUDE_HOME=/path/to/.claude \
    CLAUDE_JSON=/path/to/.claude.json \
    npm start

    Run npm run doctor first — it prints the exact paths it detected, and whether they hold skills, plugins, MCP servers and transcripts.

  3. 03

    Open the console

    http://127.0.0.1:8787. Loopback only. Nothing on the network can reach it until you say otherwise. For live development, npm run dev runs the API on 8787 and Vite on 5173 with hot reload.

  4. 04

    Take the wheel

    Toggle a skill, park a plugin, add an MCP server, edit a setting, rewrite a memory file. Every change writes the real file and drops a .bak.<timestamp> beside it. Secrets read back masked, and merged back in place on save — a round-trip can never replace a live token with a placeholder.

  5. 05

    Take it to the phone

    Settings → Phone access puts the console on your LAN address, with a QR code in the panel and an access code every request must carry. The phone answers the only question that matters at 1am: is it still going? Switch phone access off and the console closes to the outside world immediately.

Chapter 04 — The Oath

Safety rules the code
enforces, not the docs promise.

Loopback by default. The server binds to 127.0.0.1. Nothing listens on the network until phone access is explicitly switched on.
Credentials are never read. ~/.claude/credentials.json is refused, not skipped.
Masked on the way out. Any key matching token / secret / key / auth / cookie, and anything shaped like a provider key, renders as 125 chars · hidden.
Masked values merge back on the way in. Saving the raw settings editor restores the stored secrets instead of writing placeholders over them.
Every write is backed up. settings.json.bak.<timestamp> sits beside the file it replaced.
Writes stay inside the walls. Confined to the Claude home, the app cache, and ~/.claude.json.
Disabling is not deleting. Skills and MCP servers are moved aside — the folder is still there tomorrow.
No destructive default. Deleting means deleting. It is never the default action on a control.

Chapter 05 — The Ledger

Token telemetry that cannot
drift from the tool's own numbers.

Claude Code writes one JSONL transcript per session. Every assistant message carries a usage block, and each session ends with a cost-state record holding Claude Code's own accounting.

The detail that took the longest: the same API message can be written more than once inside a transcript, so naive summing inflates your token count. The indexer dedups on (sessionId, message.id), and takes cost from the session's own cost-state record when it has one — so the dashboard cannot disagree with the tool about the same history.

  • 9.2scold scan of 1,292 transcripts / 869 MB
  • 0.13srescan, served from the per-file cache
  • (mtime, size)cache key — only changed files are re-read
  • 0synthetic day buckets — a session's cost lands on a real day
Captain Code console page showing transcripts and token telemetry
Station 01 — Console. Real install, real transcripts, token cost straight from Claude Code's own cost-state record.

Chapter 06 — Stations 03, 04, 05

Skills, plugins, MCP servers.
Toggle them from a browser.

Skills page listing skill folders with enable and disable toggles
Station 03 — Skills. Disabling moves the folder to skills-off.
MCP servers page showing global and per-project servers
Station 05 — MCP servers, global and per project scope.

MISSION COMPLETE · DEPLOY THE CONSOLE

Take command of
your own install.

Free, MIT licensed, runs entirely on your machine. Bring your own Claude Code — it reads the files you already have.

MITNode 18+Windows · macOS · Linux869 MB of transcripts, read in place