SkyTalk
Encrypted push-to-talk walkie-talkie over Iridium Certus satellite (22 kbps, 500–1500 ms latency), built at the SKYTRAC Hackathon.
- ROLE
- Built the client comms library (ForbiddenLANComms) on a 4-person team
- RESULT
- AES-256-GCM push-to-talk that stays responsive at satellite latency
- STATUS
- Hackathon build (SKYTRAC Hackathon)
- STACK
- React NativeExpoFastifyWebSocketPrismaPostgreSQLDigitalOcean
- LINKS
- GitHub ↗ · Write-up ↗
Quest briefing
Problem
Push-to-talk over satellite is hard. An Iridium Certus link gives about 22 kbps and 500–1500 ms of latency. A naive walkie-talkie app breaks down: two people press the button at once, and both think they have the floor.
What I built
- A cross-platform Android/iOS walkie-talkie app (Expo) with AES-256-GCM encrypted push-to-talk over Iridium Certus.
- The client comms library, ForbiddenLANComms, which handles the full push-to-talk connection over the unreliable satellite link. I owned this package in the monorepo. Teammates built the Fastify relay server and the mobile and web UI.
- Timestamp-based floor control. When two presses collide, timestamps decide the winner before the server confirms, so audio stays responsive at satellite latency.
Result
Encrypted push-to-talk over Iridium Certus that holds up at satellite latency. The architecture, sequence diagrams and API contracts are on the project's docs site.
Loot (what was learned)
- At 500+ ms round trips you can't wait for the server to decide. Decide locally with a rule everyone agrees on, then reconcile.
- Bandwidth budgets change every design choice, from codec to message framing.
- A shared comms library with a clear API let four people build in parallel without blocking each other.