Routstr Core:基于 Nostr 与 Cashu 的去中心化 AI 推理支付代理
Routstr/routstr-core
Routstr 推出 Routstr Core,一个基于 FastAPI 的反向代理,部署在 OpenAI 兼容 API 前,按请求计费,实现无需许可、隐私且抗审查的 AI 推理。它用 Nostr 做服务发现、Cashu 做私有比特币微支付,用户只需将 OpenAI 兼容 SDK 指向 Routstr 节点并用 Cashu token 付费。
Routstr Payment Proxy
Routstr is a decentralized protocol for permissionless, private, and censorship-resistant AI inference. It combines Nostr for discovery and Cashu for private Bitcoin micropayments.
This repo contains Routstr Core: a FastAPI-based reverse proxy that sits in front of OpenAI-compatible APIs and handles pay-per-request billing.
Start Here
- Overview: https://docs.routstr.com/overview/
- Provider Guide: https://docs.routstr.com/provider/quickstart/
- Client Guide: https://docs.routstr.com/client/introduction/
- Browse providers and models: https://routstr.com/providers
Basic Usage
If you are a user/developer, you just point an OpenAI-compatible SDK at a Routstr node and pay with a Cashu token.
OpenAI SDK
from openai import OpenAI client = OpenAI( base_url="https://api.routstr.com/v1", api_key="cashuBo2FteCJodHRwczovL21...", ) response = client.chat.completions.create( model="gpt-5-nano", messages=[{"role": "user", "content": "hello"}], ) print(response.choices[0].message.content)
cURL
curl https://api.routstr.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "x-cashu: cashuBo2FteCJodHRwczovL21..." \ -d '{ "model": "gpt-5-nano", "messages": [{"role": "user", "content": "hello"}] }'
Quick Start (Docker)
Start a provider node with the guided setup. The default assumes you already have
a subdomain with HTTPS and a reverse proxy forwarding to 127.0.0.1:8000, so the
node publishes itself on Nostr as soon as it starts. Without a public URL yet, use
--private and publish later. Agents: read llms.txt first, and rotate
the bootstrap admin password before publishing.
git clone https://github.com/Routstr/routstr-core.git cd routstr-core # production: check out a reviewed release tag # Phase 0: DNS + TLS + reverse proxy -> 127.0.0.1:8000 # Phase 1: start (public is the default) python3 scripts/node_setup.py start \ --public-url https://node.example \ --ln-address you@wallet.com # Phase 2: back up before configuring # routstr_secret.key, keys.db (+ -wal/-shm), .wallet/ and .env docker compose -f compose.node.yml exec routstr \ /.venv/bin/python scripts/reveal_nsec.py # Phase 3: dashboard - rotate the admin password, add an upstream, set pricing docker compose -f compose.node.yml logs routstr | grep -i admin # Phase 4: verify python3 scripts/node_setup.py check --public-url https://node.example
compose.node.ymlbinds the API to127.0.0.1only, starts no Tor service, and starts with analytics off. Your reverse proxy fronts it.- Private mode (
python3 scripts/node_setup.py start --private) keeps the node loopback-only and publishes nothing until you set a public URL later. - Port 8000 taken? Pass
--port 18080and point the proxy at it. - Use
docker compose -f compose.node.yml ...for every later Compose command. Plaindocker compose upselects the different public/Tor stack. startalso mints a long-lived CLI token and writes~/.routstr/config.json(mode0600; an existing config for another node is left untouched) so the Routstr CLI can operate the node (routstr instruct,routstr providers list, ...). The token is full node admin; revoke it in Settings → CLI Tokens when done (--no-cli-tokenskips creation).
See the provider quickstart and the deployment guide for publishing, backups and updates.
Development
make setup cp .env.example .env fastapi run routstr
来源:GitHub · github.com