Rutter written sailing directions
Editor's cut · Build recap

How Command Center got built

Command Center is a local session index and CLI that greps every AI-coding transcript you already wrote to disk. This recap rebuilds the arc from restored early sessions: native Claude support, deep search, the SQLite index, and the CLI that ties it together.

commandcenter.run

Before the agent came aboard

Before it became a session index, Command Center experimented as an agent launcher with its own on-disk stream. That path is retired (the code lives in <code>attic/</code>). The product that survived starts when it stopped inventing a second store and started reading Claude Code where Claude already writes.

19
Sessions
122
Headings
22
Landmarks
1.9M
Tokens out
Opus 4.6
Model
The chart · the passage plotted

The route, plotted

Hover any marker to read the direction that set it. From native session browse to multi-provider CLI search.

48°24′N 004°29′W ◃ prior voyage
Departure / made port Heading (a direction given) Landmark (evidence handed over) A tack (course correction)
Day one · Mar 6–7 · Session fa839e74

Read the disk, stop inventing a second log

19 sessions restored · 122 headings · 1,397 agent tools · ~1.9M tokens out

The early restored sessions open with a research question, not a greenfield app ask. Something already listed past Claude runs (claude-run). Command Center should do the same natively, inside the local app.

Heading 1 · 23:55

Can you figure out how https://github.com/kamranahmedse/claude-run manages to display previously run Claude sessions? Is there any way I can similarly show previously run sessions that were started with Claude in Command Center? Can you plan out adding native support for Claude sessions to Command Center?

Resume wiring stumbled: stop endpoints, empty chat panes, dual streams. The useful tack was architectural. Two ways of writing sessions to disk is too many. Read Claude's files.

Tack · 00:25
◂ a tack

It seems like we have Command Center's way of streaming sessions to disk and Claude Code's way that it natively streams conversations to disk. This seems overly complicated. Can't we just read everything directly from where Claude Code spits out the text? Seems like we should be able to simplify things greatly.

That simplify is the product thesis. Index what agents already produce. Do not become another chat runtime. Deep search followed the next morning: titles alone were not enough; search the full conversation body across hundreds of sessions.

Heading · 09:22

Can we add a deep search to /sessions? Currently it only seems to search the titles. I'd like to be able to search all of the conversations.

A resume copy button (same spirit as npx claude-run) made the loop close: find a session, copy a shell resume, keep working. Dashboard and session views merged because the point was always review-and-resume, not project bureaucracy.

Three weeks later deep search hurt. The fix arrived inside the question: SQLite with an index. Then the first CLI question of the restored arc: can you build the index from the shell?

Heading · Mar 28 · 01:12

The deep search is too slow. How can we make that faster? Maybe SQLite database with an index? Can you help plan out performance improvements for the deep search?

Heading · Mar 28 · 01:32

Is there a CLI to build the index?

That is the seed of command-center reindex. Mid-April the CLI grew into the real power surface: expose deep search to any workflow, not only the browser.

Heading · Apr 16 · 12:00

Does the Command Center have a CLI? The big power feature is its deep search. I'd like to expose that to a CLI so I can use that in various workflows. Can you plan that out for me?

Smoke test was immediate ("Try searching for security-audit.html"), then a CLI guide. Multi-provider support (T3, then Kimi and later Grok, Amp, and friends) plugged into the same index shape. Jul 10 opened the repo under MIT, added the landing at commandcenter.run, and taught the CLI to version and self-update.

Landmarks from the mature index UI Editor-recovered from Jul 10 screenshots (images stay local)
1 · 15:13

GitHub-style heatmap cell hover: session count plus token in/out for a single day, proving the index held more than titles.

2 · 17:13

Full dashboard with deep-search bar, provider chips, year heatmap, and a dense session list. 1,525 indexed · 77.4 MB in the chrome.

3 · 17:33

Projects dropdown overcrowded with public/ leaf names. Direction: autocomplete plus more of the full path so "public" stops colliding.

The wake · Feb 28 → Jul 10

What came next

Restored sessions stretch the span from early agent experiments through the multi-provider CLI and the public landing.

Feb 28

Agent-launcher experiments Stop/resume agents, email-triage hooks. Useful scaffolding, later retired as product scope.

Mar 6–7

Native Claude sessions + deep search claude-run research. Read Claude's disk. Full-conversation search. Resume copy button.

Mar 13–14

Dashboard is the product Merge sessions into the main view. Review and resume only. Drop unused project chrome.

Mar 28–29

SQLite index + reindex CLI Deep search too slow; FTS plan lands. "Is there a CLI to build the index?" Search results start to persist.

Apr 16–25

Search CLI and more providers Deep search exposed as CLI. Guide written. T3, reindex repair, drop artificial caps, Kimi.

Jul 9–10

Open source and landing Grok/Amp providers. MIT on GitHub. commandcenter.run. CLI version/update. Heatmap polish.

Reading the direction

What to borrow

Prefer the store that already exists

The Mar 7 tack ("read where Claude spits out the text") deleted half the architecture. Index foreign transcripts; do not re-stream them into your own format.

Ship the power feature to the shell early

Index build got a CLI the day SQLite landed. Deep search got a CLI three weeks later. Agents and humans both needed the same query path outside the browser.

Bring the fix in the question

"Too slow, maybe SQLite?" and "expose deep search as a CLI" are directions, not bug reports. The agent implements the hypothesis you already trust.

One index, many providers

T3, Kimi, Grok, Amp, and friends plugged into the same FTS shape. Design the contract once; add sources as adapters.

Sailing directions

If you built this again

Opening prompt
Build a local session index for AI coding tools. Do not invent a second transcript format. Read Claude Code (and later other providers) from the paths where those tools already write JSONL/session files. Product: - Local web UI: search full conversation content (not only titles), filter by provider/project, open a session, copy a shell resume command. - SQLite FTS5 index for deep search performance, with a CLI to reindex and to run the same search from the shell. - Multi-provider adapter shape from day one even if Claude is first. - No agent launching in v1 (browse/search/resume only). Stack: PHP app is fine for local; ship a single `command-center` CLI binary or script for search/reindex/status. MIT, runs on the developer's machine (recommend Cove for the web surface).

Front-loads the disk-read thesis, deep search, SQLite+CLI, multi-provider shape, and anti-scope (no agent runtime).

CLI surface
Expose the power path on the CLI before polishing chrome: command-center reindex command-center search "query" [-p project] [-n N] [--json] command-center sessions [-p project] command-center status command-center version / update Same ranking and project filters as the UI. Write a short CLI guide with real examples from the user's history.

The Mar 28 + Apr 16 lessons: index ops and deep search both belong in the shell.

Scope and house rules
If an earlier agent-launcher experiment exists, park it in attic/. Keep Command Center a session index only. No Co-Authored-By trailers. No em-dashes in product copy. Local-only assumptions (drop artificial result caps that only made sense for a hosted multi-tenant app).

Codifies the retired launcher path and the local-tool judgment calls from the later sessions.

This recap is a refreshed editor pass after early Command Center sessions were restored into the local index. A deterministic extract (command-center flow command-center.localhost --editor) supplied identity, manifest, spine, and landmarks; the narrative was rewritten to center the Mar 6–28 origin (native Claude read, deep search, index CLI) that the prior six-session cut had skipped.

Session logs and screenshots stay on the author's machine. Only the curated recap is published. Prior published span was Mar 28–Apr 25 (6 sessions); restored history stretches Feb 28–Jul 10 (19 sessions).

← Back to the Harbor