Skip to content

Add FlareSolverr, Maintainerr, Decluttarr, Checkrr (issue #37)#38

Merged
joshdev8 merged 2 commits into
mainfrom
feat/arr-companions
May 13, 2026
Merged

Add FlareSolverr, Maintainerr, Decluttarr, Checkrr (issue #37)#38
joshdev8 merged 2 commits into
mainfrom
feat/arr-companions

Conversation

@joshdev8
Copy link
Copy Markdown
Owner

@joshdev8 joshdev8 commented May 13, 2026

Summary

Adds four *arr-adjacent services from the running-containers screenshot in #37 that weren't yet in the repo:

Service Port Network(s) Purpose
FlareSolverr 8191 media_network Cloudflare bypass proxy for Prowlarr indexers
Maintainerr 6246 media_network Rule-based Plex library cleanup
Decluttarr download_network Removes stalled / failed downloads from *arr queues
Checkrr 8585 media_network Media file integrity scanner

Decluttarr — note on API keys

Decluttarr needs RADARR_API_KEY and SONARR_API_KEY from .env to actually do anything. Those keys come from the Radarr/Sonarr UIs after the stack is running, so:

  • They're added to .env.example with a comment explaining the post-boot workflow.
  • Decluttarr's container starts fine with both blank — it just skips any *arr whose key isn't set.
  • CLAUDE.md's env-var contract gets a new third category ("Populated after first boot") so the chicken-and-egg is explicitly documented. This is the same confusion that came up in discussion #4.

Other touches

  • The old # ============ ERROR MONITORING ============ section header was a misnomer for cleanarr/requestrr. Renamed to LIBRARY MAINTENANCE and grouped the new decluttarr/checkrr/cleanarr together under it. (Requestrr is still in there for now — it doesn't fit either name perfectly.)
  • README service table, network architecture lists, and CLAUDE.md network section all updated to reflect the four new services.

Type of change

  • New service or feature (feat/)
  • Documentation (docs/)

Validation

  • docker compose config --quiet passes locally with placeholder env values
  • CI's compose-validate.yml workflow exercises the exact path
  • Each new service is on the correct network(s) for its peers (FlareSolverr ↔ Prowlarr, Decluttarr ↔ *arrs over download_network, Maintainerr → Plex, Checkrr reading the media library)
  • Started locally and confirmed each service comes up healthy (deferred — config edits only)

Related

  • Addresses part of #37 (running-containers audit)
  • A follow-up PR will handle the monitoring side (Prometheus + cAdvisor + node-exporter), since #37's screenshot also shows those

Summary by CodeRabbit

  • New Features

    • Added four media-management services: FlareSolverr, Maintainerr, Decluttarr, and Checkrr.
  • Documentation

    • Updated architecture, network mappings, and service table to include the new services and roles.
    • Clarified env var behavior for Decluttarr: API keys are provided after first boot and omitted keys disable corresponding functionality.
  • Chores

    • Added optional Decluttarr-related API key entries to the environment template.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 390ec481-92aa-465e-88df-59c425c3127d

📥 Commits

Reviewing files that changed from the base of the PR and between c880d1c and 6714133.

📒 Files selected for processing (4)
  • .env.example
  • CLAUDE.md
  • README.md
  • docker-compose.yml
✅ Files skipped from review due to trivial changes (3)
  • .env.example
  • CLAUDE.md
  • README.md

📝 Walkthrough

Walkthrough

Adds four services—FlareSolverr, Maintainerr, Decluttarr, and Checkrr—to the Docker Compose stack, introduces Decluttarr env entries in .env.example, and updates README/CLAUDE.md to document network membership and the post-boot API-key behavior for Decluttarr.

Changes

New Media Management Services

Layer / File(s) Summary
Environment variables for Decluttarr
.env.example
Decluttarr configuration section added with optional RADARR_API_KEY and SONARR_API_KEY, with comments explaining source and blank-key behavior.
Docker Compose service definitions
docker-compose.yml
Four new services added: flaresolverr and maintainerr on media_network (ports, env, volume), and decluttarr and checkrr (download/media networks, Radarr/Sonarr URLs and API keys, removal flags, UI port, config volume, Plex read-only mount).
Architecture and service documentation
CLAUDE.md, README.md
Architecture notes and README updated to list the new services in media_network and download_network; env var contract clarified to mark RADARR/SONARR API keys as populated after first boot and to document Decluttarr behavior when keys are blank.

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly Related PRs

  • joshdev8/AutoPlexx#32: Both PRs modify docker-compose.yml network/compose wiring; this PR adds decluttarr that targets Radarr/Sonarr endpoints.
  • joshdev8/AutoPlexx#22: Both PRs adjust media/download network memberships and add maintenance-style services in the compose/network area.
  • joshdev8/AutoPlexx#35: Both PRs touch .env.example around Radarr/Sonarr API-key variables; #35 removed them while this PR reintroduces RADARR_API_KEY/SONARR_API_KEY for Decluttarr.

Suggested Labels

enhancement

Poem

🐰 Four new friends hop into the stack,
A proxy, a keeper, a cleaner, a crack.
Networks link, volumes snug and tight,
Keys sleep until the morning light.
Plex hums softly through the night.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and concisely identifies the main change: adding four new services (FlareSolverr, Maintainerr, Decluttarr, Checkrr) with reference to the related issue.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/arr-companions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docker-compose.yml`:
- Around line 245-266: The decluttarr service is using v1 env var names
(RADARR_URL, RADARR_KEY, SONARR_URL, SONARR_KEY, REMOVE_TIMER, REMOVE_FAILED)
which v2 ignores; update the decluttarr environment to the v2 schema by
replacing REMOVE_TIMER with TIMER and REMOVE_FAILED with REMOVE_FAILED_DOWNLOADS
and convert the Radarr/Sonarr entries into structured instance blocks (SONARR
and RADARR) each containing base_url and api_key fields (e.g., SONARR: {
base_url: "http://sonarr:8989", api_key: "${SONARR_API_KEY:-}" } and similarly
for RADARR) so the latest image reads your configuration correctly while
retaining TZ and LOG_LEVEL.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b4c4f6a5-c385-4cc9-aa7a-f9f5a063abd6

📥 Commits

Reviewing files that changed from the base of the PR and between 3a07357 and 5c3d440.

📒 Files selected for processing (4)
  • .env.example
  • CLAUDE.md
  • README.md
  • docker-compose.yml

Comment thread docker-compose.yml
joshdev8 and others added 2 commits May 13, 2026 14:58
Closes part of #37 — adds *arr-adjacent services from the user's
running stack that weren't yet in the repo.

- **flaresolverr** (port 8191, media_network): Cloudflare bypass
  proxy. Prowlarr is in the repo and depends on this for most
  protected indexers. No env required.
- **maintainerr** (port 6246, media_network): rule-based Plex
  library cleanup. Bind mount under ${USERDIR}/maintainerr/data.
- **decluttarr** (no port, download_network): removes stalled /
  failed downloads from Radarr/Sonarr queues. Needs RADARR_API_KEY
  and SONARR_API_KEY from .env, which are obtained from the *arr
  UIs *after* first boot — decluttarr starts with them blank and
  skips any service whose key isn't set.
- **checkrr** (port 8585, media_network): scans media files for
  codec / corruption issues. Read-only mount of the media library.

.env.example: re-adds RADARR_API_KEY and SONARR_API_KEY with a
comment explaining the post-boot setup. CLAUDE.md env-var contract
now has a third category for "populated after first boot" so the
chicken-and-egg is documented, not lurking.

README service table picks up the four new entries; network
architecture and CLAUDE.md mirror the new memberships. Old
"ERROR MONITORING" section header renamed to "LIBRARY MAINTENANCE"
to fit decluttarr/checkrr/cleanarr together.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Decluttarr v2 (released Nov 1, 2025) replaced RADARR_URL/RADARR_KEY/
SONARR_URL/SONARR_KEY/REMOVE_TIMER/REMOVE_FAILED with TIMER, REMOVE_FAILED_
DOWNLOADS and structured RADARR/SONARR blocks that require both base_url
and api_key. v2 on :latest would silently ignore the v1 env vars; pinning
v1.50.2 preserves the documented blank-keys-on-first-boot UX until v2 has
a graceful "skip empty api_key" mode.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@joshdev8 joshdev8 force-pushed the feat/arr-companions branch from c880d1c to 6714133 Compare May 13, 2026 18:58
@joshdev8 joshdev8 merged commit 22e5d83 into main May 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant