How autobrr/qui works
qui is a self-hosted web interface for managing multiple qBittorrent instances. Users interact with its web UI, whose API exposes torrent management and supporting workflows; the backend synchronizes with qBittorrent and runs cross-seeding, automations, backups, and scans. The CLI starts and wires the application, while persistent stores, event streaming, indexer integrations, and the reverse proxy support those workflows. The README and source index establish the major capabilities and many wiring references; some unsampled implementation details are intentionally represented only at subsystem level.
Main entry points: server.go HTTP API · main.go Application startup · App.tsx Web interface · sync_manager.go Client synchronization
Components 17
Application and API
- Web interface
web/src/App.tsx - Application startup
cmd/qui/main.go - HTTP API
internal/api/server.go - Live event stream
internal/api/sse/manager.go
Torrent operations
- Client synchronization
internal/qbittorrent/sync_manager.go - qBittorrent instances
- Reverse proxy
internal/proxy/handler.go
Automation workflows
- Cross-seeding
internal/services/crossseed - Rule automations
internal/services/automations/service.go - Directory scans
internal/services/dirscan/service.go - Orphan scans
internal/services/orphanscan/service.go - Backup and restore
internal/backups/service.go
Persistence and integrations
- Indexer search
internal/services/jackett/service.go - Prowlarr client
pkg/prowlarr/client.go - Notifications
internal/services/notifications/service.go - Application database
internal/database/db.go
Other components
- User
Connections 20
- User → Web interface: uses
README.md - Web interface → HTTP API: requests
- Application startup → HTTP API: starts
cmd/qui/main.go - HTTP API → Live event stream: routes streams
internal/api/server.go - HTTP API → Client synchronization: routes operations
internal/api/server.go - Client synchronization → qBittorrent instances: synchronizes
internal/qbittorrent/sync_manager.go - HTTP API → Reverse proxy: routes proxy
internal/api/server.go - Application startup → Application database: initializes
cmd/qui/main.go - HTTP API → Cross-seeding: routes workflows
internal/api/server.go - HTTP API → Rule automations: routes workflows
internal/api/server.go - HTTP API → Directory scans: routes scans
internal/api/server.go - HTTP API → Orphan scans: routes scans
internal/api/server.go - HTTP API → Backup and restore: routes backups
internal/api/server.go - HTTP API → Indexer search: routes indexers
internal/api/server.go - Indexer search → Prowlarr client: searches through
internal/services/jackett/service.go - Application startup → Notifications: starts service
cmd/qui/main.go - Application startup → Cross-seeding: starts automation
cmd/qui/main.go - Application startup → Rule automations: configures service
cmd/qui/main.go - Application startup → Directory scans: configures service
cmd/qui/main.go - Application startup → Backup and restore: configures service
cmd/qui/main.go