Rules & docs
How OMI decides, and how to check it.
OMI is an open protocol for flood funds. Anyone can open a fund for a stretch of river, register the households it protects, and anyone can put money in. The money pays out by a rule fixed before the season, using public river data. This page gives every rule and every way to check it.
The rules
- Flood level. The river flow a place reaches about once in 10 years. It is fitted to the highest daily flow in each year of that river's record (a Gumbel distribution, method of moments, the standard first-pass flood-frequency method).
- Warning level. The once-in-5-years flow. It is shown to households and moves no money.
- Early payout. 30% of each household's cover, once per season, when the median of the GloFAS ensemble forecast reaches the flood level within 15 days. This is the money that arrives before the water.
- Full payout. The rest of the cover, once per season, when the river has been at or above the flood level 2 days in a row. One bad reading can't trigger it.
- Households. Registered by the fund's manager before the season starts, up to 500 per fund. Once the season starts nobody can be added or removed, so nobody can join after a flood is forecast.
- Short of money. If a fund holds less than it owes, every household gets an equal share of what it holds.
- Where money can go. Only to the households of the fund it was given to. The contract has no withdraw function, for anyone. Money left at the end of a season stays with the fund for its next season.
Where the river data comes from
GloFAS, the Global Flood Awareness System run by the EU's Copernicus Emergency Management Service, models daily river flow on a 0.05° grid (about 5 km) worldwide, with a historical record and a 50-member ensemble forecast. OMI reads it through Open-Meteo's free flood API, with no key. Licence: CC BY 4.0.
A point you type rarely sits exactly on the main channel; the cell next to it can be a side stream carrying a hundredth of the water. OMI searches a 5 × 5 block of cells around the point (about 10 km either way) and keeps the one carrying the most water over the last 60 days. The report says how far it moved your point.
How the money moves
- The reporter posts one reading per fund per day: yesterday's flow, the 15-day forecast high, and the keccak256 fingerprint of the exact data it used. The raw data is saved in the repository under
data/readings/, so anyone can recompute the fingerprint. - Every reading waits one hour before it can move money. In that hour the guardian can stop it if the numbers don't match the source. The guardian can only stop readings; it can't move money or change a fund.
- After the hour, anyone can settle readings, in the order they were posted. Settling applies the rules and, if one is met, pays every household of that fund in the same transaction. Nobody has to file a claim.
Check it yourself
- Any river, as JSON:
GET /api/river?lat=7.8&lon=6.74. Snapped cell, flood and warning levels, every past year replayed, today's status, 30-day forecast. No key, open to other sites. - Every fund, as JSON:
GET /api/fund. Funds, households, balances, readings, payouts, read live from Arc. - Re-run any place from the code:
npm run backtest -- 7.8 6.74 - Tests:
npm testruns the river engine tests and the contract tests on a local chain.
Open a fund for your river
Search a town on Any river, check its report, then use Open a fund for this river at the bottom. Your wallet becomes the fund's manager. Register the households before the season starts, put money in, and share the fund's page with donors. The daily reporter picks up every open fund automatically.
What OMI can't do yet
- One reporter. Today one key posts the readings, checked by the one-hour window and the guardian. The next step is several independent reporters that must agree before a reading counts.
- Model data, not gauges. GloFAS is a model. Where a river gauge exists, a fund should check its levels against the gauge record too.
- Short records. Some places have under 30 years of history, so their once-in-10-years level carries real uncertainty. The report shows how many years it used.
- Households need a wallet. Payouts land in a USDC wallet. Turning that into cash locally needs a mobile-money or exchange partner.
- Not insurance. OMI is a donor-funded early-cash fund, the model aid agencies call anticipatory action. Selling cover for a price would need an insurance licence where the households live.