Files
ReadMeABook/documentation/phase3
kikootwo a0f2ba680d Add rootless Podman fixes, and others
improve container startup for rootless Podman, plus related refactors and tests. Key changes:

- Add/modify Audiobookshelf-related code and wiring (src/lib/services/audiobookshelf/api.ts, library service refs) and update documentation TABLEOFCONTENTS to reference ABS implementation.
- Detect user namespace in docker/unified app-start.sh and redis-start.sh and skip gosu when running in rootless Podman to preserve UID mapping; improve startup logging and verification.
- Add utility/service files (auth-token-cache.service.ts, credential-migration.service.ts, cleanup-helpers.ts) and corresponding tests; update chapter-merger and metadata-tagger utilities/tests.
- Update many admin/auth API routes and tests to reflect changes in settings and integrations.
- Remove large AI agent and Audiobookshelf implementation guide docs (AGENTS.md and the implementation guide) and add README note about AI-assisted workflow.

These changes enable Audiobookshelf backend mode, improve compatibility with rootless container runtimes, and include cleanup/refactor work and unit tests.
2026-02-04 14:05:28 -05:00
..
2026-01-28 11:41:24 -05:00

Phase 3: Automation Engine

Status: In Development

Multi-stage pipeline transforming requests into downloaded, organized media in Plex.

Pipeline

Request → search_indexers → rank_results → download_torrent
→ monitor_download → process_audiobook → update_plex

Job Types

  1. search_indexers - Search Prowlarr for torrents
  2. rank_results - Apply ranking algorithm, select best
  3. download_torrent - Add to qBittorrent
  4. monitor_download - Poll progress (10s intervals)
  5. process_audiobook - Organize files to media directory
  6. update_plex - Trigger scan, fuzzy match

Integration Points

Indexers: Prowlarr (primary), Jackett (fallback) Download Clients: qBittorrent (primary), Transmission (fallback) Media Server: Plex (scan + match)

Job Queue (Bull)

  • Redis-backed for persistence
  • Retry: 3 attempts, exponential backoff (2s, 4s, 8s)
  • Priorities: High (10), Medium (5), Low (1)
  • Concurrency: 3 concurrent per type
  • Jobs survive app restarts

Config Keys

Prowlarr: indexer.type=prowlarr, indexer.prowlarr_url, indexer.prowlarr_api_key qBittorrent: download_client.type=qbittorrent, download_client.qbittorrent_url/username/password Paths: paths.download_dir, paths.media_dir