Trevor PaughSystems engineer
Trevor PaughProject Chronicles

Chronicles / Claudeboard

Active · Oct 2026 to present

Claudeboard

A live, animated map of every Claude session on the owner's machine, built for the love of seeing it work.

9 entries Stack Node · TypeScript · SQLite · WebSocket View on timeline

Claudeboard is a dashboard that draws every Claude Code session on the owner's machine, local, cloud, persistent peers, and subagents, as a live force graph with the messages, spawns, and tool calls flowing between them. There was no pain to fix. The owner saw someone else's live session graph and wanted one of their own, and the plan written on 13 October says so in their words: it is being designed for the love of seeing it work. It still has four questions to answer at a glance: which session is waiting on the owner, who is talking to whom, how fast the usage windows are filling, and what happened while they were away.

Everything it reads is already on the machine, in the desktop app's session store, the command-line tool's process files, and the transcripts, so version one is a local page served from the box, with a narrow layout for the phone. One rule from day one: content never leaves the machine. Anything that reaches another device is metadata only.

Slice one was built as two halves on 14 October and ran against the real machine the same night: every session drawn, every live one matching the app's own sidebar, without any session reporting itself. The remaining five slices took one more day: flows on the edges, the chrome to spec, an observer session, three layouts, a tray icon, and a phone layout. Version one was code-complete on 15 October. The same day, under an order to keep going without the owner, replay of any past day, a searchable history of sessions, and a retention setting were merged, and the 1.0.0 release was prepared with a changelog, an install guide, and a release workflow. The release tag waits for the owner. On the night of 18 to 19 October, still without the owner, ten more pull requests landed: the board now draws which manager directs which sessions, labels never overlap, and every file source tells a locked file from a broken one.

Latest developments

Design

Labels that never overlap

Two polish slices for the board itself. Node labels now try eight positions around their node and, when none is free, the least important label in the crowd hides until hovered; the selected node and any 'waiting on you' line always stay readable, and auto-fit never zooms out so far that those lines disappear. The header keeps to one row at any width from 820 pixels, dropping whole parts of its status line in a fixed order rather than wrapping over the board.

Progress

Ten pull requests before dawn

Between half past one and seven in the morning the manager merged ten pull requests without the owner, each one built by one agent, reviewed by another, and fixed before merging. The owner's new house rules went into every brief: tests named in the same change, a simplify pass and a code review before each request, a security review on anything touching files or the network, and the app checked by eye. Most of the night went into making every file source tell a locked file from a broken one.

Design

Who manages whom

The board can now see the management layer. A new collector source reads each project's team roster and manager handoff, keeping only table rows and ids, and the board draws a dashed edge from a manager session to every session it has dispatched. Selecting a manager shows what it has in flight, its peers, and how many things wait on the owner. The first review found the source could wander into folders it is forbidden to read; the fix guards every path by where it really leads.

Decision

Archived stays hidden

The first real session store had around a hundred archived sessions, and they buried the dozen live ones. The owner's call: archived sessions are hidden by default, with the filter starting on and a stored preference able to override it, and counters count only what is visible. In the same review, alerts were moved out of the collector: it emits only two kinds, and the board derives the rest locally from what it already knows.

Milestone

One point oh

With the roadmap complete, the manager ran the 1.0 release and a parked debt pass side by side. Every package carries version 1.0.0, a changelog covers the first thirteen pull requests, an install guide walks a fresh Windows machine through to a phone on the owner's private network, and a release workflow builds and tests on Windows and publishes a collector zip and the tray executable from a tag. The code is on main; the tag itself waits for the owner, because the hosted build service had stopped starting jobs for the account and the release would have been refused too.

Milestone

Replay, history, and forgetting

Three slices past version one, all on 15 October under the owner's standing order. Replay scrubs through any past day: the collector records the graph it serves as frames, because the event log alone cannot rebuild it, and the board plays them back at up to three hundred times speed with the live feed held aside. History is a searchable table of every session the machine has seen, metadata only, with a detail panel that links to replaying its day. And a retention setting lets the owner forget old frames, with pruned days still replayable from the log and marked fainter on the calendar.

Milestone

Version one, code-complete in two days

Every slice of the plan is merged: transcript tailing with subagents orbiting their parents and animated flows on the edges, the dashboard chrome built to the approved mockups, an observer session for cloud sessions and usage windows, Lanes and Orbit layouts beside Islands, a setup screen, a tray icon that starts at login, and a phone layout over the owner's private network. Code-complete on 15 October, forty-odd hours after the plan was approved; the owner has walked the first four acceptance steps, and replay is already under way as version one point one.

Milestone

First light

The board ran against real data for the first time tonight. Both halves of slice one were merged, an integration pass joined them under one contract, and the hook feed was installed into the owner's settings. The canvas then drew every session on the machine, well over a hundred with about a third of them live, and every live one matched the app's own sidebar, with edges for who started whom, who handed off to whom, and who is talking to whom, and live working and waiting states. No session had to report itself. The labels overlap in the dense centre; that is a later slice.

