Sovaria CLI
Operator CLI for gateway-backed Sovaria project and platform workflows.
Run
Examples below use sov ... command syntax.
If sov is installed on your PATH:
sov --help
From repo root without installation:
python -m apps.cli.src.main --help
Cross-SDK Happy Path Smoke
Use the repository smoke script to validate one shared happy path across:
- CLI auth + scoped SQL call
- TypeScript SDK SQL + engine health
- Python SDK SQL + engine health
SOVARIA_URL=http://localhost:8000 \
SOVARIA_ORG_ID=<org_uuid> \
SOVARIA_PROJECT_ID=<project_uuid> \
SOVARIA_EMAIL=<owner_email> \
SOVARIA_PASSWORD='<owner_password>' \
scripts/cli_sdk_happy_path.sh
If you already have valid CLI tokens, omit SOVARIA_EMAIL and SOVARIA_PASSWORD.
Authentication
sov login
sov login --email you@example.com
sov login --file-storage # headless: tokens in ~/.sovaria/credentials.toml
sov logout
sov logout --force # clear local tokens if server revoke fails
- Browser (PKCE): authorize opens the console origin (
get_console_url); the token exchange POSTs to the gatewayapi_url/oauth/tokenproxy. That split is intentional. - Password: never pass
--password. Operator login prompts withgetpass, or readsSOVARIA_PASSWORD. - Product user create:
sov auth-product create --email ...prompts for the new user's password, or readsSOVARIA_USER_PASSWORD. Do not reuseSOVARIA_PASSWORD(that is the operator login secret). - Magic link:
sov auth magic-link verifyreads the token from stdin orSOVARIA_MAGIC_TOKEN. - GitHub deploy PAT: set
SOVARIA_GITHUB_TOKENor usegh auth token. There is no--tokenflag. - OAuth callback: binds
127.0.0.1by default. Non-loopbackSOVARIA_CLI_CALLBACK_HOSTrequires--insecure-callback.
Token refresh contract
Axis supports two refresh modes. Do not mix them:
| Client | How refresh is sent |
|---|---|
| CLI / Python SDK | JSON body: POST /api/v1/auth/refresh with {"refresh_token": "<stored>"}. The CLI keeps the refresh token in OS keyring (or credentials.toml with --file-storage). |
| Console / browser | Empty JSON body {} plus the HttpOnly refresh cookie. The browser never puts the refresh token in the request body. |
Copying the console cookie pattern into a CLI or SDK client will fail silently (no cookie jar). Copying the CLI JSON-body pattern into a browser app bypasses HttpOnly cookie storage.
Pulse WebSocket URLs
sov realtime ws-url issues an opaque ticket= query parameter. Never put a JWT in ?token= — production gateways disable GATEWAY_WS_ALLOW_QUERY_TOKEN. Local .env.local may still enable the legacy query-token path; do not copy that into clients.
sov realtime ws-url my-channel --org <org_id> --project <project_id>
# wss://api.sovaria.in/api/v1/rt/ws/my-channel?ticket=...&org_id=...&project_id=...
Core Command Groups
sov auth ...auth login/logoutsov scope ...default org/project/env scopesov data ...Atlas-Doc and Atlas-Relsov realtime ...Pulse realtime and e2eesov policy ...Guard policy managementsov audit ...Echo audit and simulationsov chrono ...Chrono timeline/snapshot operationssov fn ...Forge function deploy/status/invokesov project ...project config template + scaffold creationsov api call ...raw gateway API request
Project Bootstrap (Config JSON)
Create a template config file:
sov project init-config my-app --output sovaria.config.json
Then scaffold a project from that config:
sov project create --config sovaria.config.json --dir .
Function Sandbox Flow
Deploy a function bundle (zipped from local folder):
sov fn deploy ./my-function --name hello --project <project_id> --note "add audit logging"
Poll deployment status:
sov fn status <deploy_id> --project <project_id>
Invoke the deployed function in its project sandbox:
sov fn invoke hello --project <project_id> --data '{"message":"hi"}'
Run a simulation invocation (tracked separately from normal invoke):
sov fn invoke hello --project <project_id> --simulate --data '{"message":"dry-run"}'
Queue heavy async invocation and wait for completion:
sov fn invoke hello --project <project_id> --execution-profile heavy --async --wait --data-file payload.json
List function versions:
sov fn versions hello --project <project_id>
List functions with active versions + queue depth:
sov fn functions --project <project_id>
List invocation history:
sov fn history hello --project <project_id> --mode invoke
List durable async jobs:
sov fn jobs hello --project <project_id> --status QUEUED
Promote a specific function version:
sov fn promote hello --project <project_id> --version 3 --reason "promote stable release"
Rollback to previous active version:
sov fn rollback hello --project <project_id> --reason "rollback regression"
Diff two simulation invocations:
sov fn sim-diff hello <left_invocation_id> <right_invocation_id> --project <project_id>
Scope Requirement
Realtime and relational routes require org/project scope. You can pass scope per command (--org --project --env) or set defaults:
sov scope set <org_id> <project_id> --env <env_id>
Metadata
Release files for sovaria-cli 0.2.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sovaria_cli-0.2.8.tar.gz | 111.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sovaria_cli-0.2.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 259.8 kB
Release files / sovaria_cli-0.2.8.tar.gz
| Download URL | sovaria_cli-0.2.8.tar.gz |
|---|---|
| Size | 111.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb922e48568d5ac700b73eb46a4fcb402fdf33092bdd936d209eafaaa403fe5c
|
|
BLAKE2b-256 checksum How to use checksums |
0f54d2321ce13b70c4a1fc190a68f8337961c79011eca8245f24aa5236ac48cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / sovaria_cli-0.2.8-py3-none-any.whl
| Download URL | sovaria_cli-0.2.8-py3-none-any.whl |
|---|---|
| Size | 148.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f96ec4b2be8be7800d3a1b5a9cb88d8b955590a9880feb41c2a8ffec94ad5a2c
|
|
BLAKE2b-256 checksum How to use checksums |
5dc923a620de1e7660f7730b9ab7e01caa1b07201a8f2624ddcb8b7e0bd10e26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log