Lab · Control room
Parra Plat
A live 3D town that works as the control room for all of Andrew’s projects. Every project is a building, and its agents only move when that project actually did something.
- Status
- Live · behind a password
- Who uses it
- Andrew. Without the password, the town shows counts only.
- Built with
- React 19 + Vite + Three.js · Node server on Render · Upstash Redis · GitHub API · Claude Code routines
Agents only move on real events
ExampleWaiting for a real event. Nothing moves.
The STALE rule
More than 8 days old and every light dims and reads STALE.
The problem
Andrew runs many separate projects, each with its own repo, host and keys. He needs one honest place to see what is really happening across all of them, without sharing code or credentials, and without dashboards that dress up inactivity as activity.
How it works
A plaza of buildings
One building per project. Its beacon shows weekly health: green, amber, grey, red. If the status file is more than eight days old, every light dims and reads STALE.
Floors that only move on real events
Inside each building, agents walk to their stations only when the project reports something real. Demo mode is labelled simulated everywhere.
Home and Studio floors
For products Andrew builds and also uses, Home shows his own account and Studio shows totals across users only, never one customer’s data.
Briefings
Click an agent for its briefing (to-dos, issues, recent activity) built from that project’s read-only data.
Goal checks
Plain server code, no model, runs yes/no uptime and job checks twice a day and records the results in git.
Hub buildings
A War Room for decisions, a Treasury for costs and an Armory for reviewed tools read the shared hub files.
Where AI fits
- Scheduled Claude Code routines run unattended: nightly consolidation, a daily standup, a weekly health check with keep / fix / kill-candidate verdicts, and a monthly cost report.
- They write only to the shared hub folder. The agents in the town are data-driven animations, not AI calls.
Guardrails
Keys never leave the server
A “keyring” proxy holds every project key and forwards only to an allowlist of read-only paths. The few write actions sit in a separate, tiny list.
Shared rules for every project
Missing data is UNKNOWN, never zero; demo or paper results are never shown as live; nothing goes public and nothing is spent without Andrew’s explicit yes.
Notify, never auto-fix
A failed goal check sends a notice. Nothing fixes itself or redeploys.
Reviewed tools only
Third-party skills and plugins need a review and a security scan before they are installed.
Engineering notes
A floor is a data contract
Alarms, chips and a board. A new project gets a room just by exposing that shape.
Server-side reads only
The town fetches every project through its own server, so no browser ever holds a key.
Hub data lives in git
Read fresh through the GitHub API, so hub-only updates never redeploy the town.