Progress

Two halves of slice one

Slice one is built as two parallel pieces, each reviewed, fixed, and verified: a collector that reads the desktop app's session store and the command-line tool's process files into a local index and serves the graph over a live connection, and the board page that draws it. Against the real machine the collector already resolves every live session the app's sidebar shows. Both wait on the owner to merge. One review decision is recorded: anything that leaves the machine is metadata only, so status text is stripped for any client that is not local.

The story, from the beginning

Two halves of slice one

Slice one is built as two parallel pieces, each reviewed, fixed, and verified: a collector that reads the desktop app's session store and the command-line tool's process files into a local index and serves the graph over a live connection, and the board page that draws it. Against the real machine the collector already resolves every live session the app's sidebar shows. Both wait on the owner to merge. One review decision is recorded: anything that leaves the machine is metadata only, so status text is stripped for any client that is not local.

Read the entry
It's being designed for the love of seeing it work.

First light

The board ran against real data for the first time tonight. Both halves of slice one were merged, an integration pass joined them under one contract, and the hook feed was installed into the owner's settings. The canvas then drew every session on the machine, well over a hundred with about a third of them live, and every live one matched the app's own sidebar, with edges for who started whom, who handed off to whom, and who is talking to whom, and live working and waiting states. No session had to report itself. The labels overlap in the dense centre; that is a later slice.

Read the entry
I don't want individual sessions to need to report for this to work.
The first live board, blurred for publication: the labels name every session on the owner's machine. The owner is the ring at the left; the clusters are projects, and the bright nodes are sessions working or waiting.
The first live board, blurred for publication: the labels name every session on the owner's machine. The owner is the ring at the left; the clusters are projects, and the bright nodes are sessions working or waiting.

Version one, code-complete in two days

Every slice of the plan is merged: transcript tailing with subagents orbiting their parents and animated flows on the edges, the dashboard chrome built to the approved mockups, an observer session for cloud sessions and usage windows, Lanes and Orbit layouts beside Islands, a setup screen, a tray icon that starts at login, and a phone layout over the owner's private network. Code-complete on 15 October, forty-odd hours after the plan was approved; the owner has walked the first four acceptance steps, and replay is already under way as version one point one.

Read the entry
Make as much progress as you possibly can without any more input from me.

Replay, history, and forgetting

Three slices past version one, all on 15 October under the owner's standing order. Replay scrubs through any past day: the collector records the graph it serves as frames, because the event log alone cannot rebuild it, and the board plays them back at up to three hundred times speed with the live feed held aside. History is a searchable table of every session the machine has seen, metadata only, with a detail panel that links to replaying its day. And a retention setting lets the owner forget old frames, with pruned days still replayable from the log and marked fainter on the calendar.

Read the entry
Make as much progress as you can without me.

One point oh

With the roadmap complete, the manager ran the 1.0 release and a parked debt pass side by side. Every package carries version 1.0.0, a changelog covers the first thirteen pull requests, an install guide walks a fresh Windows machine through to a phone on the owner's private network, and a release workflow builds and tests on Windows and publishes a collector zip and the tray executable from a tag. The code is on main; the tag itself waits for the owner, because the hosted build service had stopped starting jobs for the account and the release would have been refused too.

Read the entry
Make as much progress as you can without me.

Archived stays hidden

The first real session store had around a hundred archived sessions, and they buried the dozen live ones. The owner's call: archived sessions are hidden by default, with the filter starting on and a stored preference able to override it, and counters count only what is visible. In the same review, alerts were moved out of the collector: it emits only two kinds, and the board derives the rest locally from what it already knows.

Read the entry
Archived sessions should be hidden by default in the dashboard.

Who manages whom

The board can now see the management layer. A new collector source reads each project's team roster and manager handoff, keeping only table rows and ids, and the board draws a dashed edge from a manager session to every session it has dispatched. Selecting a manager shows what it has in flight, its peers, and how many things wait on the owner. The first review found the source could wander into folders it is forbidden to read; the fix guards every path by where it really leads.

Read the entry
Work for as long as you can without my input.

Ten pull requests before dawn

Between half past one and seven in the morning the manager merged ten pull requests without the owner, each one built by one agent, reviewed by another, and fixed before merging. The owner's new house rules went into every brief: tests named in the same change, a simplify pass and a code review before each request, a security review on anything touching files or the network, and the app checked by eye. Most of the night went into making every file source tell a locked file from a broken one.

Read the entry

Labels that never overlap

Two polish slices for the board itself. Node labels now try eight positions around their node and, when none is free, the least important label in the crowd hides until hovered; the selected node and any 'waiting on you' line always stay readable, and auto-fit never zooms out so far that those lines disappear. The header keeps to one row at any width from 820 pixels, dropping whole parts of its status line in a fixed order rather than wrapping over the board.

Read the entry