Skip to content

Frankensonos

Memory-safe Rust controller for your own Sonos speakers on your own LAN — reliable SSDP/UPnP-SOAP/GENA interoperability (S1 + S2), a Spotify-library classical DJ, and a CLI +…

Install

$git clone https://github.com/Dicklesworthstone/frankensonos

Install command taken from the project's README or registry entry. Always review code before running it.

FrankenSonos

Your Sonos, your way. Command your speakers from anywhere in the world, as long as you're on your Tailscale tailnet. A memory-safe Rust controller and daemon for the Sonos speakers you already own: one binary that runs the whole house from the terminal, an HTTP API, or any AI agent that speaks MCP.

language: Rust 2024

Status: pre-release (before 0.1.0). Everything below is implemented, and every feature is tested end to end against fsonos-sim, a virtual Sonos house (an S1 and an S2 household speaking SOAP and GENA on loopback, checked against scrubbed captures of real players). The daemon also runs a real two-household house, S1 and S2, where discovery, grouping, volume, favorites, Spotify rendering and announcements have run on real players, and fsonos selftest checks yours without changing anything you can hear. There is no real-hardware CI yet, and interfaces may still change before 0.1.0.


Why FrankenSonos

Sonos hardware is excellent and lasts for years; the software around it is where it falls short. The app loses speakers, grouping fights you, automation is out of reach, the legacy S1 line is frozen while S2 moves on without it, and the Spotify Web API cannot start playback on a Sonos at all.

FrankenSonos talks to your speakers directly, over the local protocols they already speak (SSDP discovery, UPnP/SOAP on port 1400, GENA events), and turns the whole house, both generations at once, into something you and your agents can drive:

  • From anywhere on your tailnet. fsonos serve serves its HTTP API on loopback and your Tailscale addresses (MCP on loopback), and fsonos tailscale setup puts HTTPS in front of both with Tailscale Serve. Your phone in another city, an agent on a cloud VM, a laptop at work: if it is on your tailnet, it runs your house (the CLI there too: FSONOS_DAEMON_URL=https://<mac>.<tailnet>.ts.net fsonos pause Kitchen). Nothing is exposed to the public internet, Funnel is never used, and the speakers never leave your LAN.
  • Built for agents, with guardrails. Every surface (CLI, HTTP, MCP) goes through one control path: the house policy (per-room volume caps, quiet hours, per-client tool allowlists), an action log of who did what, and undo. The volume caps and quiet hours bind the agent surfaces; the local CLI is trusted and runs uncapped by default (set [clients.cli] capped = true to cap it too). The caps hold for music an agent starts as well as for the volumes it sets: a play, a resume or a DJ start first brings a room left loud down to its cap. Hand the house to an agent without it playing volume 80 at 2 a.m.
  • A DJ that plays what you like. It plays from your own Spotify likes and saves, in whatever genres they span (pop, jazz, hip-hop, soundtracks, classical), puts your own steering ahead of anything it infers, follows mood and time of day, spreads a set across artists, explains every pick, and keeps learning from your likes, dislikes, early skips and full listens. Classical works play whole, every movement in order. Standing preferences of your own — favored and avoided genres, artists and eras, a default energy, explicit tracks, pins and bans — override what it infers, on the CLI, HTTP and MCP.
  • One memory-safe binary. Pure Rust 2024 with #![forbid(unsafe_code)], on an owned async stack (no Tokio, no reqwest). Not

Similar plugs

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

Java 面试 & 后端通用面试指南,覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发

Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype…

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io