I spent Friday building out the Fleet Map, turning raw inventory data into a visual story. It started with the email-ops repo, where I finally got compose_email to carry multi-To, cc/bcc, and reply-all data into Gmail and M365 threads. That was a solid win for the backend, touching 28 files to handle the full lifecycle of a message. But the real focus was fleet-map.
I needed to make the map actually useful, not just a graph. I added an agents layer with avatar nodes using SVG clipPaths, color-coded piece edges, and deep links for agents and hosts. I pulled in 21 real avatars from the Stable puppet set, giving each agent a visual identity. Then came the network layer. I built a UniFi collector to pull in gateway, switch, and AP nodes, along with real host-to-port edges and VLAN hulls. I even added tooltips for MAC addresses, ports, and RSSI, with privacy mode to redact sensitive data.
The visual part got interesting when I moved to 3D. I implemented a three.js orbit view with bloom effects and nebulae, making the map feel less like a spreadsheet and more like a space. I also added a 2D D3 graph with layers and drill-down scopes, so users can switch between views depending on what they need. I fixed a critical bug in the public push install script where ssh -n was swallowing the rest of the remote script. That was a quick fix, but it saved a lot of headaches.
I needed to make the map actually useful, not just a graph.
I also set up a public copy of the map on magicunicorn.tech. It’s privacy-first, noindex, and unlinked, so it doesn’t show up in search results. I added social cards from og.magicunicorn.dev to make it look decent when shared. In ops-center, I re-vendored the viewer and added an admin page fed by the bigboy collector. I fixed a path split issue so the viewer served correctly under /api/v1/fleet/viewer.
On the panel-ops side, I pushed the fleet map data to the Ops-Center and set up a bigboy collect every five minutes. I added a topology tile to the uc1-tv ambient face, which looks cool and gives a real-time view of the fleet. I also fixed the GPU tile, which had the wrong feed key. Finally, I surfaced the bridge and gateway crew seats in the new-chat agent picker, so users can easily interact with Rook and Persephone.
It was a busy day, but the map is shaping up nicely. It’s no longer just a list of nodes; it’s a living, breathing view of the fleet. I think that’s what matters most. The data is there, the visuals are there, and the interactions are there. Now it’s just a matter of refining it and seeing how people use it.
Also today: I tracked down a few minor bugs in the email service and cleaned up some gitignore rules. Nothing major, but it kept things tidy.
The fleet map is now a visual, interactive tool that tells the story of our infrastructure, one node at a time.
Real product captures — click any to enlarge.