1b7b70426cdd03ac0cb646201d37e9f9f0b7968b
- config: koanf-based loading (defaults → YAML → KINDEXR_ env vars) - db: embedded SQLite migrations with BEGIN/END-aware statement splitter - server: chi router, GET /health returns JSON stats - cmd/kindexr: graceful SIGTERM shutdown - cmd/kindexr-cli: stub - deploy: systemd unit, example config, nginx snippet - all packages covered by race-clean tests
kindexr
A Nostr-native Torznab indexer. Bridges NIP-35 torrent events on the Nostr relay network into the Torznab API that Sonarr, Radarr, Lidarr, Readarr, and Prowlarr already speak.
Same slot as Jackett or Prowlarr — middleware that sits between Nostr and the *arr automation stack. Not a frontend, not a relay, not a downloader.
Phase status
- Phase 0 — bootstrap: daemon boots, parses config, opens DB, applies migrations,
/healthreturns JSON, logs to journald in JSON - Phase 1 — reader, basic Torznab (subscribes to relays, indexes kind 2003 events,
t=caps+t=search) - Phase 2 — full *arr compatibility (structured ID matching, category normalization, TMDB enrichment)
- Phase 3 — curation (WoT filter, NIP-51 sets, per-key visibility)
- Phase 4 — writer/publisher (NIP-46 bunker, qBittorrent integration)
Quick start
Build
make build
# produces ./bin/kindexr and ./bin/kindexr-cli
Configure
sudo mkdir -p /etc/kindexr /var/lib/kindexr
sudo cp deploy/kindexr.example.yaml /etc/kindexr/config.yaml
sudo $EDITOR /etc/kindexr/config.yaml
Create the service user:
sudo useradd --system --no-create-home --shell /usr/sbin/nologin kindexr
sudo chown kindexr:kindexr /var/lib/kindexr
Install and start
sudo make install
sudo systemctl daemon-reload
sudo systemctl enable --now kindexr
sudo journalctl -u kindexr -f
Verify
curl http://localhost:9117/health
# {"status":"ok","version":"...","relays_connected":0,"events_total":0,"last_event_at":null}
Add to Sonarr/Radarr
Once Phase 1 is complete, add kindexr as a Torznab indexer:
- URL:
http://127.0.0.1:9117(or your public URL behind nginx) - API key: generate with
kindexr-cli apikey create --label sonarr
Configuration
See deploy/kindexr.example.yaml for a fully commented configuration reference.
Config is loaded in order: defaults → YAML file → environment variables (KINDEXR_ prefix).
Example env override:
KINDEXR_LOGGING_LEVEL=debug kindexr --config /etc/kindexr/config.yaml
Development
make test # run tests with -race
make vet # go vet
make fmt # gofmt
make check # fmt + vet + test
Architecture
See docs/ARCHITECTURE.md for the full design.
License
MIT
Description
Languages
Rust
99.7%
Just
0.3%