Watchdog
Playback failover, stall failover, and size-variant retention when a release cannot be served.
Failover
| Control |
Config key |
Default |
Effect |
| Enable failover watchdog |
play.watchdog-enabled |
on |
Off = single release (legacy) |
| Total budget (seconds) |
play.total-budget-seconds |
30 |
Hard ceiling 3–180 |
| Hedge delay (seconds) |
play.hedge-delay-seconds |
3 |
Start backups if primary is slow |
| Parallel candidates per batch |
play.max-candidates |
3 |
1–10 |
| Total candidates per request |
play.max-attempts |
10 |
1–200 |
| Verify mode |
play.verify-mode |
none |
stat / body / none |
| Negative-cache TTL (minutes) |
play.candidate-negative-cache-minutes |
5 |
Skip recently failed |
| Search link lifetime (hours) since 0.8.0 |
play.resolution-cache-ttl-hours |
168 |
Play links in search results (env fallback) |
| Prefer releases with subtitles |
play.prefer-subtitles |
on |
Reorder only |
Stall failover
| Control |
Config key |
Default |
Effect |
| Enable stall failover |
grab.stall-failover-enabled |
on |
Requires watchdog on |
| Stall window (seconds) |
grab.stall-failover-window-seconds |
2 |
No progress → set aside |
| Per-candidate ceiling (seconds) |
grab.stall-failover-ceiling-seconds |
5 |
Max time before moving on |
Variants
| Control |
Config key |
Default |
Effect |
| Mode |
variants.mode |
off |
off / smart / collect-all |
| Size tolerance (%) |
variants.tolerance-pct |
25 |
smart only |
| Max copies per group |
variants.max-per-group |
3 |
0 = unlimited |
| Selection strategy |
variants.replay-strategy |
closest-to-click |
closest / largest / smallest |
| Fallback on fetch failure |
variants.fallback-on-failure |
on |
Use closest existing |
| Eviction strategy |
variants.eviction-strategy |
lru |
lru / size / never |
| Active-use grace (seconds) |
variants.eviction-active-grace-seconds |
60 |
Skip eviction if recently used |
Warden, Watchdog, Preflight