Using the CLI
The Quayside CLI (quayside) gives engineers and scripts a thin command-line surface for login, identity, agent classes, and child-process wrapping.
For the full command reference see Reference → CLI.
Install
The CLI is a Python package; install with pipx:
pipx install quayside-cliOr for local development:
cd cli/quayside-cliuv syncuv run quayside --helpFirst time: login
quayside login \ --principal-id alice@example.com \ --class-slug eng/code-reviewer \ --url http://quayside.internal:8000This:
- POSTs to
/api/v1/auth/dev/mint-tokenon the given Quayside server - Caches the resulting token at
~/.config/quayside/token.jsonwith 0600 permissions - Stamps the token’s expiry locally
For production OIDC integration (v2), login will run an OAuth/PKCE flow instead.
Inspect what’s cached
quayside whoami# principal_id : alice@example.com# tenant : dev# url : http://quayside.internal:8000# expires_in : 3527s# issuer : quaysideExits 1 if not logged in.
Wrap a child process
The main use of the CLI is to run another command with Quayside’s identity wired in via environment variables:
quayside run claude-codeWhat this does:
- Reads the cached token
- Sets
ANTHROPIC_BASE_URL=<url>/api/v1/proxy/anthropic - Sets
ANTHROPIC_API_KEY=qsk_<jwt>(the proxy parses the JWT fromx-api-key) execvpes the child process with that environment
Any process that respects ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY now goes through Quayside without code changes. Claude Code does. Most LLM-using scripts can be made to.
You can wrap arbitrary commands too:
quayside run -- python my_agent_script.py --flag argquayside run -- node my-script.jsquayside run -- sh -c 'echo $ANTHROPIC_BASE_URL'The -- separates quayside’s flags from the child’s argv.
Manage classes
| Command | Purpose |
|---|---|
quayside class list [--status STATE] | Show registered classes, optionally filtered by lifecycle |
quayside class show <slug> | Detail page for one class |
quayside class register --slug X --name Y --purpose Z --owner W | Register a new class |
quayside class deprecate <slug> | Transition the class to deprecated lifecycle |
The CLI talks to the Quayside server via the URL cached at login time, or --url if you pass it explicitly.
Logout
quayside logoutDeletes the cached token file.
Why a CLI alongside the dashboard
Some flows fit shell better:
- Scripts and CI jobs that need a quayside identity baked into a process
- One-shot class registration from a notebook or terminal
- Engineers who never open the dashboard
The CLI talks to the same HTTP API. Anything you can do in one, you can do in the other.