Windows system audio → iPhone → AirPods, over your local network. Native WASAPI loopback capture, a native SwiftUI receiver, encrypted QUIC transport, and locked-screen playback — no Mac, no virtual audio cables, no browser pages.
This is a fork/evolution of leaperone/remote-au
(AGPL-3.0) that adds a native iOS receiver, a modern secure transport, Opus,
pairing, adaptive quality and GUIs. See docs/PHASE1_ANALYSIS.md for the full
design rationale and docs/PROGRESS.md for status.
Windows iPhone
┌────────────────────────┐ ┌──────────────────────────┐
│ WASAPI loopback │ │ UDP/QUIC receive │
│ → codec (PCM/Opus) │ LAN │ → reorder + PLC │
│ → QUIC + DATAGRAM │ ────────────► │ → adaptive jitter │
│ (pairing, stats) │ │ → drift correction │
│ tray app + CLI │ │ → AVAudioEngine │
└────────────────────────┘ │ → AirPods (locked OK) │
└──────────────────────────┘
| Path | What |
|---|---|
engine/ |
Go module (forked from remote-au): capture backends, codecs, transports, session, pairing, engine, CLI, tray app, gomobile bridge |
ios/ |
RemoteAU.app — SwiftUI receiver (XcodeGen project; builds unsigned IPA via CI) |
jb/ |
Optional jailbreak companion (separate from the core IPA) |
docs/ |
Phase 1 analysis, protocol v2 spec, progress tracker |
reference/ |
Cloned remote-au + EchoWarp sources (reference only, not built) |
⚠️ Legacy protocol notice:remote-au send/recvspeak the v1 protocol — unencrypted, trusts the local network. It exists for compatibility and debugging. Prefer the v2 flow (remote-au serve+ iPhone pairing) for normal use.
- Windows: build the CLI (
engine/runtests.ps1passes; build withgo build -o bin/remote-au.exe ./cmd/remote-auinsideengine/), then:or let it discover the iPhone automatically:remote-au devices # pick a playback device (optional) remote-au send --source loopback --to <iphone-ip>:47000remote-au send --source loopback - iPhone: install
RemoteAU.ipa(CI builds an unsigned IPA on every push tomain; install with TrollStore on jailbroken devices or sign with Sideloadly). Open the app — it answers discovery and starts playing. - Lock the phone. Audio keeps flowing to AirPods.
- PC:
remote-au serve(or the tray app) — prints a pairing code when a new device connects. - iPhone: v2 is compiled into the IPA by CI via a Go XCFramework
(
RemoteAU.xcframework, seeengine/scripts/build-ios-framework.sh). Tap the PC, enter the code once; future connections are authenticated automatically.
If prompted, allow engine\bin\remote-au.exe (and the tray app) on private
networks, or run engine\scripts\add-firewall-rules.ps1 from an admin
terminal once.
- Engine tests:
powershell -File engine/runtests.ps1(routes all test binaries through one path so the firewall only ever asks once). - Opus builds:
go build -tags opus(needs libopus + a C toolchain; the default build falls back to lossless PCM). - iOS IPA: push to GitHub → Actions artifact (no Mac required), or
cd ios && make ipalocally.