Inspiration
I served in the Navy. One of my roles was damage control: keeping the ship alive when fire and flooding hit at the same time.
Let me tell you what that actually feels like.
You are in a steel passageway.
The lights are strobing.
Smoke is filling the space faster than you can breathe through it, water is rising past your boots, and a general alarm is screaming so loud you cannot hear the person next to you.
Somewhere on that ship is a sailor's son, a sister, somebody's whole world, and the only thing standing between them and the sea is whether the people on the bridge can understand what is happening fast enough to act.
And here is the brutal truth I lived: the enemy was never a lack of information. It was the flood of it. Bilge alarms, thermal sensors, smoke detectors, and frantic radio reports all screaming at once, while we tracked the fight for a billion-dollar warship and the lives aboard it on a grease pencil and a plexiglass board.
One shared board. One fragile source of truth. Every update erased the last one. On a calm day with a clean log, roughly 1% of hand-entered data is wrong. Now add smoke, heat, and adrenaline. The studies are blunt about where this leads:
$$P(\text{accident} \mid \text{human error}) \approx 0.75\text{ to }0.96 \quad \text{(Allianz AGCS Safety & Shipping Review)}$$
Three out of four marine disasters trace back not to broken steel, but to a human being who was handed too much noise and too little time.
I left the Navy. I never left that feeling. CrisisRoom is the second brain I wish we'd had on the deck.
What it does
CrisisRoom turns crisis chaos into one clear, verified plan by running a live incident through a swarm of specialist AI agents that think together, the way a trained damage-control team does:
- Hazard Intelligence: ranks flood, fire, and smoke severity and localizes each threat to a specific compartment.
- Damage Control: assesses watertight integrity, bilge pumping capacity, fire suppression readiness, and structural risk, then recommends containment actions.
- Response Coordination: turns confirmed hazards and containment status into prioritized, sequenced response tasks with owner roles.
- Orchestrator: threads each agent's output into the next and synthesizes a single bridge brief a human can act on in seconds.
Integrations
- Fetch AI: Four collaborating uAgents (Orchestrator, Hazard, Response, Advisory) run in a Bureau with real agent-to-agent messaging, powered by ASI:One and registered on Agentverse. The agent fleet + ASI:One LLM drive the entire crisis pipeline.
- Redis: Hits all three pillars: Redis for agent long-term memory, vector search (RediSearch KNN), and context retrieval (Streams + hybrid search). Redis is the agents' brain, not a cache.
- Arize: OpenInference tracing on every LLM call plus an LLM-as-judge scoring
safety_policy/groundednessthat surfaced and let us fix unsafe outputs. Observability that measurably improved the app. (https://app.arize.com/organizations/QWNjb3VudE9yZ2FuaXphdGlvbjo0NDc0NTptcFpJ/spaces/U3BhY2U6NDcyOTg6MVJjRg==/projects/TW9kZWw6ODQ3Mjg4MDQwMzo3bU1F?traceViewId=__arize_default&timeZoneA=America%2FLos_Angeles&selectedTab=llmTracing&startA=1781420400000&endA=1782039599999&envA=tracing&timeRangeKeyA=custom&modelType=generative_llm) - Deepgram: Nova-3 STT + Aura-2 TTS as a bidirectional, hands-free crisis voice dispatcher. Voice is the core hands-free command interface, not tacked on.
- Orkes: AgentSpan durably generates the brief's
top_risksandrecommended_actionsvia two chained agent executions. Durable risk/action planning inside the live pipeline. - The Token Company: Built CRISP, a reversible, query-aware context-compression framework plus an agentic compressor, with research docs and benchmarks. Novel research cutting LLM context cost. (https://github.com/uc-berkeley-ai-hackathon-2026/crisis-room/blob/main/docs/crisp-technical-deck.html)
- Sentry: Live
sentry_sdkwith PII scrubbing and incident-tagged error capture across the FastAPI backend and Next.js frontend. Error monitoring from day one. (https://carnegie-mellon-university-d3.sentry.io/issues/?project=4511600565420032) - Anthropic: Built the whole project with Claude Code, tackling emergency response — a high-stakes "shift what's possible for people" domain. Claude Code as one of the primary development tool.
- Midjourney: 8 cinematic deck backgrounds plus the in-app vessel hazard schematic (
HazardMap.tsx, labeled "Midjourney render"). Generated imagery for both product UI and pitch. (https://github.com/uc-berkeley-ai-hackathon-2026/crisis-room/blob/main/apps/web/public/vessel-schematic.png) - Cognition (Devin): Used Devin as an AI coding agent during the build, especially via the cloud. AI-assisted coding combined with Claude Code.
How we built it
- Frontend and backend: a Next.js dashboard and a typed FastAPI service over REST and WebSocket. It runs mock-first with zero API keys, then lights up as each integration connects. A judge can clone it and watch it work in one command.
- Agents: four Fetch.ai uAgents in a single Bureau, discoverable on Agentverse and collaborating in-process, with ASI:One as the reasoning LLM behind every one of them.
- Memory: Redis as the primary store, not a cache, in three tiers: Redis Iris for long-term semantic memory, RedisVL vector search (HNSW, cosine) for the live session, and a lexical fallback. Streams carry real-time coordination events.
- Durable planning: Orkes AgentSpan runs
risk_assessorthenaction_planneras chained, durable executions, so the highest-stakes part of the brief is orchestrated and observable. - Observability and safety: every LLM call is traced to Arize, and an LLM-as-judge scores each output on
safety_policyandgroundedness, writing the verdict back onto the exact span. - CRISP: a reversible, query-aware compression framework we built and benchmarked to shrink crisis context while protecting the numbers and entities that decide whether someone lives.
Challenges we ran into
- Cross-process uAgent messaging needs the Fetch.ai Almanac network, which was unreachable for us. We solved it with an in-process Bureau that still registers on Agentverse for discoverability.
- Early prompts occasionally implied an alert "had been sent." In a real crisis, that single false sentence kills people. Our Arize safety evaluator caught it, and we drove the failure rate down until it was gone.
- Failed durable executions leaked raw error text into the brief. We fixed the parser to fail safe and fall back cleanly, because a wrong answer dressed as a confident one is the most dangerous output a crisis tool can produce.
- We made Redis, ASI:One, RediSearch, and voice all optional with deterministic fallbacks, because the moment you need this system most is the moment the network is on fire too.
Accomplishments that we're proud of
- A genuinely collaborating agent swarm, not four disconnected prompts wearing a trench coat.
- Redis used as an AI-native brain, with Streams and vector search, holding sub-20ms latency at scale.
- Safety we can actually measure, through an LLM-as-judge wired onto live traces, instead of hoping the model behaved.
- A system that runs anywhere, with zero keys, in one command, so the people who need it are never blocked by a missing credential.
- Most of all: we took the worst day of my old job and built something so the next damage controlman has a fighting chance the rest of us did not.
What we learned
- Observability is a safety feature, not an afterthought. If you cannot measure whether your AI is safe, it is not.
- Redis is an AI-native database, not just a cache.
- Human-in-the-loop is not a limitation. It is the product. Trust is the feature people are actually buying.
- Build the fallbacks first. In a real crisis, the happy path is the first thing to burn.
Built With
- agentspan
- agentverse
- anthropic
- arize
- asi-one
- claude-code
- css
- deepgram
- devin
- docker
- fastapi
- fetch.ai
- html
- javascript
- midjourney
- next.js
- openinference
- orkes
- pydantic
- python
- react
- redis
- redis-streams
- redisearch
- sentry
- tailwindcss
- typescript
- uagents
- websocket
Log in or sign up for Devpost to join the conversation.