Files
kindexr/README.md
T
enki 57cda1281b rewrite phases 0+1 in Rust; archive Go implementation
Move entire Go tree to archive/go/ preserving history. Add Rust
implementation: axum HTTP server, nostr-sdk relay reader, sqlx/SQLite
storage, Torznab caps+search endpoints, figment config, clap CLI.
Update spec.md tech stack and repo layout to reflect Rust. Add
docs/FIPS.md with Mode A/B/C deployment walkthrough. Add Phase 6
(FIPS deployment) to phase plan.
2026-05-17 02:23:26 -07:00

96 lines
2.5 KiB
Markdown

# 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
```sh
just build
# produces target/release/kindexr and target/release/kindexr-cli
```
### Configure
```sh
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:
```sh
sudo useradd --system --no-create-home --shell /usr/sbin/nologin kindexr
sudo chown kindexr:kindexr /var/lib/kindexr
```
### Install and start
```sh
sudo just install
sudo systemctl daemon-reload
sudo systemctl enable --now kindexr
sudo journalctl -u kindexr -f
```
### Verify
```sh
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:
```sh
KINDEXR_LOGGING_LEVEL=debug kindexr --config /etc/kindexr/config.yaml
```
## Development
```sh
just test # cargo test
just check # cargo clippy + fmt check
just build # cargo build --release
```
## Architecture
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full design.
## License
MIT