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
| Command | What it does |
|---|---|
veris sandbox get | One sandbox: status, boot source, expiry and its twins. --watch holds a live panel until Ctrl-C |
veris sandbox list | Sandboxes of the environment in use, --env NAME for another, --all for every one |
veris sandbox delete | Tear a sandbox down |
veris sandbox reset | Restore every twin to its boot seed and set the clock live |
veris sandbox services | The twins: list with row counts, get for URLs and tables, manual for the twin’s own testing notes |
veris sandbox data | The rows: schema, get, add, set, delete |
veris sandbox trace | What 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 clock | The sandbox’s shared virtual clock, and set to freeze, offset or release it |
veris sandbox exports | The 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:
| Command | HTTP |
|---|---|
veris env get | GET /v1/environments/{env} |
veris up | POST /v1/environments/{env}/sandboxes |
veris sandbox get | GET /v1/sandboxes/{id} |
veris sandbox services list | GET /v1/sandboxes/{id}/services |
veris sandbox list | GET /v1/environments/{env}/sandboxes |
veris sandbox reset | POST /v1/environments/{env}/sandboxes/{id}/reset |
veris sandbox clock | GET /v1/environments/{env}/sandboxes/{id}/clock |
veris sandbox clock set | PATCH /v1/environments/{env}/sandboxes/{id}/clock |
veris baseline promote | POST /v1/environments/{env}/sandboxes/{id}/promote |
veris sandbox delete | DELETE /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.