I grew up in New Orleans and I was here during Katrina. What I watched happen was not a failure of courage or effort. There were thousands of people with boats ready to go within hours. The failure was coordination. Nobody knew where to go, who had already been reached, or how to get information to anyone making decisions because the infrastructure that normally carries that information was underwater. I have been thinking about that for twenty years and SafeGuardian is my attempt to build the system that should have existed then.

What it does

SafeGuardian connects civilian volunteers, professional responders, and an AI command layer into a single mesh that keeps working when cell towers and dispatch centers go down. Civilians running Nova can report incidents by voice or text and those reports get structured and routed over BLE mesh to command. Professional responders on Trek receive formal mission contracts specifying who goes where, with what resources, and by when, issued by APEX, our AI command layer. APEX runs inside Splunk Enterprise as a custom streaming command that scores every incoming incident for dispatch priority and FEMA documentation completeness in real time. A unified ops map ties agent positions, open incidents, and NASA flood event data into one view so a single operator can manage a full activation without switching tools.

How we built it

I built a three-tier agent architecture across iOS, Python, and Splunk. Nova is an iOS app that transcribes voice reports using on-device Whisper, structures them as standardized incident events, and broadcasts over BLE mesh when there is no network. Trek is a second iOS app for TAK-enrolled professional responders that receives mission contracts and posts sitreps back. APEX runs as both a Splunk custom streaming command and a web chat interface backed by a local inference model. Every event in the system, including incidents, TAK presence beacons, mission contracts, mesh telemetry, and NASA EONET disaster feeds, lands in a single Splunk index. The AI triage happens inside the Splunk search pipeline directly, so results appear as colored columns in the dashboard without any external orchestration.

Challenges we ran into

Splunk on Apple Silicon disables KV Store because MongoDB does not run under Rosetta, which took out Dashboard Studio and forced me to build everything in SimpleXML. Getting AI inference to run inside a Splunk streaming command without hitting timeout limits required careful prompt design and tight response constraints. iOS 26 broke several APIs I was depending on for Bluetooth and image handling, and I had to track those down and patch them under time pressure. Building a mesh transport that degrades gracefully from WiFi to BLE to queued relay without a central broker meant writing transport abstraction that did not exist in any library I could pull in.

What's next for SafeGuardian

I want to deploy alongside an actual Cajun Navy activation and test the mesh transport against real field conditions. The LoRa radio layer via Reticulum is one T-Beam device away from being operational and would extend mesh range to the distances that matter in a large flood. NG911 integration would let Nova-originated incidents forward directly into the 911 system with geolocation and priority already attached. And I want to build the UAV agent tier, a peer agent on a drone companion computer with aerial observation, because that is the capability that would have changed the outcome in 2005.

Built With

Share this project:

Updates