The CLI signs every request with a per-key ES256 JWT (P-256 ECDSA). You generate a keypair locally, register the public half with Bron through the UI (or viaDocumentation Index
Fetch the complete documentation index at: https://developer.bron.org/llms.txt
Use this file to discover all available pages before exploring further.
bron auth register-key if you already have an authenticated profile), and keep the private half on disk. The CLI never sees your password and never round-trips the private key over the network.
Generate a keypair
- Generates a fresh P-256 ECDSA keypair locally using
crypto/ecdh. - Writes the private JWK to the file at mode
0600(only your user can read it). The file containskty,crv,x,y,d,kid— thekidis the random key identifier used to look up the matching public key on the server. - Prints the public JWK (no
dfield) to stdout. This is what you register in the Bron UI.
kid; when the CLI signs a request the server looks up the matching public key and verifies the signature.
The private key never leaves your machine. If you lose it, generate a new keypair and revoke the old kid in the UI.
Profiles
A profile binds a key file, workspace, and base URL together so you don’t repeat them on every call. Configs live in~/.config/bron/config.yaml (override with BRON_CONFIG).
Per-call overrides
Every flag a profile sets has a CLI override:Env-var overrides
Useful for CI / containers / one-off scripts:Proxy
Outbound from the CLI honors:BRON_PROXYenv var- standard
HTTPS_PROXY/HTTP_PROXYenv vars proxyfield set on the active profile (bron config set proxy=...)
http://user:pass@host:8080. The same proxy is used for both REST and WebSocket transports (the bron tx subscribe socket goes through it too).
Key rotation
- Generate a new keypair:
bron auth keygen --file ~/.config/bron/keys/me-new.jwk - Register the new public JWK in Settings → API keys.
- Update the active profile to use the new key:
bron config set key_file=~/.config/bron/keys/me-new.jwk - Verify with a no-op call:
bron workspace info - Revoke the old
kidin the UI.
kid, so old and new keys coexist during a rotation window.
Permissions
API keys inherit the permissions of the workspace member they belong to. If the user can approve transactions in the UI, the CLI can too — there’s no separate “API mode” with reduced privileges. Reduce scope by creating a member with limited permissions and registering the key under that member’s account.Troubleshooting
| Symptom | Likely cause |
|---|---|
403 Forbidden on every call | Public key not registered, or the kid was revoked |
401 Unauthorized immediately after rotation | Old kid still in active profile — bron config show to inspect |
dial: x509: certificate signed by unknown authority | Corporate proxy MITM — set HTTPS_PROXY or import the CA |
403 on some endpoints, 200 on others | Member’s role doesn’t grant the action — check workspace permissions |
trace: line containing the correlation ID. Quote that ID when reporting issues — it lets us pull the exact ES log line for your call.