Dashboarr

Dashboarr

One mobile app for your whole self-hosted media stack.

Your phone talks straight to your own servers over each service's official API. No accounts, no cloud, no tracking. Free and open source.

App Store Google Play Read the guide
Source on GitHub Download APK (sideload) Support on Ko-fi
19Services
25Widgets
0Accounts
GPL-3.0Open source

Features

Built for people who actually run this stack, not for a screenshot.

Multiple dashboards

Create as many workspaces as you like. Each gets its own widgets, icon, accent colour, bottom-bar tabs and its own subset of servers, so a "Home" and a "Cabin" dashboard can show completely different stacks.

26 widgets

Queues, calendars, disk space, stream activity, server stats, health alerts and more. Place the same widget twice with different settings to watch two servers side by side.

Multiple instances

Two qBittorrents, a 4K and a 1080p Radarr, a separate anime Sonarr. Switch in-tab and aggregate on the dashboard.

Smart local and remote URLs

Give each service a LAN address and an internet address. On your home WiFi the app uses the fast local one, and away it switches to remote, never leaking a LAN URL onto a stranger's network.

No backend required

Connects straight to your services. Your data stays between your phone and your servers.

Push notifications

Optional self-hosted backend for lock-screen pushes when a download finishes, media is imported or a service goes offline. Fan out to Discord, Telegram, ntfy or email via Apprise.

Secure storage

API keys live in the device Keychain or Keystore. No cloud, no accounts, no analytics, no ads.

Reverse proxy friendly

Sub-paths, self-signed certificates and custom auth headers are all supported, globally or per service instance.

Global search

One search box across Radarr, Sonarr, Lidarr, Seerr, Prowlarr and Jackett, with each section loading independently. Titles already in your library match on the device and show up first, before any lookup returns.

Unified calendar and activity

Sonarr air dates and Radarr releases in one month grid. Live streams and history merged across Tautulli, Tracearr, Jellystat, Jellyfin and Emby.

Magnet link handler

Tap a magnet link anywhere and send it straight to qBittorrent, rTorrent or Transmission.

Encrypted config backup

Export every service, credential, dashboard and widget into one passphrase-encrypted file, gated behind your device biometrics. Import it on a new phone.

Wake-on-LAN

Wake a sleeping server straight from the Services tab.

Accessible by design

Five dark themes and three UI scales that resize the entire interface, including icons and poster grids.

Demo mode

Explore the whole app with realistic sample data before you connect a single server.

Supported services

Nineteen integrations, each talking to its own official API. Enable only what you run.

qBittorrent

Queue, pause, resume, delete, categories, speed limits

rTorrent / ruTorrent

Queue, pause, resume, delete, add, speed limits

Transmission

Queue, files, speed limits, turtle mode

SABnzbd

Usenet queue, history, add NZB by URL or file

NZBGet

Usenet queue, history, add NZB by URL or file

Radarr

Library, search and add movies, queue, wanted

Sonarr

Library, add shows, episode monitoring, calendar

Lidarr

Library, add artists, album monitoring, queue

Prowlarr

Indexer status, search across indexers, grab, stats

Jackett

Search across all indexers, send releases to your torrent client

Seerr

Discover, request, approve. Overseerr and Jellyseerr

Plex

Now playing, recent, on deck, libraries

Jellyfin

Now playing, recent, continue watching, libraries

Emby

Now playing, recent, continue watching, libraries

Tautulli

Active Plex streams, bandwidth, history, stats

Tracearr

Plex, Jellyfin and Emby streams and history

Jellystat

Jellyfin watch history, stats and charts

Bazarr

Wanted subtitles, history, on-demand search

Glances

CPU, memory, GPU, disks, network, containers

unRAID

Container start/stop, array and disk health

Missing one? Most of these exist because someone opened an issue asking for it.

Frequently asked questions

The questions that come up most often on the issue tracker.

Do I need a server or backend to use Dashboarr?

No. Dashboarr talks directly from your phone to your own services and works fully on its own. The optional self-hosted backend exists for one thing: real push notifications on your lock screen while the app is closed. Without it notifications still fire, but only while the app is open.

Do I have to expose anything to the internet?

No. If you only use the app at home, local URLs are enough. For remote access, give each service a remote URL through your reverse proxy, VPN or tunnel.

Even the optional notification backend does not need to be exposed. It needs outbound internet access and to be reachable by your phone on your LAN. Pushes still arrive over cellular because they go out through the standard Apple and Google push infrastructure.

Why do my services show as offline when I am sitting at home?

This is deliberate. With network auto-switch on, Dashboarr uses a service's local LAN URL only once it has confirmed you are on one of your saved home WiFi networks. Anywhere else it uses your remote URL and never falls back, because a 192.168.x.x address on an unknown network could belong to a stranger and would leak your API key.

