DEV Community

Gabriel Mahia
Gabriel Mahia

Posted on

Building a Coordination Layer When Nobody Else Is

Building AI tools for Africa one at a time solves individual problems. The coordination problems that cost lives require tools that work together.

Most AI tooling for the region treats each domain — finance, water, health, agriculture — as a separate problem with a separate tool. The tools work in isolation. The crises they're meant to help with don't.

The domain layer

Finance: mpesa-mcp, kra-mcp, faida-mcp, mkopo-mcp, sifa-mcp
Water: wapimaji-mcp (drought intelligence)
Agriculture: kilimo-mcp, bima-mcp, soko-mcp
Health: afya-mcp, afya-ya-akili-mcp
Education: elimu-mcp
Transport: usafiri-mcp
Land: ardhi-mcp
Language: swahili-civic-nlp, tafsiri-mcp
Civic: county-mcp, fomu-mcp, haki-ya-kazi-mcp

All installable from PyPI: pip install wapimaji-mcp kilimo-mcp bima-mcp

The coordination layer

africa-coord-bus connects the domain servers. When wapimaji-mcp detects drought, the bus routes it to the servers that need to respond: insurance evaluation, crop advisory, malnutrition surveillance, county alerts.

from africa_coord_bus import EventBus, DomainCascade, CoordinationEvent
from africa_coord_bus import EventDomain, EventSeverity

bus = EventBus(queue_path="/var/coord-bus/events.jsonl")
DomainCascade(bus).wire_all()

bus.publish(CoordinationEvent(
    domain=EventDomain.WATER, event_type="drought_alert",
    source="wapimaji-mcp", severity=EventSeverity.ALERT,
    data={"ndvi_anomaly": -0.28, "spi_3month": -1.8},
))
# Five tools respond automatically
Enter fullscreen mode Exit fullscreen mode

pip install africa-coord-bus

The knowledge layer

Public domain datasets at huggingface.co/gmahia provide historical grounding: agricultural baselines from 1906–1925, Swahili-language corpora, and legal and climate records — material that exists but was never structured for AI training or retrieval before.

The domain servers referenced above are on PyPI individually; browse pypi.org/user/gmahia for the current list.

Top comments (0)