The central courtyard for your self-hosted media stack. One Android app that fronts Sonarr, Radarr, Prowlarr, Bazarr, Seerr, Tautulli, Tracearr, Jellyfin, Emby, Plex, qBittorrent, Deluge, Transmission, rTorrent, SABnzbd, NZBGet, Glances, Speedtest Tracker, Beszel and dashdot - and routes every request through the right URL whether you're on the home Wi-Fi or out in the world.
Why
LunaSea (Flutter, GPL-3) was archived in 2024 and the niche is open. Atrium picks up that space with a modern Flutter codebase, a focus on multi-instance setups, and first-class handling of split local / external URLs.
Highlights
Multi-instance per service. Run two Sonarrs, three qBits, whatever
every instance is a first-class profile entry.
Dual-URL routing. Every instance has a LAN URL and a WAN URL. The app probes the LAN URL with a short timeout, caches the verdict per network, and falls back to WAN. You can pin Force-Local or Force-External per instance.
Activity feed. One tab aggregates live activity across every instance: active streams from Plex / Jellyfin / Emby / Tautulli and transfers (downloads and active uploads) from qBittorrent, Deluge, Transmission, rTorrent, SABnzbd, NZBGet, and the *arr queues.
Controller, not a player. Media servers are browse/manage/remote- control surfaces; playback stays with the official apps (deep links provided).
Wake-on-LAN. Store your machines (MAC / broadcast / port) in the profile and wake them from Settings; magic packets are sent with pure Dart UDP.
Reverse-proxy friendly. Global and per-instance custom HTTP headers (Authelia / Cloudflare Access style) ride every request.
Hardware-backed credentials. API keys live in the Android Keystore via flutter_secure_storage. Optional biometric unlock on launch. Profiles export/import as JSON (including WOL devices and headers).
Material 3 Expressive. Tonal cards, poster-palette theming, backdrop now-playing cards, and dynamic color throughout.
F-Droid first. Reproducible build; no proprietary blobs and no runtime-fetching dependencies.