Some fifteen projects and notes always out of date
I run around fifteen projects in parallel, across my technical work, my work-study placement, my applications and my learning. Their status lived in notes kept by hand, and those notes were out of date as soon as a work session ended somewhere else. The routines meant to keep everything consistent, such as the weekly review, revising what I learn or handing a session over to the next one, depended on my discipline and were the first to go when the workload grew.
My goal was twofold: keep these routines running without manual input by handing them to agents, and get a view of the real state of my work computed from what is on disk.
Three sources of truth on a 3D planet
The last piece is a 3D control interface, a planet on which each active project is a building. It layers three sources of truth that move at different paces. The project table in the vault defines which buildings exist, file activity and git history drive their size and state, and the event log makes the running Claude Code sessions appear in real time as workers busy on the project concerned.
An active project shows up as a lit, animated building, and a neglected one as a dark building. Only one map has to be maintained by hand: it links each project to the folders it occupies on disk, and only changes when a project is created.
three.js with no build step served by FastAPI
The planet is rendered in vanilla three.js, as ES modules with no build step, served by a FastAPI backend that reads the disk and pushes events over WebSocket. A page opened from disk could neither read files live nor receive events. An ecosystem like react-three-fiber would have provided a ready-made camera and shadows, at the cost of bringing React and a build chain into a frontend that had neither.
Geometry and materials are generated in code. A free asset pack would have produced a presentable scene faster, and the choice to build the scene shifts all of the visual quality onto the work on lighting and materials. Sessions working outside any known project are placed on a central square instead of being attached to a building by default.
Sessions invisible until their first tool call
The event log ran on real sessions from the first version, and actual use revealed two constraints. Sessions already open when the hook configuration is read never emit their start event and only appear at their first tool call, which led me to create a worker as soon as an unknown session ID shows up. Most commands also start with a directory change or a prefix such as sudo or npx, and extracting the real command name had to learn to skip them.
Every ritual in one command with building interiors next
Each routine now runs in a single command without manual input, and the knowledge graph holds 211 notes. On the planet, the event log and the globe rendering work, and the next step is the interior of the buildings, which should show a project's activity through what is happening inside.
