Skip to content

About

Umbrel community app store: 30+ self-hosted apps for the *arr media stack (Radarr/Sonarr companions, subtitles, transcoding, IPTV) plus MCP servers to drive them from AI assistants. Auto-updated by Renovate, every update verified on a real umbrelOS.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Latest commit

 

History

728 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mathieu's Umbrel App Store

*Self-hosted apps for umbrelOS that round out a arr / Plex / Jellyfin setup. Companions for Radarr and Sonarr, torrents behind a VPN, watch trackers, live TV, and MCP servers to drive it all from an AI assistant.

Validate apps umbrelOS Renovate Claude Code

The store in umbrelOS

✨ Apps

🎬 Around Radarr and Sonarr

  • 🪢 arrglue: finds every *arr app on the Umbrel, checks their links, paths and hardlinks, then creates or repairs the links (plan / apply) · made here
  • 🎚️ Profilarr: quality profiles and custom formats from curated TRaSH-style databases, synced to every *arr
  • 🧽 Cleanuparr: removes stalled, failed and orphaned downloads from the queues, then searches again
  • 🔎 NeutArr: searches for missing and below-cutoff items a few at a time (the maintained Huntarr fork)
  • 🩺 Healarr: finds corrupt files, deletes them, re-downloads through Sonarr / Radarr and checks the replacement
  • 📦 Unpackerr: extracts .rar / .7z / .zip downloads so Radarr, Sonarr and Lidarr can import them
  • 🍿 Boxarr: the weekly box office top 10, synced with Radarr
  • 📋 Pulsarr: Plex watchlists → Sonarr / Radarr in real time, for you and your friends
  • 🎞️ Trailarr: trailers next to your movies and shows, played by Plex / Jellyfin / Emby
  • 🛡️ Byparr: Cloudflare-bypass proxy for Prowlarr / Jackett, a drop-in FlareSolverr replacement
  • 📊 Sortarr: Prowlarr indexer priorities from your real ratio, buffer and freeleech on each private tracker

🧹 Library cleanup

  • 🗂️ Maintainerr: rule-based cleanup for Plex, with a "Leaving Soon" collection
  • ♻️ Reclaimerr: rule-based cleanup for Jellyfin, Plex and Emby, with protect / delete requests
  • 🗑️ Shredarr: delete it in Jellyfin or Plex, it's gone from Sonarr / Radarr / Seerr and the torrent client once seeded

📚 More libraries

  • 🧩 Scryer: a whole *arr stack (movies, series, anime) in one binary
  • ⚽ Sportarr: a PVR for sports leagues and events
  • 🦸 Kapowarr: comic book library manager
  • 📖 Chaptarr: ebooks and audiobooks, the Readarr successor
  • 📰 Weaver: Usenet downloader with PAR2 repair and extraction built in

⬇️ Downloads and VPN

  • 🔒 qBittorrent VPN: qBittorrent behind Gluetun (any provider), kill switch and forwarded peer port; replaces Transmission for the *arr apps
  • 🔒 Transmission VPN: the same for Transmission
  • 🌐 Gluetun: your VPN as a password-protected HTTP proxy, for the apps you choose
  • 🌱 cross-seed: seeds what you already have on your other trackers, no extra disk space
  • 🔁 D3X: V3X tracker's companion: cross-seed, publish, hit-and-run tracking
  • 🎵 slskd: Soulseek client with a web UI
  • 🎶 Soularr: Lidarr's wanted list → slskd → Lidarr

🗣️ Subtitles and files

  • 🌍 Lingarr: translates subtitles (LibreTranslate, DeepL, OpenAI…)
  • 💬 Sublarr: subtitle manager and LLM translator, a Bazarr + Lingarr alternative
  • ✂️ Muxarr: strips unwanted audio and subtitle tracks without re-encoding
  • ⚙️ Tdarr: automated transcoding and library health checks

🖼️ Plex and Jellyfin

  • 🏠 Agregarr: Plex Home collections from Trakt, IMDb, Letterboxd, Top 10s…
  • 🎨 Posterizarr: consistent posters and title cards for Plex
  • 🏷️ Labelarr: TMDb keywords → Plex labels
  • 📈 Tracearr: monitoring for Plex, Jellyfin and Emby, with account-sharing detection
  • 💡 lueur: Ambilight for Jellyfin with Philips Hue, no Sync Box · made here
  • 🤔 SuggestArr: recommendations from your watch history, requested through Seerr
  • 🔗 Spotarr: share a reel from your iPhone, get the movie or show through Seerr · made here
  • 🔔 Notifiarr: Discord notifications and TRaSH sync for the whole stack

