A reason to build.
A self-hosted music collection was available in a browser, but reaching it from a voice assistant or a Discord call required a different interface—and a careful way to expose audio.
How the pieces fit.
- 01
Built a self-hosted Alexa Custom Skill in Go, validating signed requests and maintaining durable queues by user and device.
- 02
Used expiring, signed stream URLs to proxy audio from the private library. Kept byte-range requests and streaming behavior intact.
- 03
Built a separate Discord bridge with a native Now Playing controller, search selection, pause, skip, shuffle, loop, and exact queue-item removal.
- 04
Serialized queue mutations, checked controls against the configured owner or moderator role, and added idle and empty-channel timeouts.
What came out of it.
Verified the Alexa path on a physical Echo, including signed audio delivery and playback callbacks. Deployed the Discord bridge with working controller buttons, persistent queue settings, and clean startup checks.
Go tests, race checks, static analysis, Node tests, signed-stream verification, Discord controller inspection, and reported physical Echo playback. Private source.
What I’d carry forward.
Protocol correctness matters at the edges. A transcoder’s estimated content length broke otherwise valid audio streaming; invocation routing also needed physical-device tests. The Alexa implementation targets the original Alexa experience, with Alexa+ compatibility limitations documented.
Working on something with similar edges?
Let’s compare notes ↗