jochen 8fbed91540 qbittorrent: its watcher and tools run in the node's runtime (hq ADR 0198)
The mesh-qbittorrent container goes with its Dockerfile, build bases and bus credential; its env becomes the bundle's words with mount targets folded back to host paths.
2026-10-04 00:41:51 +02:00

mesh-media-catalog

The media chain as Novox Mesh modules, one per directory under modules/: the servarr trio (sonarr, radarr, lidarr), bazarr, the downloaders (nzbget, qbittorrent), jackett, bookshelf, plex and its companions (tautulli, kometa), and ombi.

It is a catalogue in the exact shape of novox/mesh-catalog: the same manifest vocabulary, the same rules, checked the same way. It is separate because this chain is one system that only talks to itself — jackett-api, sonarr-api, radarr-api, lidarr-api and plex-api are exchanged among these modules and consumed by nothing else except home-assistant — and because what runs here is one operator's media stack, pinned to the builds in use, not shared infrastructure. Provisions cross repositories freely: lidarr requires postgres-database from the catalogue's postgres, every module requires route; the mesh resolves a requirement by name and never by where the manifest lives.

Conventions

  • A manifest names the software's own ports and nothing of the machine: machine ports are assigned by the mesh, per node. No host:container pairs, no pins in an assignment.
  • A manifest names no installation: no hostnames, paths of a particular machine, or people. Names come from ${bound:route:name}, places from ${dir:<id>}, values from settings.
  • Every secret a module needs is declared under own-secrets (minted, or accepted once for an adopted instance); a provision's credential arrives with its binding.
  • Each module carries a small runtime sidecar (tools/index.ts, built by its Dockerfile on the mesh-tools bases) with a few query tools — the working example to extend.

Before pushing, check every manifest together, the way registration does:

mesh-controller module check modules/*/module.json

Register a module from this repository through the forge seat:

module add /<m>.json --source novox/mesh-media-catalog --self --path modules/<m> --ref main --commit <sha>
build novox/mesh-media-catalog --self --path modules/<m> --ref main
S
Description
The media chain as mesh modules: servarr, downloaders, jackett, plex and its companions
Readme
239 KiB
Languages
TypeScript 98%
Python 1.9%