Per-agent users
Don’t share theadmin user with agents. Add a per-agent user with a method whitelist:
rpcauth= and rpcwhitelist= line to proxy.conf. Full method list and semantics: API auth.
Session policies
| Pattern | When to use | Notes |
|---|---|---|
| Pre-open one long session per agent run | Repeated short prompts | Lower per-prompt latency; one cleanup at end |
| Open per task | Bursty, infrequent tasks | Higher gas overhead, simpler state |
| Pool of pre-opened sessions | High-throughput multi-agent | Fan agents across sessions; close idle ones |
userStakesOnHold (claimable via withdrawUserStakes after ~1 UTC day). See Sessions: stake, close, claim.
Streaming vs non-streaming
Agents that need full deterministic JSON should usestream: false. Tool-calling chains that benefit from token streaming (e.g. user-facing typing UX) should set stream: true. The proxy-router supports both transparently — see Chat.
Rate limiting
The proxy-router does not currently expose per-user rate limits. If you need hard limits, terminate agent traffic at a reverse proxy (nginxlimit_req, Caddy rate limiter, etc.) in front of :8082.
Observability
- Tag each agent with its own
User-Agentheader for log filtering. - Run a small log shipper to capture
./data/proxy-router.loglines. - Use
GET /v1/models/attestationif your agents targettee-tagged models — surface attestation state in your dashboards.
Failure recovery
| Symptom | Recovery |
|---|---|
| 401 / 403 from C-Node | Re-auth or rotate password |
| 429 from C-Node | Back off; check provider/model concurrency |
| Empty response stream | Provider may be down — close session, retry on a different model |
session not found | Session expired or closed; open a new one |

