Install
git clone https://github.com/Dicklesworthstone/frankensonos
cd frankensonos
cargo build --releaseWho it's for
You already own Sonos speakers and want to hand whole-house audio over to a terminal, an HTTP API, or an AI agent that speaks MCP: FrankenSonos is a Rust controller and daemon that its author officially describes as memory-safe, and a single binary runs the whole house. Each of the three entry points matches one kind of reader: people who want to type commands get the fsonos CLI, integrators get an HTTP API with an OpenAPI document, and anyone delegating to AI gets the MCP server. Home-automation users who like the command line and scripting will feel especially at home here; it serves only the speakers you already own and involves no new hardware purchases.
State the prerequisites up front: the project is pre-release with no official downloadable binaries yet, so your first use begins with a build from source (the Rust toolchain version is pinned in rust-toolchain.toml). The daemon must run on a machine on the same LAN as your speakers, and for access from anywhere that machine must also join your Tailscale tailnet. If you expect a one-command install that works out of the box, wait for the official release. These two premises together make it closer to self-hosted infrastructure than an install-and-go app; if you can accept both, read on for a first try.
Not a fit, or wait and see: without Sonos speakers, without the willingness to install a Rust toolchain, or without a machine that stays on the speakers' LAN, these premises are hard to meet. Whether speakers from other brands work is not stated in the evidence — do not assume it.
A first try in 3 minutes
The recommended main path is the official one: build from source, run the first-time setup, then point an agent at the daemon. Why not a download: CI does produce Apple Silicon and x86_64 Linux artifacts on every push to main, but they expire with the run, and the project states that official downloads will start with 0.1.0. Nothing gets installed on the speakers at any point in the process.
Prerequisites: a machine on the same LAN as your speakers, with the Rust toolchain in place.
Step one, clone and build:
git clone https://github.com/Dicklesworthstone/frankensonos
cd frankensonos
cargo build --release
Step two, run fsonos setup on that machine; officially, it takes over from there and completes the first-run configuration.
Step three, point an agent at the daemon from any tailnet machine:
claude mcp add --transport http fsonos https://<mac>.<tailnet>.ts.net:8443/mcp
For your first call, pick the lightest step: read the MCP resource sonos://zones to see your speaker zones and confirm the chain works before touching any device. As for success signals, the evidence does not describe the exact output text; what is confirmed is that the endpoint and the resource names come verbatim from the official text. If you want the agent to carry out control-type actions, note that they act on real equipment; the evidence gives no undo path, so do not treat them as reversible. Put the checkpoint before the action: see exactly what the agent will call and which zone it targets, then let it through. Practicing a read-only first pass separately from real control is the most relaxed rhythm.
Use cases
Case one: have the agent take stock of the whole house. Scenario: the agent is already connected to the daemon through the endpoint above, and you want a quick check of which rooms are playing music before heading out. Try: read the MCP resource sonos://zones. What to expect: you get the speaker-zone information; the exact fields and format are not given in the evidence, so the actual response is the authority. When you are off the network, any tailnet machine lets the agent run the same read, which is more practical for people who are often away; for long-term use, that read can also serve as a quick daily check.
Case two: skip the agent and control whole-house audio straight from the terminal. Scenario: you are working right on the machine that runs the daemon. Try: use the fsonos CLI, which supports --json everywhere. What to expect: the output is JSON, easy to parse from scripts and easy to wire into your existing automation; the evidence does not list the concrete subcommands, so no per-command examples are invented here. Scripts call the CLI, the agent goes through MCP — the two combine as the scenario demands.
Boundaries of use
- Read/write nature: control-type calls act on the speakers for real. The evidence provides no per-tool read/write annotation, tool names, or parameters; it only confirms that the server ships tools plus the two resources
sonos://zonesandsonos://dj. - On the speakers themselves: the project states outright that “Nothing is installed on the speakers and nothing about them is changed”; that does not mean actions are free of side effects, however, and playback control is still a real change on the device. Whether local files and data beyond the speakers are read or written is likewise not stated in the evidence.
- Clients and entry points: the only agent hookup command given officially is the claude one; MCP transport supports streamable HTTP or stdio; how other clients connect is not stated in the evidence.
- Network and deployment: same-LAN is a hard premise; cross-network access depends on the tailnet, with an endpoint of the form
https://<mac>.<tailnet>.ts.net:8443/mcp, where the placeholders must be replaced with your own tailnet domain. Authentication and credential requirements are not stated in the evidence. - Version status: pre-release, no official release downloads, CI artifacts expire with the run, the official version will start at 0.1.0, and the upgrade path is not stated in the evidence.
- Not yet confirmed: MCP tool names and parameters, the authentication mechanism, whether reading resources triggers device actions, and undo mechanisms. These unknowns do not mean there is no risk; before letting an agent act on its own for the first time, keep its actions read-only, then widen the scope step by step.