sabx
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
A fast, scriptable CLI for SABnzbd - built for AI coding agents like Claude Code, Cursor, and Codex. Control downloads, manage queues, and automate workflows from your terminal.
sabx
A batteries-included SABnzbd CLI and automation toolkit inspired by modern OSS CLIs like
ghandchezmoi.
sabx mirrors the complete SABnzbd surface area—queue control, RSS management, scheduler, configuration, and server administration—in a fast Go binary designed for power users and automation.
Highlights
- Full parity with SABnzbd REST API: queue history, RSS CRUD, scheduler, server actions, priorities, speed limits, and diagnostics.
- First-class UX: human-readable tables by default,
--jsonfor scripting, shell completions, and keyring-backed credential storage. - Agent-friendly: deterministic output, idempotent commands, and profile-aware configuration ideal for CI/CD or LLM agents.
Installation
# Go 1.24+
go install github.com/avivsinai/sabx/cmd/sabx@latest
# Build from source
git clone https://github.com/avivsinai/sabx.git
cd sabx
go build ./cmd/sabx
./sabx --help
Pre-built archives, Homebrew, Scoop, winget manifests, and multi-arch Docker images are produced via GoReleaser on tagged releases.
Quickstart
# Authenticate with a SABnzbd instance (stores API key in OS keyring)
sabx login --base-url http://localhost:8080 --api-key <key>
# Inspect the active queue
sabx queue list --active
# Review full system diagnostics
sabx status --full --performance
# Check runtime warnings and logs
sabx warnings list
sabx logs list --lines 50
# Inspect live speed state for scripting
sabx speed status --json
# Pause post-processing while troubleshooting
sabx postprocess pause
# Test a news server definition
sabx server test primary
# Force-prioritize a download
sabx queue item priority <nzo_id> 2
# Explore SAB host filesystem and watched folder automation
sabx browse / --files --json
sabx watched scan --json
# Reset quota counters safely
sabx quota reset
# Smoke-test notifications and sort helpers
sabx notifications test email --json
sabx debug eval-sort "%sn - S%0sE%0e" --job "Example.Show" --json
# Manage RSS feeds
sabx rss add TVFeed --url https://example.org/rss --cat tv
sabx rss run TVFeed
# Update scheduler to pause nightly
sabx schedule set NightPause --set command=pause --set day=mon-sun --set hour=01 --set min=00
# Launch the live dashboard
sabx top
Configuration & Profiles
- Config file:
config.ymlunder$SABX_CONFIG_DIR(defaults to~/Library/Application Support/sabx/on macOS,%APPDATA%\sabx\on Windows,~/.config/sabx/on Linux). Writes use atomic swaps with0o700directory perms. - Credentials stored in macOS Keychain / Windows Credential Manager / GNOME Keyring via
github.com/99designs/keyring. Opt into encrypted file fallback with--allow-insecure-store(orSABX_ALLOW_INSECURE_STORE=1) and plaintext config storage with--store-in-config. - Override per invocation with
--profile,--base-url,--api-key, or env varsSABX_BASE_URL,SABX_API_KEY.
Command Reference
Run sabx <command> --help for details. Key groups mirror the SABnzbd UI:
queue: add, prioritize, move, purge, and edit job metadata.history: filter, delete, andretrycompleted jobs.rss,categories,schedule: full CRUD against named config sections.config: genericget,set, anddeletefor any SABnzbd config section.server: list, inspect stats, connectivity test, disconnect/unblock, restart/shutdown.postprocess: pause/resume global PP or cancel specific NZO IDs.speed: view current speed (status) and adjust the global limit.browse: inspect SABnzbd-side filesystem paths.watched: trigger watched-folder rescans.quota: reset download quota counters.notifications: run email/pushover/desktop test hooks.debug: fetch GC stats or evaluate sort expressions.translate: resolve SABnzbd UI translation keys.warnings: list and clear SABnzbd runtime warnings.logs: fetch sanitized SABnzbd logs (list,tailwith optional follow).scripts: inspect available post-processing scripts.dump: export sanitized configuration or live state snapshots.top: Bubble Tea dashboard for real-time queue and history monitoring.extension: install/list/removesabx-<name>extensions (GitHub repos or local).doctor: connectivity & health checks.
API Parity Checklist
| SABnzbd Area | API mode(s) | sabx coverage |
|---|---|---|
| Queue & Adds | queue, addurl, addfile, addlocalfile, switch, sort, change_cat, change_script |
queue list, `queue add url |
| Queue File Ops | get_files, move_nzf_bulk, delete_nzf |
queue item files, queue item files move, queue item files delete |
| History & Retries | history, retry, retry_all, history.mark_as_completed |
history list, history retry, history mark-completed |
| Status & Diagnostics | status, fullstatus, warnings, showlog, server_stats |
status [--full], `warnings list |
| Post-Processing | pause_pp, resume_pp, cancel_pp |
`postprocess pause |
| Speed Control | status, queue, speedlimit, set_pause |
speed status, speed limit, config set-pause |
| Servers | get_config(section=servers), config, disconnect, status.unblock_server, restart_repair |
`server list |
| RSS & Schedule | rss_*, schedule_* |
`rss list |
| Config & Keys | config, get_config, set_config, del_config, set_apikey, set_nzbkey, regenerate_certs, create_backup, purge_log_files, set_config_default |
`config get |
| Notifications | test_email, test_pushover, test_apprise, test_notif, test_osd, test_windows, test_pushbullet, test_prowl, test_nscript |
notifications test <type> |
| Filesystem & Watchers | browse, watched_now |
browse, watched scan |
| Quota & Usage | reset_quota, gc_stats, server_stats |
quota reset, debug gc-stats, server stats |
| Extensions & Automation | translate, eval_sort, dump, extension hooks |
translate, debug eval-sort, `dump config |
Smoke Tests
Use the bundled harness to exercise the tricky endpoints against a live SABnzbd instance and capture fixtures for regression testing:
scripts/run-smoke.sh --base-url http://localhost:8080 --api-key $SAB_API_KEY --output testdata/smoke/latest
The script builds sabx, runs a curated set of commands (browse, notifications test, debug eval-sort, status orphans, watched scan, etc.), validates JSON, and writes sanitized outputs to testdata/smoke/<command>.json plus an aggregated report.json. Review the artifacts before committing to avoid leaking instance-specific secrets.
Development
# Format & vet
go fmt ./...
go test ./...
# End-to-end smoke (requires Docker)
go test ./test/e2e -run TestSmokeAgainstSABContainer -count=1
# Run the CLI locally
./sabx status
See AGENTS.md for deeper contributor guidance, including architecture notes and testing tips. Release automation and tagging instructions live in docs/RELEASING.md.
Set SABX_E2E_DISABLE=1 to skip container-based smoke tests when Docker is unavailable.
Extensions
- Install from GitHub:
sabx extension install avivsinai/sabx-tv-tools - Execute: once installed, run
sabx tv-tools ...and the CLI will forward arguments to thesabx-tv-toolsbinary/script. - List or remove extensions with
sabx extension listandsabx extension remove <name>.
Extensions live under ~/.sabx/extensions and can also be distributed by placing sabx-<name> executables on PATH.
Claude Code Skill
The sabx skill teaches Claude Code (and Codex CLI) how to use sabx commands effectively.
Via skills (recommended):
npx skills add avivsinai/sabx -g -y
Via skild:
npx skild install @avivsinai/sabx -t claude -y
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found