Getting connected
When you first open Baton, it asks you to connect to your music server.
- Sign-in method: either a username & password (the classic Subsonic sign-in; Baton never sends your password in the clear, using the salted-token scheme Subsonic servers expect), or an API key if your server (e.g. a recent Navidrome) supports one.
- Server URL: the full address of your server, e.g.
https://music.example.com. - Username (password mode only) and your password or API key.
- Click Connect. Baton verifies the connection before saving anything. If it works, your library loads in place; if not, it tells you why so you can fix the URL or credentials.
Your credentials are stored in the macOS Keychain, never in a plaintext file.
Multiple servers. Open Settings ▸ Servers (⌘,) to add more than one server and switch the active one. Baton keeps each server's credentials separately in the Keychain and reloads the library when you switch; your existing single connection is carried over automatically the first time.
Browsing your library
The left rail gives you the ways into your library:
- Home (“For You”): a time-of-day greeting and tap-to-play shelves: Recently Played, “Because You Liked…” radio, Recently Added, Rediscover, and Your Mixes.
- Search: songs, albums, and artists at once.
- Mixes: auto-built mixes (Most Played, Fresh Additions, Top Rated, On Repeat, Forgotten Favorites, Discover) plus per-genre Daily Mix cards. Each has its own page to Play, Shuffle, Queue, or download the whole thing.
- Albums: sortable by newest, recently added, most played, name, artist, track count, duration, rating, or at random; grid or list.
- Artists: with bios and artist pages.
- Playlists: your server-side playlists: create, rename, reorder, delete, and add or remove tracks (reordering saves back to the server).
- Liked: everything you've hearted, split into Songs / Albums / Artists.
- History: your local play log: Recent, Top Tracks, and Top Artists, over This Week / This Month / All Time.
- Podcasts: the podcast channels your server hosts; episodes stream and queue just like tracks.
- Radio: your server's internet-radio stations; add, edit, or remove a station (name + stream URL).
- Downloads: everything saved for offline play, with total size on disk and an Offline-mode toggle.
Rating & liking. Tap the heart, or use the 5-star rating. Ratings are stored per-user on your server, so they follow you to any Subsonic client. Multi-select: shift-click a range, ⌘A to select all, then apply batch actions (like, queue, download).
Playing music
The Now-Playing bar
A persistent bar sits at the bottom of the window with the scrubber, transport controls, volume, the queue, a sleep timer, and the AirPlay picker. Collapse it to a slim strip to reclaim space (⌘⌃J) and expand it again the same way.
Full-screen Now Playing
Big artwork, an adaptive backdrop tinted from the album art, a waveform scrubber (for downloaded tracks), and side panels for Queue, Lyrics (synced karaoke-style when your server has them), and Related tracks. Space plays/pauses, Esc exits.
The floating mini-player
A borderless, always-on-top mini-player window (⌘⌥M): a compact card with the current track, artwork, scrubber, rating, and Up Next that you can keep in a corner while you work. On macOS 26+ it uses Liquid Glass.
Queue & modes
Drag to reorder, remove tracks, or clear the queue; Baton remembers it between launches and restores it paused. Shuffle keeps the current track playing and restores order when turned off. Repeat is Off / All / One. Continuous radio tops up the queue with similar tracks as you near the end.
Sleep timer
Set a timer from the Playback menu, or choose End of Track. Baton fades out gently (about 5 seconds) rather than cutting off.
Gapless, crossfade & sound quality
- True gapless playback. Live albums and continuous mixes play with no silence between tracks. Baton pre-loads the next track (even prefetching network streams to disk); you can limit prefetch to Wi-Fi to avoid eating a metered connection.
- Crossfade. Optionally overlap the end of one track into the next. (Crossfade and true-gapless are mutually exclusive: one overlaps, the other abuts.)
- Loudness normalization (ReplayGain / R128). Even out volume across tracks or albums, using your server's ReplayGain data, with an adjustable preamp.
- Parametric equalizer. Open Audio ▸ Equalizer (⌥⌘E) for a multi-band EQ where each band's frequency, Q, and gain are adjustable, with a live response curve and presets. Off by default, and bit-exact pass-through when off.
Downloads & offline
Baton can download tracks, albums, mixes, or playlists to a folder on your Mac and play them from disk, useful for gapless quality without re-streaming and for keeping favorites local. Downloaded tracks are preferred over streaming automatically.
The Downloads tab manages everything you've saved: total size on disk, play or delete any download, and a global Offline mode that keeps playback on local files.
Scrobbling
Baton can report your listens to your Navidrome/Subsonic server (updating its play counts) and to ListenBrainz and/or Last.fm if you add your account tokens. A track scrobbles once you've played about half of it (capped at a few minutes for long tracks), matching the usual convention.
Media keys & AirPlay
- Media keys & Bluetooth remotes: the F7/F8/F9 keys and Bluetooth remote play/pause/next/previous/seek all control Baton, and the current track shows up in the macOS Now Playing widget.
- AirPlay: use the AirPlay picker in the Now-Playing bar to send audio to an AirPlay device. (Chromecast / Sonos / UPnP casting is planned.)
Keyboard shortcuts
From the Playback menu, available anywhere in the app:
| Action | Shortcut |
|---|---|
| Play / Pause | ⌘⌃P |
| Next track | ⌘⌃ Right |
| Previous track | ⌘⌃ Left |
| Volume up / down | ⌘⌃ Up / ⌘⌃ Down |
| Mute / Unmute | ⌘⌃M |
| Minimize / expand player bar | ⌘⌃J |
| Open mini-player | ⌘⌥M |
| Equalizer | ⌥⌘E |
| Servers | ⌘, |
The Playback menu also holds Shuffle, Repeat, and the Sleep Timer. In the full-screen player, Space toggles play/pause and Esc exits; in browse lists, ⌘A selects all.
Let an agent control your music
This is what makes Baton different from every other Subsonic player: it can be driven by software, not just by you clicking buttons. Baton hosts a small control server on your Mac that speaks MCP (the Model Context Protocol), the same protocol Claude and other AI agents use to talk to tools. So you can say things like:
- “Put on a 40-minute instrumental focus set.”
- “What's playing? Like it.”
- “Make a playlist of everything I liked this month.”
- “Turn it down” / “skip this” / “play some jazz.”
…and the agent carries them out in Baton, searching your library, building a queue, starting playback, rating tracks, and creating playlists. The control surface exposes the same operations Baton's own UI uses, so anything the agent does is something you could have done by hand.
How it's secured: the control server listens only on your own machine (loopback) and every request must present a secret token Baton generates. No token, no access.
How Tonebox uses it. When you start dictating or recording in Tonebox, it can ask Baton to duck the music and bring it back afterward, but only if you didn't change playback yourself in the meantime. This “audio-focus” hand-off is a first-class part of Baton's control interface. One agent-native operation worth calling out is music_build_mix: an agent hands Baton a free-text request (“upbeat 40-minute focus mix”) and Baton assembles a set from your library that lands close to the requested length, then queues it or saves it as a playlist.
music_build_mix and the audio_suspend / audio_resume focus hand-off), publishes now-playing/queue as live resources, and writes a discovery file at ~/Library/Application Support/Baton/mcp.json with the endpoint URL and token. A menu-bar mini-controller ships too.
Updates
Baton updates itself using Sparkle (the standard macOS updater). It checks against Baton's own update feed and installs signed, notarized builds; you never reinstall by hand.
Roadmap
Now in Baton (recently landed): Podcasts and Internet radio tabs, a Downloads / offline manager, a parametric Equalizer, multiple servers / account switching, and the agent-native music_build_mix.
Still ahead (called out so the docs stay honest):
- iOS / iPadOS companion: listen away from the desk.
- Casting beyond AirPlay: Chromecast, Sonos, and UPnP/DLNA. (AirPlay works today.)
- Sonic-analysis mixes: built from the sound of your music (tempo/energy/key), not just play history.
- Crossfeed / additional DSP and a lyrics fallback when your server has none.
FAQ
Is Baton free?
Yes, a give-away from Tonebox. No subscription, no catalog rent; you're playing music you already own on a server you already run.
How is Baton different from Tonebox?
Two products from the same maker. Tonebox is a paid, local-first notes app that records and transcribes meetings and voice notes. Baton is the music player, pulled out into its own free app. Tonebox can control Baton (for example, ducking the music while you dictate), but you don't need Tonebox to use Baton.
What servers work with Baton?
Navidrome and any Subsonic-compatible server. Baton speaks the Subsonic API, so most self-hosted music servers in that family work. It has no catalog of its own; there's nothing to browse until you connect a server.
Is my password safe?
Yes. Credentials live in the macOS Keychain, never in a plaintext file. With username & password sign-in, Baton uses the salted-token scheme Subsonic expects, so your password isn't sent in the clear on each request.
Does Baton phone home?
No. Baton talks only to the music server you point it at, plus the scrobbling services (ListenBrainz / Last.fm) and its own update feed if you turn them on. It has no catalog server of its own to call.
Is the control server a security risk?
No, by design. It listens only on your own Mac (loopback), so it isn't reachable from your network, and every request must carry a secret token Baton generates. Both are required.
Do I need an agent to use Baton?
No. Baton is a complete, click-to-play music player on its own. Agent control is an extra surface, not a requirement.
Does Baton work offline?
Yes, for downloaded music. Download tracks, albums, mixes, and playlists and play them from disk without re-streaming; the Downloads tab manages them, with a global Offline mode. Browsing new content and streaming still need your server to be reachable.
Can I cast to speakers?
AirPlay works today, from the AirPlay picker in the Now-Playing bar. Chromecast, Sonos, and UPnP/DLNA are planned.
What platforms does Baton run on?
macOS (15 or later). An iOS / iPadOS companion is on the roadmap; Windows and Linux clients are not planned.