Every Claros server route needs a credential except the health check. A route nobody listed needs the admin scope, so new routes are locked by default. Edits to maps, rules, scopes and tool mappings also need the admin or editor role when made by a person (Roles).

Who gets in

Scopes

Keys look like clr_<prefix>_<secret>; only a SHA-256 hash is stored. Session tokens look like clt_… and are HMAC-signed. Send either as Authorization: Bearer <credential>.

Limits

  • Rate limits per key or token (token bucket): for example agent 20/s with bursts of 100, llm 5/s. Minting browser tokens and starting voice conversations have tighter limits. Over the limit: 429 with Retry-After.
  • Failed logins are limited per IP: after 10 bad credentials the IP is slowed to one try every 10 seconds.
  • Body size is capped (1 MB by default, 4 MB for voice clips): 413.
  • WebSocket: at most 2 connections per session and 6 per key or token.
  • CORS: only the configured web origins, no cookies.

Errors

401 missing, invalid or expired credential · 403 wrong scope · 429 rate limited · 413 body too large.

Health check

GET /healthz is public and returns only {ok, auth, version}. Configuration details and recent model calls are at /admin/healthz, admin only. Accounts and device sign-in have their own limits: see Sign-in and Device sign-in.