Back to all work
Work/Web Development/AirPipe
Live · Project

AirPipe.

Stream system audio from any Android device to one or more AirPlay speakers at once — turning even a vintage hi-fi into a synced, modern wireless setup.

Role

Developer

Year

2026

Status

Live

airpipe.app/
Preview of AirPipe

The brief.

01 · BACKGROUND

Notes

AirPipe streams the audio playing on an Android device to one or more AirPlay-compatible speakers on the local network — the kitchen, the living room, and the patio, all in sync.

It started as a way to bring a Bang & Olufsen BeoSound Century — a beautiful 1990s hi-fi with stunning sound but no wireless — into the streaming era. A Raspberry Pi running shairport-sync gave the Century an AirPlay receiver; AirPipe completes the chain, turning any Android phone into the transmitter.

What it does

  • Captures any audio the device is playing — music apps, video, podcasts, games.

  • Fans out to several speakers at once, encoding once and sending bit-identical RTP to every destination with sub-frame sync.

  • Per-speaker volume and mute, independent of the device's master volume.

  • Finds receivers automatically over mDNS/Bonjour — no manual IP entry.

  • Encrypts the stream with AES-128-CBC and an RSA key exchange.

Under the hood, AirPipe captures system audio with Android's MediaProjection API and implements the RAOP (AirPlay 1) protocol directly over raw sockets — RTP timing, sync packets, and the encrypted handshake — in Kotlin.

AirPipe is available on Google Play. Learn more at airpipe.app.

The stack.

02 · BUILD
Kotlin
Tooling
Part of the day-to-day stack on this project.
Android
Tooling
Part of the day-to-day stack on this project.

Like what you see?
Let's talk.

Reply within 48h · Stuttgart, DE
© 2026 Felix Keller — Made with careGITHUB