A simple, open-source music ecosystem

Agro is the server behind Wanda on Android and Wander on the desktop. Both apps play your music on their own; connect them to Agro and they share handoff, jam rooms, friends and stats. Open source under AGPL-3.0.

Wanda's player
An album page in Wanda
hub What's what

One server, two apps

Wanda and Wander are the players. Agro is the optional server that connects them to each other and to your friends.

dns
Server
Agro

A small Rust server with a web dashboard. It carries handoff, jam rooms, friends, shared playlists, share links and stats from every device. Host it yourself or sign in to Agro Cloud.

AgroUPlus/Agro →
android
Android app
Wanda

The music player for your phone. Navidrome/Subsonic, local files, YouTube Music and Deezer in one library, with lyrics, song recognition and playlist import. Works without Agro.

AgroUPlus/Wanda →
terminal
Desktop app
Wander

A terminal music player for Linux. Navidrome/Subsonic and local files in one queue, with cover art, lyrics and visualisers. Works without Agro.

AgroUPlus/Wander →
Wanda's home screen with quick picks
A daily mix from Navidrome
Listening stats
insights Wanda on Android

A player that knows your taste

Wanda brings listening stats, a yearly recap and daily mixes, and moves freely between local files, Navidrome/Subsonic libraries and streaming sources.

Stats are worked out on the phone and never leave it. Connect Agro and you can choose to see them across every device on your account. No telemetry, ever.

auto_awesome Capabilities

Built for every side of your listening

Each card says which part does the work.

What Agro adds Needs an Agro server: your own, or Agro Cloud

Wander on a desktop beside two Wanda phones showing stats and the player
dns Agro · Cross-device

Pick Up Where You Left Off

Move what's playing from Wander on your computer to Wanda on your phone, with the queue and position intact. Listening stats add up across every device on your account.

  • check_circleQueue & position handoff, both ways
  • check_circleStats & settings synced across devices
Wanda's friends list, a jam room and a shared playlist's edit settings
dns Agro · Social

Jam Rooms, Friends & Shared Playlists

Start a jam, share the code, and everyone hears the same track. Let friends add to a playlist with you. They see what you're playing only if you turn it on, encrypted for each friend.

  • check_circleShared queue, voting and Jam Radio
  • check_circlePlaylists only you, friends, or anyone can edit
  • check_circleEvery social switch off by default

What Wanda does on its own No server needed

Wanda showing a Navidrome daily mix, an artist page and search across sources
android Wanda · Library

Four Sources, One Library

Navidrome/Subsonic, files on your phone, YouTube Music and Deezer show up as one library with one search and one queue. The same song from two sources appears once.

  • check_circlePlays the best-quality copy available
  • check_circleDaily mixes & radio made on the phone
Wanda importing a playlist, recognising a song and showing synced lyrics
android Wanda · Tools

Recognition, Lyrics & Import

Hear something you like? Wanda matches it against your own library, right on the phone. Synced lyrics follow along, and playlists from Spotify, Deezer or YouTube Music come in with a link.

  • check_circleSong recognition without the cloud
  • check_circleLRCLIB lyrics only if you allow it
verified_user Security

Private by default. Safe by design.

key
Zero-knowledge Vault

Metadata and credentials are sealed client-side before touching the wire. The server stores ciphertext and holds zero keys.

fingerprint
Strong Credential Model

Passphrases hashed using Argon2id. Scoped device tokens are 256-bit CSPRNG, stored strictly as SHA-256 hashes.

shield_lock
Cryptographic Isolation

Presence and listen-along streams are individually encrypted per recipient public key, preventing any server leakage.

rocket_launch Deployment

Two ways in

Run the binary yourself, or sign in to the hosted instance. Either way the clients, keys and libraries behave identically.

Self-host binary
Run your own server

One lightweight binary with embedded SQLite. Run it in Docker or install it natively, no build needed.

# Docker
docker run -d --name agro -p 8700:8700 \
  -v agro_data:/opt/agro/data \
  -v ~/Music:/srv/music:ro \
  ghcr.io/agrouplus/agro

# Or native on Linux (no root)
curl -fsSL https://raw.githubusercontent.com/AgroUPlus/Agro/main/scripts/install.sh | sh

Then open localhost:8700 and paste the one-time setup token from the log (docker logs agro) to create your admin account.

Full guide & building from source →