Built by engineers for engineers. Designed to handle the unglamorous parts of hydraulic
modeling — data wrangling, format conversion, and model assembly — so you can focus on
review and QA.
⚡
Fully Automated
One command runs the entire 9-stage pipeline from coordinates to flood maps. Human-in-the-loop pauses route scientific
decisions to the engineer — never silent autonomy on regulatory choices.
python pipeline/orchestrator.py \
--lon -88.578 --lat 40.021 \
--output ./output/test
🔁
Batch Processing
Run hundreds of watersheds in parallel with batch.py. Resume on failure — skip completed runs automatically. Outputs a summary CSV for each batch run.
python batch.py \
--watersheds watersheds.csv \
--workers 8 \
--resume
🗺️
Web Dashboard + Map Viewer
FastAPI backend with React dashboard. MapLibre flood extent viewer with multi-return-period toggle — switch between 10-yr, 50-yr, and 100-yr flood layers interactively.
docker-compose up api
# With web dashboard:
docker-compose \
--profile dev up
🐳
Docker Ready
Reproducible environment with GDAL, pysheds, and all geospatial dependencies
pre-installed. Runs fully headless on Rocky Linux 8 — no Windows required for geometry preprocessing or simulation.
docker build -t ras-agent .
docker run --rm ras-agent \
python pipeline/orchestrator.py \
--lon -88.578 --lat 40.021
📄
HTML Run Reports
Self-contained HTML reports generated for every run — hydrograph plots, basin characteristics table, and flood extent preview. Suitable for attaching to FEMA memos or client deliverables.
☁️
Cloud Storage
Cloudflare R2 integration for results storage. Generates presigned download URLs for sharing COG GeoTIFFs, GeoPackages, and HTML reports without exposing storage credentials.
🔬
HITL / Scientific Review
Human-in-the-loop pauses at configurable stages for expert validation. Engineers review and approve before the pipeline advances — critical for regulatory submissions and peer review.
🧪
Mock Mode & CI
Run the complete pipeline without real terrain data, a live StreamStats connection, or a HEC-RAS license. 170 tests pass in CI on every push. Every HTTP call is mocked — no network access required.
python pipeline/orchestrator.py \
--mock
python -m pytest tests/ -v
# 170 passed
🔔
Webhook Notifications
HMAC-signed webhook payloads on run completion. Email notifications included. Integrate with Slack, Teams, or any CI/CD pipeline to trigger downstream workflows automatically.