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.

Implementation

The active implementation is Rust (src/, Cargo.toml).

The original Go implementation lives in archive/go/ and is kept for reference until the Rust version reaches Phase 1 parity. It is not maintained going forward.

Phase status

  • Phase 0 — bootstrap (Rust): daemon boots, config, DB migrations, /health, journald JSON logging
  • Phase 1 — reader, basic Torznab (Rust): relay subscription, kind 2003 indexing, t=caps + t=search
  • Phase 2 — full *arr compatibility: structured ID matching, TMDB enrichment
  • Phase 3 — curation: WoT filter, NIP-51 sets
  • Phase 4 — writer/publisher: NIP-46 bunker, qBittorrent integration
  • Phase 5 — Blossom binary bridge

Quick start

Build

just build
# produces target/release/kindexr and target/release/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 just install
sudo systemctl daemon-reload
sudo systemctl enable --now kindexr
sudo journalctl -u kindexr -f

Verify

curl http://localhost:9117/health
# {"status":"ok","version":"...","db_ok":true,"relays_configured":6,"uptime_seconds":0}

Add to Sonarr/Radarr

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

just test    # cargo test
just check   # cargo clippy + fmt check
just build   # cargo build --release

Architecture

See docs/ARCHITECTURE.md for the full design.

License

MIT

S
Description
Nostr Based torrent indexer
Readme 331 KiB
Languages
Rust 99.7%
Just 0.3%