Golub SoftworksGolub Softworks
Selected Mobile App

Eavesdrop

Turn your phone into a live microphone for your headphones

Mobile audio engineering — Kotlin Multiplatform
2025 – present
Kotlin MultiplatformComposeAudioAndroidiOS
THE CHALLENGE

People in noisy environments needed clearer nearby audio through headphones without building a surveillance tool. The product had to feel trustworthy, work across Android and iOS audio stacks, and enforce phone-mic capture even when headsets are connected.

WHAT WE DELIVERED

A production-grade mobile app.

Eavesdrop lets you place your phone nearby and hear what its built-in microphone picks up through your Bluetooth or wired headphones with low-latency pass-through. The experience is deliberately visible and consent-first: no hidden recording, no stealth mode, and audio stays on your device.

We built a Kotlin Multiplatform app with shared session state, platform-specific live audio controllers, and a bold active-state UI that makes listening obvious. Android uses AudioRecord and AudioTrack; iOS uses AVAudioSession and AVAudioEngine.

SCOPE & FEATURES

What makes it work in the real world.

Platforms
AndroidiOS
Key capabilities
  • Live phone-to-headphones listening with start/stop flow
  • Bluetooth and wired output detection
  • Bold mic-active UI with no hidden recording mode
  • On-device audio processing only
VISUALS & EXECUTION

Built for real operations, not demos.

Shared LiveMicController state machine in commonMain

Android AudioRecord → AudioTrack low-latency pass-through

iOS AVAudioSession + AVAudioEngine integration

Built-in mic enforcement when headsets are connected

Foreground-only MVP with explicit permission and active-state UX

KEY OUTCOMES
On-device
audio never leaves the phone
Android + iOS
shared Compose UI and session logic
Visible
consent-first active listening state
TECHNICAL HIGHLIGHTS

How we made it work reliably in production.

  • Shared LiveMicController state machine in commonMain
  • Android AudioRecord → AudioTrack low-latency pass-through
  • iOS AVAudioSession + AVAudioEngine integration
  • Built-in mic enforcement when headsets are connected
  • Foreground-only MVP with explicit permission and active-state UX

Building something that needs to actually work in the real world?

Start a conversation