Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
VARUNA는 도플러 레이더를 거리별 홍수 깊이로 변환·지난 홍수로 도시 배수망을 학습·다음 3시간 응급 서비스 경로를 제시
VARUNA turns Doppler radar into street-by-street flood depth for the next three hours, learns a city's hidden drains from every flood, and routes emergency services around what is coming.
데이터Python · TypeScriptGitHub @shahul-royalss온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Street-level urban flood nowcasting digital twin. SIH 2026, problem statement SIH26085
(Ministry of Earth Sciences). Team VIT.
VARUNA is a self-correcting digital twin of a city's water: sky, surface and sewer. It turns
Doppler-radar rainfall into street-by-street depth forecasts for the next three hours, learns the
city's hidden drains from every flood it sees, and tells emergency services which street will be
impassable, when, and how to get around it.README 전문 보기 ↗Street-level urban flood nowcasting digital twin. SIH 2026, problem statement SIH26085 (Ministry of Earth Sciences). Team SummitSquard.
"Every street. Three hours early."
VARUNA is a self-correcting digital twin of a city's water: sky, surface and sewer. It turns Doppler-radar rainfall into street-by-street depth forecasts for the next three hours, learns the city's hidden drains from every flood it sees, and tells emergency services which street will be impassable, when, and how to get around it.
Everything in the prototype runs live: real Mumbai terrain and roads from open data, a
reconstructed replay of 2 July 2019, simplified-but-real physics for the surface and the drains, a
learning drain map, sub-second what-if, and routes for an ambulance. Every simplification is
labelled on screen and listed in docs/SIMPLIFICATIONS.md.
Watch the walkthrough on YouTube: Urban Flood Nowcasting System | Team SummitSquard | SIH2026 - 26085.
Try the live prototype: varuna-dhrishta.vercel.app. The forecast API is at varuna-api-production.up.railway.app/docs.
make setup # pnpm + uv workspaces, pre-commit, Playwright Chromium, .env
make city CITY=mumbai # city-in-a-box layers (downloads on first run, then cached)
make bundle BUNDLE=MUM-2019-07-02 # replay bundle: storm designer, synthetic streams, ground truth
make bake BUNDLE=MUM-2019-07-02 # pre-compute every 5-minute cycle into data/runs/
make demo # API :8000 + console :3000 replaying the bundle at 30x
Until a bundle is baked, make demo prints "No bundle baked yet" and opens the console in its
empty state; nothing crashes. uv run varuna <target> is the identical fallback when GNU make
is missing (every target is a one-line wrapper around it).
| Target | Does |
|---|---|
make help | Lists every target (the default goal) |
make setup | Installs pnpm and uv workspaces, pre-commit hooks, Playwright Chromium; copies .env.example to .env |
make doctor | Checks tool versions, .env, engines, city layers, bundles and runs |
make city CITY=mumbai | Builds city-in-a-box layers from cache (downloads on first run) into city/<city>/ |
make city-cache CITY=chennai | Downloads the open data for a city into city/cache/ only (Chennai pre-cache) |
make bundle BUNDLE=MUM-2019-07-02 | Generates a replay bundle (storm designer, synthetic streams, curated ground truth) |
make bake BUNDLE=MUM-2019-07-02 | Pre-computes every 5-minute cycle of a bundle into data/runs/ |
make train | Fits Flash-lite from Twin runs (P1: trains the GNN) |
make dev | API on :8000 and Next.js on :3000, replay paused |
make demo | Full demo: API + UI + replay of the default bundle at 30x from baked runs |
make test | pnpm lint, typecheck, test, lint:design, then pytest with coverage |
make e2e | Playwright demo-script test (starts API and UI itself) |
make pack | Offline package: baked runs, tiles, Chennai cache, fonts, basemap |
make demo-video | Records the demo path with Playwright video (fallback) |
make lint | ESLint and design lint for the app, Ruff for Python |
make typecheck | tsc --noEmit for the app, mypy for the task runner and schemas |
make typegen | Exports OpenAPI from FastAPI and generates apps/command/lib/api/types.ts |
make openapi | Writes apps/command/openapi.json from the FastAPI app |
Variables: CITY, BUNDLE, ARGS (extra flags passed through). Targets whose engine is not
built yet exit with code 2 and name the phase that delivers them.
varuna/
├── CLAUDE.md build spec (single source of truth)
├── Makefile every workflow is a make target -> uv run varuna <target>
├── apps/command/ Next.js 16 app: landing, console, public map, every screen
├── services/
│ ├── api/ FastAPI: products, routing, alerts, replay controls, WS /v1/live
│ ├── city/ city-in-a-box pipeline (DEM, OSM, conditioning, drain synthesis)
│ ├── replay/ bundle loader, storm designer, synthetic streams, clock
│ ├── sky/ QPE, gauge merge, optical flow, STEPS ensemble
│ ├── twin/ 2D local-inertial solver, 1D drain solver, coupling, boundaries
│ ├── pulse/ traffic anomaly detector, report ingestion, EnKF
│ ├── flash/ reduced-order emulator (P0), GNN surrogate (P1)
│ ├── products/ segment and node forecasts, rasters, hotspots, alerts, pumps
│ ├── route/ time-dependent routing, reachability, provider feeds
│ ├── cycle/ orchestrator, in-process bus, run registry, bake
│ └── verify/ verification scores per event
├── packages/
│ ├── schemas/ Pydantic models, JSON schemas, settings, paths, tokens, ramps
│ └── tokens/ tokens.json -> CSS variables, Tailwind theme, TS and Python ramps
├── tools/varuna_cli/ the `varuna` task runner behind every make target
├── city/ per-city static layers (gitignored; make city)
├── bundles/ replay bundles (heavy members gitignored)
├── data/runs/ run artifacts (gitignored; make bake)
├── docs/ blueprint, DECISIONS, SIMPLIFICATIONS, CHANGELOG, QA, API, screens
└── tests/ cross-service tests, offline guard, Playwright e2e
flowchart LR
R[Radar frames<br/>gauges, tide] --> S[Sky<br/>QC, Z-R, merge, STEPS ensemble]
S --> T[Twin<br/>2D shallow water + 1D drains]
S --> F[Flash-lite<br/>reduced-order emulator, 50 members]
T --> P[Pulse<br/>EnKF over blockage beta]
F --> P
O[Traffic speeds<br/>citizen reports] --> P
P --> Q[Products<br/>segments, rasters, hotspots, attribution]
Q --> C[Command<br/>alerts, pumps, console]
Q --> RT[Route<br/>time-dependent routing, reachability]
Q --> M[Public map<br/>and report flow]
Every stage records its milliseconds in run.json; the console's cycle budget bar and
GET /v1/cycle/status show them. The API contract is in docs/API.md.
C:\dev\varuna is the
reference location (ADR-0001 in docs/DECISIONS.md). OneDrive sync breaks .venv,
node_modules and .next renames.winget install ezwinports.make. The binary lands in
%LOCALAPPDATA%\Microsoft\WinGet\Packages\ezwinports.make_*\bin; add that folder to PATH or
use uv run varuna <target> directly (ADR-0004).[tool.uv] system-certs = true in pyproject.toml
and UV_SYSTEM_CERTS=1 in .env.example (ADR-0002).varuna_schemas.net (OS trust store via truststore) and GDAL only ever reads local files
from city/cache/ (ADR-0006). Do not set GDAL_HTTP_UNSAFESSL.uv run varuna ... line.Every number here comes from the artifacts in this repository, not from an estimate. The ones that
are bad are here anyway; docs/QA.md says why for each.
| Mass balance, coupled run | 6.1 x 10-4 | budget 1 x 10-3 (CLAUDE.md 11.3) |
| Three-hour city run | 74 s | budget 8 s - missed, see ADR-0035 |
| Route, KEM to Sion | 85 ms | budget 300 ms |
| What-if scenario | 62 ms | budget 1 s |
| Chennai from cache, end to end | 36 s | budget 5 min |
| CSI at 15 cm, 2 July 2019 | 0.22 | 17 sourced pins in the window |
| Median lead time | 31 min | over 6 pins found before they were logged |
| Flash-lite held-out skill | RMSE 5.7 cm, CSI 0.085 | fitted on 8 runs, not the 200 asked for |
| Inferred drain network | 49,770 edges, 1,716 km | 100 % reach an outfall; all marked inferred |
| Depressions explaining the register | 89.3 % | target 60 % |
make pack # dist/varuna-offline: runs, city layers, bundles, open-data cache
830 MB, and the finale runs from it with the venue's Wi-Fi off. The basemap imagery is not in it
make test # pnpm lint + typecheck + test + lint:design, then pytest --cov
make e2e # Playwright: the smoke test, the demo script, and the accessibility scan
VARUNA_OFFLINE=1 uv run pytest tests # the offline guard blocks non-loopback sockets
pre-commit run --all-files
CI (.github/workflows/ci.yml) runs the same four lanes: web, python, e2e and Lighthouse on /.
make e2e covers three things: that the shell renders, that every beat of the demo script works
(tests/e2e/demo.spec.ts, one test per moment of CLAUDE.md 15, asserting the numbers exist rather
than their values), and that thirteen screens have no WCAG 2.1 AA violations
(tests/e2e/a11y.spec.ts, axe plus two keyboard tests).
docs/CONVENTIONS.md: real library versions and coding conventionsdocs/DECISIONS.md: architecture decision recordsdocs/SIMPLIFICATIONS.md: every simplification versus the blueprintdocs/API.md: endpoint table, error envelope, time formatsdocs/CHANGELOG.md and docs/QA.mdmake format | Prettier for the app, Ruff format for Python |
make clean | Removes build outputs and caches (.next, dist, .turbo, pytest and ruff caches); never data |