Skip to Content
Referenceveris sandbox

veris sandbox

Read and change any sandbox, by its id.

veris up, veris status and veris down act on this folder’s sandbox, the one .veris/twin.local.yaml remembers, and you never type an id. veris sandbox is the same work on any sandbox: --id names one, and without it every subcommand means this folder’s.

The subcommands

CommandWhat it does
veris sandbox getOne sandbox: status, boot source, expiry and its twins. --watch holds a live panel until Ctrl-C
veris sandbox listSandboxes of the environment in use, --env NAME for another, --all for every one
veris sandbox deleteTear a sandbox down
veris sandbox resetRestore every twin to its boot seed and set the clock live
veris sandbox servicesThe twins: list with row counts, get for URLs and tables, manual for the twin’s own testing notes
veris sandbox dataThe rows: schema, get, add, set, delete
veris sandbox traceWhat the sandbox received, newest first. --service, --tier and --limit narrow it, --since takes a trace row id, not a time, and keeps the rows above it, --follow tails it, --body ID prints one entry whole
veris sandbox clockThe sandbox’s shared virtual clock, and set to freeze, offset or release it
veris sandbox exportsThe twins’ env hints as shell exports, for eval

Every one of them takes --json.

Resetting

veris sandbox reset rebuilds every twin as one fresh coherent world. Run it at suite boundaries, not mid-test.

A sandbox booted from a snapshot or a promoted baseline refuses reset with 409: that world is an image, and a fresh copy of it is veris down && veris up.

Environments, snapshots and baselines

veris sandbox works on sandboxes only. The environment they are deployed from is veris env, a world worth keeping is veris snapshot, and what every new sandbox boots is veris baseline.

Per-twin control

Seeding data, moving the clock and reading the request trace reach each twin’s own /veris/* control plane, which veris sandbox data, veris sandbox clock and veris sandbox trace call for you. veris sandbox services get prints each twin’s url and control_url when you would rather call it directly. See the /veris/* control plane.

HTTP equivalents

Each of these is one call on the control plane, for a caller with no binary to hand:

CommandHTTP
veris env getGET /v1/environments/{env}
veris upPOST /v1/environments/{env}/sandboxes
veris sandbox getGET /v1/sandboxes/{id}
veris sandbox services listGET /v1/sandboxes/{id}/services
veris sandbox listGET /v1/environments/{env}/sandboxes
veris sandbox resetPOST /v1/environments/{env}/sandboxes/{id}/reset
veris sandbox clockGET /v1/environments/{env}/sandboxes/{id}/clock
veris sandbox clock setPATCH /v1/environments/{env}/sandboxes/{id}/clock
veris baseline promotePOST /v1/environments/{env}/sandboxes/{id}/promote
veris sandbox deleteDELETE /v1/environments/{env}/sandboxes/{id}

All take X-API-Key: $VERIS_API_KEY.

Send a body on every POST, even where the route takes no parameters. Use -d '{}' with Content-Type: application/json. The load balancer refuses a bodyless POST with 411 before it reaches the API.