In Turkey, 2023, a 7.8 earthquake killed over 50,000 people. For most of them, the first 10 hours under the rubble — when they were still conscious — passed before anyone could reach them.

We wanted to build the thing you lower into that gap.

What it does

Each Witness-Node is a disposable, steel-caged Raspberry Pi you lower on a rope into a disaster zone. When it touches down, it snaps a photo, records 10 seconds of mic audio, and sends them to the cloud. Gemini triages the scene, ElevenLabs speaks calm instructions back to the survivor through the node's speaker, and Solana logs an immutable hash of every observation. Rescuers see every node live on a web dashboard.

Live dashboard: witness-node.vercel.app

What it consists of

  • Rope-lowered IoT probe (Raspberry Pi + mic + camera + speaker in a steel cage)
  • Live incident ingest API
  • On-chain evidence log (Solana devnet)
  • Web dashboard with live map

How we built it

Hardware

  • Raspberry Pi 4 with Grove Hat
  • 1080p USB webcam
  • ReSpeaker USB mic
  • JBL 3.5mm speaker
  • Roller limit switch (ground-contact detection)
  • Tactile button (survivor-side help request)
  • 6×6×6" steel roll cage

Soldered pin headers, tested each sensor alone, wired them into the Pi, debounced the GPIO triggers, deployed the agent as a systemd service.

Software

Infrastructure used:

  • Gemini Vision — scene triage
  • ElevenLabs — speech-to-text + text-to-speech
  • Solana devnet — immutable evidence via the Memo program
  • Tiger Data (TimescaleDB) — incident storage
  • Vultr + Caddy — FastAPI backend + HTTPS
  • Vercel + GoDaddy — Next.js dashboard

Backend flow:

  1. Pi POSTs photo + audio to FastAPI on Vultr.
  2. Gemini returns a triage string for the scene.
  3. ElevenLabs transcribes the mic audio and synthesizes a spoken response.
  4. SHA-256 of the triage is written to Solana via the Memo program.
  5. Incident is stored in TimescaleDB and served to the dashboard at /incidents.

Dashboard: Next.js 15 on Vercel, live Leaflet map, polls /incidents every 3s.

Challenges we ran into

Keeping the Pi alive on battery (fixed by going event-driven instead of streaming video). Graceful degradation when Gemini / ElevenLabs / Solana rate-limit mid-demo. Hardware integration — mic, camera, GPIO, speaker all on one Pi — under hackathon time pressure.

Accomplishments that we're proud of

Full loop working end-to-end: Pi → FastAPI → Gemini → ElevenLabs → Solana → TimescaleDB → Next.js dashboard, in under 10 seconds, with every triage cryptographically notarized on-chain.

What we learned

Event-driven beats streaming for anything battery-constrained. The hard part of a multi-AI pipeline is the error handling between the models, not the models themselves. Solana's Memo program is a surprisingly elegant tool for "notarize this string, forever" — no smart contract required.

What's next for Witness-Node

Drone-droppable or launcher-fired delivery shell so nodes can be placed without rope access. Mesh networking between nodes when cellular is down. On-device wake-word detection so the node self-triggers if the ground-contact switch misses.

Built With

Share this project:

Updates

Submission history