How krishddd/floodops-multi-agent-system works
FloodOps is a flood monitoring, forecasting, and response platform: users choose an area, the backend gathers hazard data and advances a multi-agent response workflow, and a live map and panels display forecasts, risks, alerts, and phase changes. The backend’s seven-phase orchestrator coordinates specialist agents and connectors; ensemble, hydrology, and LLM reasoning support forecasts and decisions. The frontend also presents map layers, timeline playback, and compound threats. Some source excerpts are partial, so links between components are shown only where the README or sampled code supports them.
Main entry points: main.js App Bootstrap · app.py FastAPI App · state.py Flood State · service.py Phase Orchestrator
Components 25
User Interface
- App Bootstrap
frontend/src/main.js - Area Search
frontend/src/panels/area-search.js - Live Map
frontend/src/map/init.js - Response Panels
frontend/src/panels - Ensemble Views
frontend/src/ensemble - Timeline Playback
frontend/src/timeline
API Access
- FastAPI App
backend/floodops/api/app.py - Flood Routes
backend/floodops/api/routes_flood.py - Map Routes
backend/floodops/api/routes_map.py - Ensemble Routes
backend/floodops/api/routes_ensemble.py - Timeline Routes
backend/floodops/api/routes_timeline.py - Hazard Routes
backend/floodops/api/routes_v4.py - WebSocket
backend/floodops/api/websocket.py
Response Workflow
- Phase Orchestrator
backend/floodops/orchestrator/service.py - Phase Routing
backend/floodops/orchestrator/routing.py - Specialist Agents
backend/floodops/agents - Event Bus
backend/floodops/queue/event_bus.py - Flood State
backend/floodops/models/state.py
Data and Reasoning
- Data Connectors
backend/floodops/connectors - Hydrology Analysis
backend/floodops/hydrology - LLM Reasoning
backend/floodops/llm/client.py
External Services
- Hazard Data Sources
- LLM Providers
- Open-Meteo Geocoder
Other components
- Operator
Connections 32
- Operator → App Bootstrap: uses
- Operator → Area Search: searches area
- Area Search → Open-Meteo Geocoder: geocodes place
- Area Search → FastAPI App: requests simulation
- App Bootstrap → Live Map: initializes
- App Bootstrap → Response Panels: updates
- App Bootstrap → Ensemble Views: renders
- App Bootstrap → Timeline Playback: plays frames
- App Bootstrap → FastAPI App: requests data
- App Bootstrap → WebSocket: receives updates
- FastAPI App → Flood Routes: routes requests
- FastAPI App → Map Routes: routes requests
- FastAPI App → Ensemble Routes: routes requests
- FastAPI App → Timeline Routes: routes requests
- FastAPI App → Hazard Routes: routes requests
- Flood Routes → Phase Orchestrator: triggers workflow
- Flood Routes → Flood State: reads state
- Map Routes → Flood State: reads risk state
- Ensemble Routes → Flood State: reads forecasts
- Timeline Routes → Flood State: reads transitions
- Hazard Routes → Data Connectors: queries sources
- Phase Orchestrator → Phase Routing: selects phase
- Phase Orchestrator → Specialist Agents: coordinates agents
- Phase Orchestrator → Flood State: updates state
- Phase Orchestrator → Event Bus: subscribes events
- Specialist Agents → Event Bus: publish events
- Specialist Agents → Data Connectors: fetch inputs
- Specialist Agents → Hydrology Analysis: uses analysis
- Specialist Agents → LLM Reasoning: requests reasoning
- Data Connectors → Hazard Data Sources: fetches observations
- LLM Reasoning → LLM Providers: generates responses
- WebSocket → Flood State: streams state