If it cannot read your WiFi name it plays it safe and stays remote. Grant Location permission (required on both iOS and Android just to read the network name), enable Precise Location on iOS, and add your network under Settings, Network, Home Networks. There is a diagnostics panel on that screen that tells you exactly what the app currently sees.

Why does the app ask for Location permission?

Only to read your WiFi network name, so it can tell "I am home, use the LAN address" apart from "I am out, use the remote address". Both iOS and Android gate the network name behind Location. Nothing about your location leaves the device, and there is no location tracking or logging of any kind.

Does it work over Tailscale, WireGuard or a VPN?

Yes, two ways. The simplest is to address your services by their Tailscale or MagicDNS name, turn on "Always use Remote URL" and leave the local URL empty. One address that works on WiFi and on cellular, with no home-network setup at all.

Alternatively turn on Settings, Network, "Treat VPN as home" so local URLs are used whenever a VPN is connected. The app can only detect that some VPN is up, not which one, so only enable that if your VPN actually reaches your home network.

Does it support reverse proxies, sub-paths and self-signed certificates?

Yes to all three. Enter your proxied URL including any sub-path, such as https://media.example.com/radarr, and the app appends the API path itself. Each service instance has an "Allow invalid certificates" toggle for self-signed setups, plus a Custom Headers section for proxies that need their own headers, and a global header list under Settings, Network.

One caveat: forward-auth SSO such as Authentik or Authelia is cookie based, so headers cannot help. Exclude the API path from the proxy instead (^/api for the *arr apps, since the connection test goes through /api/v3/system/status). That is safe, because those APIs are already protected by their own API key.

Can I run more than one of a service, or more than one dashboard?

Yes to both. Every service supports multiple instances, so two Sonarrs, a separate anime stack or a second household all work. You can also create as many dashboards as you like, each with its own widgets, icon, accent colour, bottom-bar tabs and its own subset of service instances.

Where are my API keys stored, and does anything phone home?

API keys live in your device's secure store (iOS Keychain, Android Keystore) and the rest of your configuration in local app storage. There are no accounts, no analytics, no ads and no tracking, and there is no analytics or crash-reporting SDK in the app at all. Requests to your media services go straight from your phone to your own servers, and config backups are always encrypted with a passphrase you choose.

A few things do reach the internet by design, and the privacy policy lists them all: posters load from TMDB's image CDN, Plex sign-in talks to plex.tv, and the app checks the store (or GitHub) and Expo's update service for new versions. None of that carries your credentials.

Push notifications, if you opt into the self-hosted backend, are delivered via Expo and then Apple or Google, so the notification title and body pass through them, exactly as for any app that can wake a locked phone. The backend itself stays on your hardware, though pairing does upload your service URLs and keys to it so it can do the watching.

How do notifications work, and why do I get two for one download?

Without the backend, the app watches your services and raises notifications while it is open. With the backend, the watching happens server-side and pushes arrive with the app closed.

Two notifications for one download is expected rather than a bug: your download client reports "Download complete" when the file finishes, and Radarr or Sonarr reports "Movie downloaded" or "Episode downloaded" a minute later when it imports into the library. Turn either one off under Settings, Notifications, globally or per instance.

I paired the backend but nothing arrives.

Check in this order. The master switch under Settings, Notifications must be on. The backend only notifies about events that complete after it starts, so a download that already finished is treated as seen, which is why testing with an old download looks broken. For Radarr, Sonarr and Seerr, send the webhook test event from the service itself: it should produce a confirmation push. Bazarr and Tautulli webhooks are ingested and logged today but do not raise a push yet.

Test Connection passes but the screen is empty or errors.

Almost always the wrong port. The connection test succeeds against whatever is listening, then the API path fails. Check the service's real port, and make sure the URL is the bare origin with no /api/... suffix, since the app adds that itself.

Can I move my setup to a new phone?

Yes. Settings, Backup & Storage, Export settings writes one encrypted file containing every service, credential, dashboard and widget. Import it on the new phone.

Two things cannot travel in a file: OS permissions, so grant Location and Notifications again, and your device's push token. The backup does restore the backend URL and pairing secret, so the new phone will look paired, but the backend is still pointed at the old device, so re-pair from Settings, Backend to make notifications land on the new phone. Saved home networks also drop any pinned access-point MAC on import, since those never match across phones.

Is it free? Where is the source?

Dashboarr is free and open source under GPL-3.0, with no accounts, subscriptions, ads or in-app purchases. The source lives at github.com/RenzoBeux/Dashboarr. It is on the App Store, on Google Play, and available as a signed APK attached to each GitHub release for sideloading on de-Googled Android.

Ready to set it up?

The guide walks through a first-time setup in the order you will actually do it.

Expo SDK 54 React Native TypeScript GPL-3.0

Star history

Star history chart for Dashboarr