Usage Guide

This guide covers day-to-day usage of soundspan: setup, navigation, playback behavior, and administration.

For deployment and installation, see DEPLOYMENT.md. For configuration and security, see CONFIGURATION_AND_SECURITY.md.

First-Time Setup

  1. Create the first account (this user becomes admin)
  2. Optionally configure integrations (see INTEGRATIONS.md)
  3. Wait for initial library scan and enrichment

Moving from another server? Instead of creating an account, select Restore from a backup on the first-run screen and upload a backup from the old server's Admin page. Everything in its database comes back: accounts, settings, playlists, history, and the analyzed library. See BACKUP_AND_RESTORE.md.

Home and Search

Sharing a song

Every track's menu has Copy link to song. The link opens the album page with that song highlighted and starts playing it. On a brand-new device the browser may ask for one tap before audio starts.

Your Library

The Library page lists your music as Artists, Albums, and Songs.

Where the music comes from

When peer servers or a streaming service are available, buttons above the list choose what to show:

Songs you liked on TIDAL or YouTube Music

When you like a song that plays from TIDAL or YouTube Music, it appears in your Library right away. A small TIDAL or YouTube badge marks it, so you can always tell it apart from your own files, and it plays from that service.

Adding a streaming song to your library

Open the song's menu (the ⋮ button at the end of the row). What it offers depends on the song's album and on who you are:

soundspan looks up MusicBrainz matches for the albums of your liked streaming songs in the background, about once an hour. A song whose album gets a sure match offers Add album to library or Request album, the same as a song on an album with a MusicBrainz match. The streaming album's page offers Download or Request for it too. An album without a sure match is checked again a week later, and a match is checked again after a month.

When your library already has the matched album, for example after you add it, soundspan does not offer that album again:

After the files arrive and the next library scan matches the song to them, only your own copy shows, without the badge.

Artist Playback Order

Artist-level Play queues owned albums newest-to-oldest, with track ordering by disc and track number.

Podcast Behavior

Playing an older podcast episode creates a forward-only queue of newer episodes; starting the latest episode plays just that episode. If a queue is already active, the episode (and its not-yet-queued newer episodes) is inserted after the current item instead of replacing the queue, so anything you queued stays queued.

Podcast episodes and music tracks share one mixed-media play queue: while an episode plays you can queue tracks behind it (and vice versa) with "Add to queue" / "Play next", and skip controls and auto-advance move through the combined queue. Listen Together sessions remain music-only.

Video podcasts work too. When an episode is published only as a video (MP4, M4V, or WebM), soundspan plays its sound like any other episode; the picture is not shown. If an episode comes in both audio and video versions, soundspan uses the audio version. Video files are much larger than audio files, so these episodes take longer to cache and use more disk space.

Playback Settings

Configure stream/transcode quality and cache behavior in Settings.

Player quality badges show active source details (codec/bitrate or bit depth/sample rate).

Volume Leveling

Volume leveling evens out loudness differences between songs so you do not reach for the volume knob between a quiet 90s master and a modern loud one. It is on by default in Automatic mode: albums played front-to-back keep their intended dynamics, while shuffle, radio, and mixed queues are leveled per song. Set it to By track, By album, or Off under Settings -> Playback -> Volume leveling. Leveling only turns loud songs down and gives quiet songs a small, clip-safe boost; songs the analyzer has not measured yet play unchanged until the background measurement catches up.

Scrobbling

Scrobbling sends the music you play in soundspan to your listening-history service. Each user connects their own accounts under Settings -> Scrobbling. Two services are supported:

Once connected, each service has its own on/off toggle, so you can pause forwarding without disconnecting. Disconnect removes the stored credential.

What gets sent: finished tracks (scrobbles) and now-playing updates, for music you play in the app or through a connected Subsonic client. Scrobbling never delays or blocks playback — if a service is down, deliveries retry in the background and are dropped after repeated failures. If a service rejects your stored credential, the connection is switched off and you are asked to reconnect.

Social and History

Requesting Music

Non-admin users cannot download music directly. Instead, they can ask for it.

Asking for an album

Following your request

Open My Requests from the avatar menu, or from the side menu on a phone. Each request shows where it stands:

Status What it means
Pending No admin has reviewed it yet. You can cancel it.
Approved An admin approved it. The status updates within a few minutes.
Approved — queued An admin approved it. The download waits for its turn.
Approved — downloading The album is downloading now.
In your library The album arrived. Open album takes you to it.
Declined An admin said no. Their reason shows on the row when they gave one.
Failed The download did not finish. An admin can retry it or decline it.
Cancelled You cancelled it.

The button on the album page follows along too: Requested, then Approved, then Downloading.

You get a notification when your request is approved, declined, or failed, and when the album is in your library. The library notification opens the album page. A failure notification says whether the download failed or was stopped before it finished.

Reviewing requests (admins)

The Requests entry in the avatar menu shows how many requests are waiting. On the Requests page:

A download that starts when an admin approves a request gets only the album that was asked for. It never falls back to a different album by the same artist; when no source has the album, the request fails. If the album is already downloading for another reason when the request is approved, the request follows that download instead.

Limits

