- LidarrClient (api/v1) with lookup, profile/folder discovery, and
add_artist
- !media music <query> — MusicBrainz lookup via Lidarr, numbered list
cached per (room, sender)
- !media music add <query|N> — POST /api/v1/artist with profile/folder
defaults (auto-picks first if not set in config). Carries through
images/genres/links from the lookup result and kicks off a search
for missing albums by default.
- New config block 'lidarr' with optional quality_profile_id /
metadata_profile_id / root_folder_path overrides.
- Admins can react 👍/✅ or 👎/❌ on a !media request to approve/decline
- Posters auto-attach to request confirmations and !media random picks
(TMDB for Seerr items, Emby /Items/{id}/Images/Primary for library items)
- New @web.post(/seerr-webhook) handler — Seerr → Matrix room directly,
replaces the Telegram bridge path
- New config: posters_enabled, admin_users, notifications_room,
seerr_webhook_secret
Maubot plugin: Matrix companion for the homelab media stack.
Services wrapped:
- Seerr: search, request, requests, trending
- Emby: nowplaying, recent, watched
- Sonarr/Radarr: queue, upcoming, missing
- NZBGet/qBittorrent: activity
Each Matrix sender is mapped to per-service user IDs via plugin config;
unmapped senders are rejected. Replies are MXID-prefixed for shared rooms.