Rayane Hassani Explore the gameThe game
FR EN
Projects

Agentic HQ

15 toolscustom agents running my work rituals, wired to a graph of 211 notes

The planet shows live Claude Code sessions in real time, computed from the disk, git and the hooks log.

RitualsObservationUserAutomated01Ritualstarted with a singlecommand02Claude Code skillsreview, revision, watch,handoff, decisions03Obsidian vaultdashboard, 211-notegraph, logbook, inbox04Hooksone event pertool call05Event logJSONL, metadataonly06Planeta building per project,live via FastAPI andWebSocket
The control planet, where each active project is a building.

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.

An Obsidian vault as the agents' shared memory

The foundation is an Obsidian vault that serves as shared memory for the whole system. It holds a project dashboard, a knowledge graph of 211 linked atomic notes, a logbook where each routine keeps its history, and a capture inbox. On top of it, each routine has become a Claude Code skill, a tool invoked with a single command that reads and writes in the vault according to rules written once and for all.

These tools cover the weekly review, which flags deadlines, stalled projects and vault hygiene, a condensed tech watch, the handover from one session to the next, a decision log with falsifiable predictions that compares what I expected with what actually happened, and the conversion of any document into atomic notes in the graph. Spaced repetition over the knowledge graph uses the Leitner system and the J-method, which I practised during my time at medical school and wanted to bring back to revise what I now learn in computer science.

Claude Code hooks complete the setup. When a session starts, one of them displays the state of the routines, and another feeds an event log on every tool call. This log only keeps metadata, never the content of a file or the arguments of a command, and it is written so that it can never make the tool it observes fail.

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.