
Inspiration
Elevators fail. Pipes burst. And when they do, a building treats everyone the same: one alarm, one stairwell, one announcement.
But the resident on the fourth floor who can't use the stairs is not in the same situation as the one who can. The plan that works for most people is the one that leaves someone behind.
We started with a design board. One system, two modes: a calm daily mode for maintenance and building health, and an emergency mode that goes detect, analyze, plan, human approval, inform everyone. One job per screen, plain language, calm by default, loud only when it matters.

What it does
HAVEN keeps one live state of the building and turns every signal into a clear next step for each person who needs one.
A water probe goes wet. HAVEN works out that Riser R-3 feeds Elevator E1, so the step-free route is gone. Seventeen agents talk it through. Each resident has an agent of their own that shares only what a plan needs. Guardian drafts one plan per person, and an admin reviews it. Only then does anything happen: residents hear their instruction aloud, RAs, Maintenance and Security get their part, and the physical model on the table responds.

Five roles, one building, one source of truth:

- Admin sees the whole building, reads the system impact chain, and approves the plan.
- Residents get plain-language guidance, spoken aloud if they can't look at the screen, with I need help one tap away.
- RAs see who needs a check-in and what is still open.
- Maintenance gets the affected asset and a short checklist.
- Campus Security gets one location and one coordinated response.
The same platform runs three properties with isolated state: Haven Hall (with the real Blackwell Hall model), the Palace of Fine Arts, and Salesforce Park.

The Palace of Fine Arts, inside and out
We rebuilt the Cal Hacks venue itself as a live digital twin. Every piece of it is written in code with React Three Fiber, working from reference photos: no imported model. Outside, there's the rotunda with its eight piers and relief drum, the curving colonnades, the lagoon reflecting the dome, and the exhibition hall's long seamed roof.

Inside, the front wall is cut away so you can see the whole hall: exposed trusses, the stage, catering, breakout rooms, the mezzanine and every numbered hacking table. You can orbit it, isolate a floor, or jump straight to a zone. It runs on the same live state as everything else, so a leak on the catering manifold appears as a beacon at that exact spot, and once an admin approves the plan, the step-free route lights up on the floor. The full interior is about 157,000 triangles drawn in 19 calls, rendered only when something changes.

How we built it
One live state, every screen and device. A FastAPI engine owns the world state: a dependency graph, eleven sensor types, route exclusions, and a severity level from 0 to 4 set by rules, never by a language model. Convex carries it to every dashboard and to the hardware in real time. The Next.js dashboards run on Vercel with Clerk sign-in.

Seventeen agents on Fetch.ai. Sentinel notices a change. Analyst explains it. Guardian asks every resident agent what its person needs and builds a plan for each. Operator proposes building actions, Dispatcher briefs the teams, Recovery keeps the timeline, and Coordinator is the public front door. All seventeen are live on Agentverse with their own handles and READMEs, and anyone can ask the Coordinator questions through ASI:One over the Chat Protocol.

Plans that fit people. A resident agent shares only functional needs, like step-free access, guidance, low strain or willingness to help. Never a name, a room or a diagnosis. Guardian turns those into a plan per person, requests responders for anyone who needs one, and only asks a neighbour to walk with someone after that neighbour's own agent agrees.

Claude, kept on a short leash. Claude words the Coordinator's answers from public-safe facts and reads incoming resident requests for Dispatcher. It can raise a request's priority but never lower one the rules marked urgent, and when it is unavailable, HAVEN falls back to its own rule-based answers.
Cartesia gives HAVEN a voice. Residents who can't read the screen hear their own instruction and can ask questions out loud, and approved calls ring the right team. Voice only ever speaks state an admin has already approved.
A building you can hold in your hands. An ESP32 model of the building senses a leak, a maintenance badge tap and a call button, and shows the outcome: E1 turns red, a buzzer sounds, the valve closes, route LEDs light the way to the refuge. It talks to Convex directly over Wi-Fi, with no laptop in the loop.

Guardrails: advice from agents, action from people
This was the design constraint we cared about most. Agents read, reason and propose. They never call a write endpoint, so they cannot approve a plan, dispatch anyone, operate equipment or check a resident in. Every plan and building action stays a proposal until a person approves it.

Challenges we ran into
- Making safety structural, not a promise. We wanted "agents only advise" to be a property of the code. Agents only read building state, never call a write route, and internal messages are team-only, which a test checks for every handler.
- Privacy inside a multi-agent system. Residents' needs must reach Guardian without leaking to the public chat, so each resident agent shares functional needs only, and the Coordinator only ever sees aggregates.
- Never overclaiming. Recovery will not say "everyone is safe" while anyone is unconfirmed, and elevators are never routed in a fire, even if one reports as available.
- Hardware reality. The RFID reader browned out through long power rails, a pin floated on our board, and Wi-Fi had to be coaxed to reconnect and replay state. The board now talks to Convex directly.
- A real 3D building that doesn't lag. The original Blackwell Hall export was 26 MB and over 700,000 triangles. We rebuilt it to about 3 MB and 160,000 triangles, rendered only on demand.
Accomplishments that we're proud of
- A full loop that actually closes: a real sensor, a live twin, seventeen agents, a human approval, spoken guidance and a physical response.
- All seventeen agents registered on Agentverse, with a public ASI:One session that answers questions about a live incident.
- Over 280 automated tests across the browser, backend and agents, including accessibility checks on the dashboards.
- One platform serving three buildings without a second app.
What we learned
The hard part of an emergency system isn't generating a plan. It's deciding what the system is not allowed to do. Putting the human gate in the architecture, instead of in a disclaimer, changed every other decision we made.
What's next for HAVEN
- Durable engine state, so a restart doesn't reset the world.
- More residents and a second stairwell in the building model, so plans differ by route as well as by assistance.
- Letting an admin approve the agents' personalized plans from the dashboard, not just the building-level plan.
- Real building integrations behind the same ingestion pipeline.
HAVEN is a hackathon demo. Sensors can be simulated, emergency calls go to a demo phone, severity thresholds are fictional, and it is not a certified life-safety system.

Built With
- agentverse
- anthropic
- arduino
- asi-one
- cartesia
- claude
- claude-code
- clerk
- convex
- esp32
- fastapi
- fetch.ai
- micropython
- next.js
- playwright
- python
- react
- react-three-fiber
- three.js
- typescript
- vercel
- web-push
- websockets


Log in or sign up for Devpost to join the conversation.