On the default recommendation mode, Discover Weekly playlists generate for everyone from music the server already has and never download albums. The legacy download-based mode is admin-only.

Keyboard Shortcuts

Key Action
Space Play / Pause
N Next track
P Previous track
S Toggle shuffle
M Toggle mute
Arrow Up Volume up
Arrow Down Volume down
Arrow Right Seek forward 10 seconds
Arrow Left Seek backward 10 seconds

Administration

Admins can manage users, integrations, downloads, enrichment automation, queue dashboards, and API keys.

Common admin areas

Backups

Admin → Backup downloads a backup of everything in the database. Type a passphrase of at least 12 characters twice, then select Download backup. Keep the passphrase: the backup can't be restored without it. Music files are not in the backup. To restore, deploy a fresh soundspan and select Restore from a backup on its first-run screen. BACKUP_AND_RESTORE.md lists what a backup restores and what you lose since the last one.

Album downloads

Album downloads run through a queue. One album downloads at a time across the whole server, and the queue survives restarts — queued albums resume where they left off.

Technical admin configuration and security notes are in CONFIGURATION_AND_SECURITY.md.

Sharing libraries between servers (Federation)

Federation lets two soundspan servers share their music libraries. Sharing is read-only: a connected server can browse and stream your library, but it can never change it.

Every connection has two separate roles:

Each direction is set up on its own. There is no single "two-way" switch. This is deliberate: each step tells you clearly whether it worked, so a connection can never half-succeed without you knowing.

Both controls live on the Admin page under Federation. Federation must be enabled on both servers. The server that shares its library must be reachable from the other server over HTTPS; for two-way sharing that means both servers need an HTTPS address the other can reach.

Share your library with a friend

  1. Open Admin -> Federation -> Share my library.
  2. Enter a name for the server you are sharing with. Tick the embeddings box if you also want to share the data behind vibe features.
  3. Click Issue credential. The token is shown once — copy it before closing the dialog.
  4. Send the token to the other admin, along with your server's URL. Once they connect, your server shows them under Sharing to them.

Online-status sharing is built into every connection, but it is private by default. A user only appears in the other server's Social tab if they turn on Share online presence in their own Social settings — one switch covers this server and its peers. Remote users always show under a From <server name> heading, so it is clear they are on another instance.

If a token is lost or leaked, use Rotate on that peer's card to issue a fresh one, or Revoke to cut off access.

Connect to a friend's library

  1. Ask the other admin to issue a credential for you and send you the token, plus their server URL.
  2. Open Admin -> Federation -> Connect to a library.
  3. Enter a name for their server, their server URL, and the token.
  4. Click Connect with token. Their library appears in your search and browse surfaces after the first sync.

If the connection fails, the error tells you why: the token was rejected, the server was unreachable, or its certificate failed validation. Each of these has a different fix, so read the message before retrying.

Two-way sharing

Two-way sharing means both servers do both steps:

  1. You issue a credential for them, and connect to their server with the token they issued for you.
  2. The other admin does the same on their side.

That is four steps across the two servers. Each peer's card shows the two directions separately — Sharing to them and Consuming from them — so you can always see exactly which halves are active, offline, or revoked. A peer card without a URL shows No remote URL — they connect to this server: that is a server you share to, so the connection always comes from their side.

Instance display name

By default your server introduces itself to peers using its hostname, which in container deployments can look like soundspan-backend-84975bdf86-h27qt. Set a friendly name in Admin -> Federation -> Instance display name before you issue or accept a credential so the other side sees something readable.

Health and diagnostics

The federation health panel shows per-peer sync freshness, stream usage, and the class of the last failure (unreachable, TLS, authentication, or invalid response). It also shows whether vibe embeddings are federating with each peer; if the peers run different embedding spaces, the panel says so and the fix is upgrading the out-of-date server.

Social sharing between servers (Federation)

If your server is federated with others, two social surfaces can cross between them: online status and public playlists. Sharing follows the same choices you already made for this server — share your presence, or make a playlist public, and it applies to peers too. Nothing extra is shared behind your back, and presence is still off by default.

Seeing friends on other servers. When your server is federated, the Social tab gains sections like "From Family server" listing people on that server who chose to share. Peer status updates every few minutes — the tab shows how fresh each section is. To appear on other servers yourself, turn on Share online presence in Settings -> Social — the same switch that shows you on this server. Your current track travels only if Share listening status is also on.

Playlists from other servers. Public playlists are shared automatically between federated servers — public means public, on this server and its peers. Private playlists never leave your server; make a playlist private to stop sharing it. Peer playlists show up right alongside your own: in the sidebar playlist list and on the Playlists page, each marked with a small badge naming the server it comes from. Use the All / Local / Peers buttons on the Playlists page (or the sidebar's filter menu) to narrow the view, and the "From your peers" section on Home for a quick look. Open one to play it, Follow it (it stays live and updates when the owner changes it), or Save a copy (a snapshot that becomes a normal playlist of yours). Tracks you also have locally play from your library; the rest stream from the peer, and anything the peer can no longer provide is shown dimmed.

When you opt in, the other server sees your username or display name — that is how friends recognize you. What never crosses servers: your listening history, your private playlists, your email, and your login details. Servers only exchange what the people involved explicitly chose to share.


See also