📺 Live TV

  • 📡 Dispatcharr: IPTV playlists and guides, served as an HDHomeRun tuner
  • 📺 Tunarr: live channels built from your own library

🛋️ Watch tracking

  • 🛋️ Snug: a cozy tracker for the TV series you're watching · made here
  • 🎮 Ryot: movies, shows, books, games and workouts in one tracker
  • 🎬 Scrob: your own Trakt, synced with Jellyfin / Plex / Emby
  • 🍿 Sofa: your own Trakt / Letterboxd, with phone apps
  • 👀 Seek: phone-first tracker for shows, films and books

🤖 AI and MCP

  • 🧠 arr-mcp: one MCP server for Radarr, Sonarr, Prowlarr, Jellyfin, Plex, Seerr…
  • 🕸️ MetaMCP: one gateway for all your MCP servers
  • 🚪 agentgateway: one MCP endpoint for all your MCP servers, MCP Apps included
  • 🗃️ MCP Memory: long-term memory for AI assistants
  • 📰 FreshRSS MCP: your FreshRSS feeds as an MCP server
  • 🛡️ AdGuard MCP: your AdGuard Home as an MCP server
  • 🌉 Umbrel MCP Bridge: connects URL-only MCP clients (Home Assistant) to umbrelOS's MCP server
  • 🕷️ Crawl4AI: any web page as clean Markdown, screenshot or PDF, with an MCP server
  • 📓 Open Notebook: your own NotebookLM, with the AI of your choice
  • 🪽 Hermes Agent: Nous Research's self-improving agent, reachable from your phone

🧰 Other

  • 💓 Vitals: your media stack's health as one JSON API, for your own dashboard · made here
  • 🛰️ Traccar: GPS tracking for phones, cars and trackers, with Home Assistant support

🚀 Install

  1. In umbrelOS, open the App Store, then ⋯ (top right) → Community App Stores.

  2. Add this repository's URL:

    https://github.com/mathieuletyrant/umbrel-community-app-store
    
  3. Open Mathieu's Umbrel App Store and install any app. Each listing says how to set it up.

Note

Community app stores are third-party: only add stores you trust, their apps run on your own hardware.

🔗 Connecting apps

The apps of this store don't wire themselves to your other apps: you connect them in each app's settings. Apps on your Umbrel reach each other by these addresses (copy them from here):

