Project 01 / 04 · AI agents · Next.js · Supabase
HQ, an AI virtual office
An animated office building where AI agents work as my team, with a CEO dashboard, approvals and a runner on my own PC.
- AI agents
- Claude Code
- Next.js 16
- Supabase
- Approvals

(01) Why I built it
Why I built it
I run an agency next to a full-time architecture role, and the work was spread across chats, folders and my own memory. I wanted a team that could plan and do real work while I was busy, without ever acting on anything risky behind my back. So I built them an office.
(02) How it works
How it works
- 01
A building you can walk into
The office is a side-view tower. Visitors meet Robin at reception in the lobby. Staff take a PIN-locked lift up to the floors: a penthouse with my office and Alfred, the chief of staff; a workshop for Lucius (development) and Vicki (video); and a team floor for sales, social, SEO, copy and finance.
- 02
Chat that turns into plans
Each agent has a WhatsApp-style chat. Agents never start work from a chat message. They reply with a plan, the plan becomes an approval card in my dashboard, and nothing runs until I approve it.
- 03
A runner on my PC does the work
A small runner process sends a heartbeat every 15 seconds, so the building shows Open or Closed. Chat replies go through Claude Code with read-only tools. Approved plans run with edit tools inside that agent's own folder.
- 04
Guardrails by design
Deleting, pushing, deploying, sending and spending are always denied to the agents and turned into approval requests instead. The runner also handles hand-offs between agents, recovers unanswered messages after a crash, and pauses itself when it hits a usage limit.
- 05
A CEO office with the numbers
My office holds the KPIs, revenue, approvals, inbox, invoices and leads. The PIN is hashed with scrypt, sessions are signed cookies, failed attempts lock out, and the database rejects every request that doesn't come from the server.
Stack · Next.js 16 · React 19 · Tailwind 4 · Supabase (Postgres + RLS) · Claude Code · Node runner
(03) Screens
Screens


What it taught me
What it taught me
Agents are only as useful as the boundaries around them. The plan, approve, run loop is what made me trust them with real work, and it came from the same habit I use with human teams: agree what done looks like before anyone starts.
Next project
Alfred, a voice AI agent