1-bit

Open-source companion server

1-bit bridge

An open-source companion server. Reach your home library over HTTPS, with QR-code pairing and TLS fingerprint pinning — typically faster than SMB, and reachable from outside your home network. As of 0.1.5 it can also serve your library to DLNA renderers like the Chord 2Go.

Architecture

Bytes, the short way.

A small Go binary indexes your library into a manifest and serves byte ranges over HTTP/2 with a pinned TLS fingerprint — no SMB round-trips, no transcoding.

  1. Host machine Your library Mac · Windows · Linux · Pi — files on disk, indexed into a manifest
  2. 1-bit bridge · Go Serves byte ranges HTTP/2 over TLS · fingerprint-pinned · no transcode
  3. iPhone → DAC Lock-free render DoP / native PCM · bit-perfect to your USB DAC

TLS fingerprint-pinned · direct byte-range streaming · no server-side transcoding

What it is

1-bit bridge is a small Go server you run on a Mac, Windows PC, Linux box, or Raspberry Pi alongside your music library. It serves the iOS app over HTTPS instead of SMB — same files, same bit-exact audio, but a transport designed for the app rather than a decades-old file-sharing protocol.

It's free and open source under the MIT license. The canonical site — setup, troubleshooting, protocol spec, every release note — lives at acoseac.github.io/1-bit-bridge.

Looking for setup or troubleshooting?

Everything practical — install, pair, configure, recover — is on acoseac.github.io/1-bit-bridge. This page is just the elevator pitch.

Why use it instead of SMB

  • Faster. A pre-indexed library manifest replaces the iOS app's two-phase SMB scan. The first sync finishes in seconds, not minutes.
  • Reachable remotely. SMB is a LAN protocol. The bridge speaks HTTP/2 over TLS — Tailscale, WireGuard, or any direct route works without extra plumbing.
  • Easier to set up. Run the installer, approve the device on the admin console, you're paired. No share permissions, no Samba quirks.
  • Same audio path. The bridge ships bytes; the iOS app still owns DSD, DoP, gapless, and everything else. No server-side transcoding, ever.

What's new in 0.1.5

Forty-five commits since 0.1.4. The iOS wire protocol stays at v1 — everything below is additive, older app builds keep working unchanged, and the bit-exact audio path is untouched:

  • DLNA / UPnP MediaServer (opt-in, LAN-only). Serve your library to DLNA/UPnP renderers on your network — the Chord 2Go is the headline target, plus generic players (mconnect, BubbleUPnP, Linn Kazoo). Presents an All Tracks list and a Folders hierarchy with free-text search; audio is bit-exact, with cached upscale variants surfaced as alternate streams. UPnP has no authentication, so this is off by default, only ever binds private / link-local interfaces (never a routable public IP), and a public-mode bridge refuses to start it — the LAN bind is the gate. Enable with dlna.enabled: true or the admin Settings toggle, and only on a network you trust.
  • Per-device playlist backup. Back up the playlists you build in the iOS app so they survive a reinstall or re-pair. Anchored to a durable per-device identity, not the bearer token. Playlists that mix in tracks from another bridge or local / SMB storage keep those as opaque references the bridge never resolves.
  • Opt-in listening history. Turn it on per-bridge in the iOS app (off by default) and the app reports each play — track, when, how long, codec, and where available the output route / device and DAC sample rate. It's your data: stored on the bridge host, surfaced only in the admin console's new Data page (histograms, most-played, event log, JSON / CSV export), and never sent off-host by the bridge on its own.
  • Public-mode pairing QR fix. A public (Let's Encrypt) bridge now bakes the served cert fingerprint and the public dial URL into the pairing QR, so scanning from a phone no longer hits a TLS-pin mismatch.
  • Stability + honesty. sudo bridge update no longer fails config-load when the library root (e.g. an rclone FUSE mount) is unreadable by root; honest variant accounting across the dashboard / library / audio-quality views; an admin DLNA enable/disable toggle; and more accurate Tailscale status.

Full release notes and upgrade guidance: github.com/acoseac/1-bit-bridge/releases.

Bit-exact, by design

The bridge never decodes, resamples, or transcodes the source files. It serves the bytes the iOS app asks for — DSF, DFF, FLAC, ALAC, WAV, AIFF, MP3, AAC — and the iOS app does the rest. The full DSD pre-cache that protects DoP marker alignment still applies; the bridge just gets the bytes there faster. Optional upscaled variants are generated alongside the originals, never in place of them.

Open source, MIT

Source, releases, the protocol spec, and the admin console all live on GitHub under MIT. Issues, PRs, and security reports are welcome.

Get it

Run the bridge, pair your iPhone.

Step-by-step setup, troubleshooting, and the full protocol spec are on acoseac.github.io/1-bit-bridge.