App Address API key
Radarr http://radarr_server_1:7878 Settings → General
Sonarr http://sonarr_server_1:8989 Settings → General
Lidarr http://lidarr_server_1:8686 Settings → General
Readarr http://readarr_server_1:8787 Settings → General
Prowlarr http://prowlarr_server_1:9696 Settings → General
Bazarr http://bazarr_server_1:6767 Settings → General → Security
Jellyseerr http://jellyseerr_server_1:5055 Settings → General
Overseerr http://overseerr_server_1:5055 Settings → General
SABnzbd http://sabnzbd_web_1:8080 Config → General
Tautulli http://tautulli_web_1:8181 Settings → Web Interface
Transmission http://transmission_server_1:9091 (RPC: /transmission/rpc) none
Transmission VPN http://mathieu-transmission-vpn_gluetun_1:9091 (RPC: /transmission/rpc) none
qBittorrent VPN http://mathieu-qbittorrent-vpn_gluetun_1:8080 admin and the app's default password (umbrelOS)
Gluetun (HTTP proxy) host mathieu-gluetun_gluetun_1, port 8888, username proxy its default password
Plex http://host.docker.internal:32400 your Plex token
Jellyfin http://jellyfin_server_1:8096 Dashboard → API Keys
Crawl4AI http://mathieu-crawl4ai_server_1:11235/mcp/sse (MCP) its default password (bearer token)
Hermes Agent http://mathieu-hermes_server_1:8642/v1 (OpenAI-compatible API) its default password
Traccar http://mathieu-traccar_server_1:8082 a Traccar account (email and password)
SearXNG http://searxng-web:8080 none
Ollama http://ollama_ollama_1:11434 none
Healarr http://mathieu-healarr_server_1:3090 its settings
Cleanuparr http://mathieu-cleanuparr_server_1:11011 its account settings
Maintainerr http://mathieu-maintainerr_server_1:6246 none
Tracearr http://mathieu-tracearr_server_1:3000 its settings
slskd http://mathieu-slskd_server_1:5030 its options (web.authentication.api_keys)
Byparr http://mathieu-byparr_server_1:8191 none
Shredarr http://mathieu-shredarr_server_1:8089 (Jellyfin webhook) none
Scrob http://mathieu-scrob_server_1:7330 in the webhook URLs of its Connections
Sofa http://mathieu-sofa_server_1:3000 in the URLs of its Settings → Integrations
Seek http://mathieu-seek_server_1:8100 (Jellyfin webhook) in your personal Jellyfin webhook URL
Snug http://mathieu-snug_server_1:3000 (Jellyfin webhook) in the webhook URL of its Settings → Jellyfin
Vitals http://mathieu-vitals_server_1:3000/v1/summary its default password (bearer token)
MetaMCP http://mathieu-metamcp_server_1:12008/metamcp/<endpoint>/mcp (MCP) an API key from its API Keys page
agentgateway http://mathieu-agentgateway_server_1:3000/mcp?api_key=<key> (MCP) its default password (api_key query parameter)
arr-mcp http://mathieu-arr-mcp_server_1:6060/mcp (MCP) the bearer token on its dashboard
MCP Memory http://mathieu-mcp-memory_web_1/mcp (MCP) its default password (bearer token)
AdGuard MCP http://mathieu-adguard-mcp_web_1/mcp (MCP) its default password (bearer token)
FreshRSS MCP http://mathieu-freshrss-mcp_web_1/mcp (MCP) its default password (bearer token)
Spotarr http://mathieu-spotarr_server_1:3000/mcp?token=<MCP token> (MCP) Settings → Access
umbrelOS http://host.docker.internal/mcp (MCP, apps declaring host.docker.internal) a umbrelmcp_ token from Settings → MCP

Plex runs on the host network: apps reach it through host.docker.internal (the store's apps that need it declare it), and Plex reaches an app through http://127.0.0.1:<the app's port>.

🔄 Updates

Renovate opens a pull request for every new upstream image (a rebuild of the same version only on the 1st of the month). For each one, an AI agent (Claude Code) reads the upstream changelog, writes the release notes, installs the app on a test umbrelOS and posts a screenshot of it running. Verified patch and minor updates are merged; the rest wait for me. Updates then show up in umbrelOS like any other app update.

Important

Apps are tested on a real umbrelOS before release, not by a human on every hardware setup, and the agent can get things wrong. Upstream developers don't maintain these packages: report problems here first.

🛠️ Develop

python3 .github/scripts/validate_apps.py                         # what CI checks: ids, ports, pinned images, Renovate
node .claude/skills/verify-app/scripts/verify.mjs run <app-id>   # install on a throwaway umbrelOS (Docker), run its setup, screenshot
cd packages && bun install && bun test && bun run typecheck      # the store's own images
umbrel-app-store.yml         store id (mathieu) and name
mathieu-<app>/               one folder per app: umbrel-app.yml (listing), docker-compose.yml, icon, gallery
packages/                    the store's own images (Bun workspaces)
  core                       shared code: HTTP, env, the umbrelOS widget protocol
  widgets                    home screen widgets (ghcr.io/mathieuletyrant/umbrel-widgets)
  vitals                     the Vitals API (ghcr.io/mathieuletyrant/vitals)
.claude/skills/verify-app/   end-to-end checks, one flow per app in flows/
renovate.json                image updates

Every app id starts with mathieu-, images are pinned by digest, and a change that must reach existing installs bumps version (-patch.N for an image rebuild).

📖 Packaging rules: CLAUDE.md · 💡 Backlog: IDEAS.md · 💬 Requests and issues

App packaging is provided as is. Each application belongs to its authors, under its own license.

About

Umbrel community app store: 30+ self-hosted apps for the *arr media stack (Radarr/Sonarr companions, subtitles, transcoding, IPTV) plus MCP servers to drive them from AI assistants. Auto-updated by Renovate, every update verified on a real umbrelOS.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Contributors

Languages