MediaWatch¶
A Discord-first monitoring bot for self-hosted media servers. One live dashboard inside Discord for Plex or Jellyfin: active streams, library totals and server state, with optional SABnzbd and Uptime Kuma data.

Where to start¶
-
Set it up
From a fresh Discord application to a running dashboard. The bot token, the one privileged intent it needs, invite permissions, and your Plex token or Jellyfin API key.
-
Run it
Docker is the recommended way. Compose file, volumes,
PUID/PGID, logs and updates, or run it straight from a virtualenv. -
Configure it
Credentials live in
.env, behaviour lives indata/config.yaml. Every option with its default, plus ready-made blocks to copy. -
Fix it
The common failure modes, grouped by what you actually see, with the exact messages MediaWatch writes to the log.
Two things worth reading first¶
Everyone in the channel can see more than you might expect
By default anyone who can read the dashboard channel can open stream details, and on Plex with Tautulli also the global statistics, including a server-wide top-users leaderboard. Two config options close that down.
Upgrading from PlexWatch 1.x?
Three things are not automatic: the container image path changed,
DISCORD_GUILD_ID is now required, and you should check the result of the
automatic config.json conversion. Your old file is never modified.
Platform scope¶
MediaWatch loads exactly one platform at runtime, selected by media_server.type.
| Capability | Plex | Jellyfin |
|---|---|---|
| Live dashboard and library totals | ||
| Stream details | With Tautulli | |
| Kill Stream | ||
| SABnzbd and Uptime Kuma | ||
| User and global statistics | With Tautulli | |
| Open in the media server | With Tautulli |
Plex has the richer surface because MediaWatch can layer Tautulli on top. Jellyfin support is intentionally narrower but uses the same dashboard model and the same runtime architecture. See Architecture.
What it is not¶
Not a web app, not a multi-user control panel, and not a replacement for Tautulli or Uptime Kuma. It is an operational bot for people who already live in Discord and want their media server status there.
How this project is built¶
MediaWatch is written with extensive help from AI coding assistants. PlexWatch 1.x started the same way: it worked better than I expected, but its internals were not built to last, which is what the 2.0 rewrite addresses.
I have run MediaWatch in production on my own server since early 2026, and the features and fixes since then come from using it every day. CI runs the full test suite on every push and pull request.