Turn open world-signal feeds (quakes, disasters, outbreaks) into africa-coord-bus coordination events — East Africa scoped, MIT, no API keys.
Project description
coord-ingest
Global situational-awareness dashboards ingest hundreds of live feeds and turn them into an actionable picture — but they score the world's Tier-1 countries, and East Africa isn't on that list. The signals that matter here (drought onset, basin flooding, cholera clusters, rift-zone quakes) are in the same public feeds; nothing was turning them into events a regional coordination system could act on.
coord-ingest is that missing rail: an MIT-licensed adapter that converts open, key-free world-signal feeds into africa-coord-bus coordination events, filtered to East Africa, so the bus can cascade them to the right domains (insurance, crop advisory, water testing, cross-border alerts).
It ingests and normalizes; the bus routes. Clean separation, composable rails.
What it does
- Adapters for public sources — Open-Meteo rainfall (drought/flood signals), USGS earthquakes, GDACS disaster alerts — each mapping raw records to typed
CoordinationEvents. Add a feed by adding an adapter. - East-Africa filter — a signal becomes an event only if it lands in the regional bounding box or names a regional country. Global noise is dropped at ingest.
- Offline-capable — ships with a
SampleAdapterover bundled fixtures, so the full pipeline (and its tests) run with no network and no API keys. - Feeds the bus, doesn't replace it — routing, cascading, and cross-border logic stay in
africa-coord-bus.
Use it
pip install coord-ingest
from coord_ingest import IngestPipeline, SampleAdapter
# Offline demo — no keys, no network
summary = IngestPipeline([SampleAdapter()]).run()
print(summary["collected"], "East Africa events") # global noise already dropped
print(summary["by_domain"]) # {'water': 3, 'health': 1, 'transport': 1}
# With live feeds + the bus:
# from coord_ingest import OpenMeteoAdapter, USGSQuakeAdapter, GDACSAdapter
# from africa_coord_bus import EventBus
# IngestPipeline([USGSQuakeAdapter(), GDACSAdapter()]).run(bus=EventBus(...))
Why not just fork a dashboard?
The global open-source dashboards that inspired this are AGPL applications. This is deliberately the opposite: a small MIT library that produces standard bus events any tool can consume — including a dashboard, if someone wants to build one. Rails, not another train.
IP & Collaboration
MIT. New feed adapters welcome via GitHub Issues (public, key-free sources, East-Africa relevant). Full policy: docs/architecture/IP_POLICY.md. Security: SECURITY.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coord_ingest-0.2.0.tar.gz.
File metadata
- Download URL: coord_ingest-0.2.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
214b1a099e0651507365631ec5945e1cbd67619ba7eeb51968af87665b687386
|
|
| MD5 |
619bdad5349bf710c433d438feb0b184
|
|
| BLAKE2b-256 |
8575f04bfa9f94c2391ae593cb6668c95c20514ddfb0b09fd0dcaa5051bc2d03
|
File details
Details for the file coord_ingest-0.2.0-py3-none-any.whl.
File metadata
- Download URL: coord_ingest-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b345f997f3544ae8a36cf0674a1d4956c048969d286c06cbfdaf70036dc2785b
|
|
| MD5 |
d77bcb7feac90066cd130e91037dbfca
|
|
| BLAKE2b-256 |
fc949e0c185eb84c361f09cabb3f66011f7305844913168a30f50e411d6b7ff7
|