docs(agents): Routstr is now the AI upstream (githappens node)

Record the working node, the fund/refund recipe, the aggregator outage, the
'orangesync bad key' trap, and that Netlify snapshots env at deploy (redeploy
after env changes).
This commit is contained in:
SkateSpots 2026-09-27 15:22:37 +07:00
parent 00aab5369b
commit 972941d688

View file

@ -126,16 +126,19 @@ session with **no other memory of this project**. So:
override the Netlify gateway (any OpenAI-compatible endpoint). For a
**sats-only** provider use Routstr (`SASQUATCH_AI_BASE=https://api.routstr.com/v1`,
key = a cashu…/sk- session token; `SASQUATCH_MODELS` must match `PROXY_MODELS`).
⚠️ The **aggregator `api.routstr.com` is DOWN** (404 everywhere) but the
network is alive: nodes announce on Nostr as **kind 38421** with the endpoint
in a `u` tag (`d=<pubkey>`), and ~9 were serving models on 2026-09-27
(e.g. `https://ai.orangesync.tech`, `routstr.cypherpunk.today`,
`routstr.githappens.space`). To use a node: fund an `sk-` key via
`POST <node>/v2/lightning/invoice {amount_sats,purpose:"create"}` (or import a
Cashu token via `GET <node>/v1/balance/create?initial_balance_token=cashuA…`),
then set `SASQUATCH_AI_BASE=<node>/v1`, `SASQUATCH_AI_KEY=sk-…`,
`SASQUATCH_MODELS=<slugs>` in Netlify env — **no client redeploy needed** (the
server falls back to its configured model if the client's slug isn't allowed).
⚠️ The **aggregator `api.routstr.com` is DOWN** (404) — use a **node**.
Nodes announce on Nostr as **kind 38421** with the endpoint in a `u` tag.
**Live + working (2026-09-27): `https://routstr.githappens.space`** (accepts
the minibits mint; `gemini-3-6-flash` answers). Others were up too but
`ai.orangesync.tech` issued an `sk-` key that its own inference endpoint
rejected ("User not found") — always test inference before committing funds.
Funding: `POST <node>/lightning/invoice {amount_sats,model}` → pay bolt11 →
`GET <node>/lightning/invoice/<id>/status` → `api_key` (`sk-…`). Refund:
`POST <node>/v1/balance/refund` → a Cashu token (recoverable/portable).
Then set `SASQUATCH_AI_BASE=<node>/v1`, `SASQUATCH_AI_KEY=sk-…`,
`SASQUATCH_MODELS=<slugs>` — **Netlify snapshots env at deploy, so redeploy
after changing it**. The proxy substitutes its first allowed model when the
client's slug isn't allowed, so the client list need not match.
**AI answers are Pro-only**: free users get the static FAQ/glossary + local
relay lookups only (`if (isPro)` gates the AI block in `SasquatchGuide`).
Pro access (`useSasquatchPro`) is granted by a provider-authored zap receipt,