Reference
CLI reference
The complete zeishctl command tree, grouped by workflow.
On this page
Log in with OAuth
Authenticate zeishctl with browser OAuth and PKCE.
Command: zeishctl auth login
The CLI opens the authorization URL and stores the resulting tokens in its config directory with restrictive permissions.
1zeishctl auth login2zeishctl auth statusUse an API key
Authenticate the CLI with an environment variable or stored key.
Command: zeishctl auth api-key TOKEN
ZEISH_API_KEY is preferred for automation. Use --store only when the local config should retain the key. An environment key is not written to disk.
1export ZEISH_API_KEY="zeish_live_..."2zeishctl sandboxes list3zeishctl auth api-key zeish_live_... --storeInspect or clear CLI auth
Check the active auth method or remove stored OAuth tokens.
Command: zeishctl auth status | zeishctl auth logout
status reports whether the CLI uses an API key or OAuth. logout clears stored access and refresh tokens.
1zeishctl auth status2zeishctl auth logoutList templates, volumes, networks, and organizations
Discover the resources available to the current identity.
Command: zeishctl templates | volumes | networks | orgs
These commands return the authenticated API response as formatted JSON. Volumes and networks are organization resources and require the matching permission.
1zeishctl templates2zeishctl volumes3zeishctl networks4zeishctl orgsList or read secrets
Inspect secret metadata or read one audited value.
Command: zeishctl secrets list | get SECRET_ID
list never includes values. get returns the value and is audited. Treat the output as sensitive.
1zeishctl secrets list2zeishctl secrets get SECRET_IDCreate, update, or delete secrets
Manage Vault-backed secrets without putting material in shell history.
Command: zeishctl secrets create | update | delete
Create and update read secret material from stdin by default. Use --value-file for a file. --value-unsafe exposes the value in argv and shell history and should be avoided.
1printf '%s' "$GITHUB_TOKEN" | zeishctl secrets create github-token \2 --provider-reference secret/data/ci/github3zeishctl secrets update SECRET_ID --name github-token-v2 < token.txt4zeishctl secrets delete SECRET_IDManage SSH keys
Register, list, and revoke public keys used by sandboxes.
Command: zeishctl ssh-keys list | add | remove
add reads ~/.ssh/id_ed25519.pub or ~/.ssh/id_rsa.pub unless --path is supplied. Only public key material is uploaded.
1zeishctl ssh-keys list2zeishctl ssh-keys add workstation --path ~/.ssh/id_ed25519.pub3zeishctl ssh-keys remove KEY_IDList and create sandboxes
Provision a sandbox with a template and optional resource overrides.
Command: zeishctl sandboxes list | create
create requires a name and --template-id. CPU is measured in cores, memory in MB, and region defaults to bremen.
1zeishctl sandboxes list2zeishctl sandboxes create agent-run \3 --template-id TEMPLATE_ID \4 --cpu 4 \5 --memory 4096Inspect or clone a sandbox
Fetch sandbox detail or create a branch from an existing sandbox.
Command: zeishctl sandboxes get | clone
clone accepts an optional --name and returns the new sandbox record.
1zeishctl sandboxes get SANDBOX_ID2zeishctl sandboxes clone SANDBOX_ID --name agent-branchControl sandbox lifecycle
Start, pause, resume, stop, or delete a sandbox.
Command: zeishctl sandboxes start | pause | resume | stop | delete
Lifecycle operations are asynchronous. Poll get or events before using a runtime-dependent operation. delete is permanent.
1zeishctl sandboxes start SANDBOX_ID2zeishctl sandboxes pause SANDBOX_ID3zeishctl sandboxes resume SANDBOX_ID4zeishctl sandboxes stop SANDBOX_ID5zeishctl sandboxes delete SANDBOX_IDOpen sandbox access
Get data-plane credentials, a browser terminal, SSH access, preview codes, or tunnel access.
Command: zeishctl sandboxes exec-access | shell | ssh | preview-code | tunnel-access
exec-access prints a scoped credential. shell opens the terminal URL. ssh uses local OpenSSH. preview-code and tunnel-access accept short-lived TTL options.
1zeishctl sandboxes exec-access SANDBOX_ID2zeishctl sandboxes shell SANDBOX_ID3zeishctl sandboxes ssh SANDBOX_ID -- -L LOCAL_PORT:REMOTE_HOST:REMOTE_PORT4zeishctl sandboxes preview-code SANDBOX_ID 3000 --ttl-seconds 6005zeishctl sandboxes tunnel-access SANDBOX_ID --ttl-seconds 60Sync sandbox SSH keys
Apply the current user SSH key set to a running sandbox.
Command: zeishctl sandboxes sync-ssh-key SANDBOX_ID
Run this after adding or removing a user key. The sandbox must have a runtime that can receive the update.
1zeishctl sandboxes sync-ssh-key SANDBOX_IDRead sandbox logs and events
Inspect bounded workload output and lifecycle history.
Command: zeishctl sandboxes logs | events SANDBOX_ID
Logs and events are control-plane reads. Use them to diagnose provisioning and correlate state transitions with a run.
1zeishctl sandboxes logs SANDBOX_ID2zeishctl sandboxes events SANDBOX_IDManage snapshots
Create, list, and delete snapshots for one sandbox.
Command: zeishctl sandboxes snapshots SANDBOX_ID
A snapshot is sandbox-scoped. Create it from a live runtime, wait until ready, then use the snapshot as a repeatable checkpoint.
1zeishctl sandboxes snapshots SANDBOX_ID create before-deploy2zeishctl sandboxes snapshots SANDBOX_ID3zeishctl sandboxes snapshots SANDBOX_ID delete SNAPSHOT_IDRun a command
Execute a command through the sandboxd gRPC data plane.
Command: zeishctl sandboxes exec SANDBOX_ID -- COMMAND
The CLI streams stdout and stderr and prints the final exit code. It obtains scoped access automatically.
1zeishctl sandboxes exec SANDBOX_ID -- python agent.py2zeishctl sandboxes exec SANDBOX_ID -- env RUN_ID=123 ./workerRead, write, and manage files
Use sandboxd for scoped filesystem operations.
Command: zeishctl sandboxes files SANDBOX_ID read | write | ls | mkdir | rm | mv
Paths are checked inside the sandbox file root. mkdir supports --parents, rm supports --recursive, and mv supports --overwrite.
1zeishctl sandboxes files SANDBOX_ID read /workspace/output.json2zeishctl sandboxes files SANDBOX_ID write /workspace/input.txt hello3zeishctl sandboxes files SANDBOX_ID ls /workspace --recursive4zeishctl sandboxes files SANDBOX_ID mkdir /workspace/results --parents5zeishctl sandboxes files SANDBOX_ID mv /workspace/a /workspace/b --overwrite6zeishctl sandboxes files SANDBOX_ID rm /workspace/results --recursiveUpload and download files
Stream files between the local machine and a sandbox.
Command: zeishctl sandboxes files SANDBOX_ID upload | download
Transfers use the sandboxd streaming file APIs. Use an explicit local path for output and keep large artifacts on a volume or snapshot when they must persist.
1zeishctl sandboxes files SANDBOX_ID upload ./input.json /workspace/input.json2zeishctl sandboxes files SANDBOX_ID download /workspace/output.json ./output.jsonUse the API escape hatch
Call any authenticated HTTP method and path supported by the server.
Command: zeishctl api METHOD PATH [--body JSON]
The path is appended to ZEISH_API_URL. Use this for a route that does not yet have a dedicated CLI command. Responses are printed as formatted JSON.
1zeishctl api GET /api/v1/public/sandboxes2zeishctl api POST /api/v1/public/sandboxes \3 --body '{"name":"agent-run","templateId":"TEMPLATE_ID"}'Generate completions or upgrade
Integrate zeishctl into a shell and keep it current.
Command: zeishctl completion SHELL | zeishctl upgrade
completion writes a script to stdout for bash, zsh, fish, or another supported shell. upgrade installs the latest release or a requested --version.
1zeishctl completion zsh > ~/.zsh/completions/_zeishctl2zeishctl upgrade3zeishctl upgrade --version 0.1.0Log in
Authenticate the CLI with browser OAuth and PKCE.
Command: zeishctl auth login
The CLI opens the authorization URL and stores tokens in its config directory.
1zeishctl auth loginAuthenticate with an API key
Authenticate the CLI with an API key.
Command: zeishctl auth api-key TOKEN --store
Use ZEISH_API_KEY for automation. Add --store only when the local config should retain the key.
1zeishctl auth api-key TOKEN --storeLog out
Clear stored OAuth credentials.
Command: zeishctl auth logout
This removes the local access and refresh tokens.
1zeishctl auth logoutCheck auth status
See whether the CLI uses an API key or OAuth.
Command: zeishctl auth status
The output reports the active method without printing the credential.
1zeishctl auth statusGenerate shell completions
Write completion scripts for the CLI.
Command: zeishctl completion zsh
The shell is a positional argument. Redirect the script into your shell completion directory.
1zeishctl completion zshUpgrade zeishctl
Install the latest or a selected CLI release.
Command: zeishctl upgrade --version 0.1.0
Omit --version to use the latest published release.
1zeishctl upgrade --version 0.1.0List organizations
List organizations visible to the authenticated identity.
Command: zeishctl orgs
The command calls the versioned organization endpoint and prints JSON.
1zeishctl orgsList templates
List visible sandbox templates.
Command: zeishctl templates
Use a returned template ID with sandboxes create.
1zeishctl templatesList volumes
List organization volumes.
Command: zeishctl volumes
The response includes cursor pagination when more results are available.
1zeishctl volumesList networks
List organization networks.
Command: zeishctl networks
Use a returned network ID when creating or updating a sandbox.
1zeishctl networksList secrets
List secret metadata.
Command: zeishctl secrets list
Values are excluded from the list response.
1zeishctl secrets listRead a secret
Read one audited secret value.
Command: zeishctl secrets get SECRET_ID
Protect the terminal output. Secret reads are audited.
1zeishctl secrets get SECRET_IDCreate a secret
Create a Vault-backed secret from stdin or a file.
Command: zeishctl secrets create NAME --provider-reference REF < value.txt
Use --value-file for a file. Avoid --value-unsafe because it exposes material in argv.
1zeishctl secrets create NAME --provider-reference REF < value.txtUpdate a secret
Update secret metadata or value.
Command: zeishctl secrets update SECRET_ID --name NAME < value.txt
Only supplied fields change. Value input follows the same safe stdin and file rules as create.
1zeishctl secrets update SECRET_ID --name NAME < value.txtDelete a secret
Delete one secret.
Command: zeishctl secrets delete SECRET_ID
Deletion is audited and removes provider material.
1zeishctl secrets delete SECRET_IDList SSH keys
List registered public keys.
Command: zeishctl ssh-keys list
Only public key data is returned.
1zeishctl ssh-keys listAdd an SSH key
Register a public SSH key.
Command: zeishctl ssh-keys add NAME --path ~/.ssh/id_ed25519.pub
If --path is omitted, the CLI checks common ed25519 and RSA public key paths.
1zeishctl ssh-keys add NAME --path ~/.ssh/id_ed25519.pubRemove an SSH key
Revoke a registered public key.
Command: zeishctl ssh-keys remove KEY_ID
Sync the new key set into an existing sandbox separately.
1zeishctl ssh-keys remove KEY_IDList sandboxes
List compact sandboxes in the organization.
Command: zeishctl sandboxes list
Use sandboxes get for detail and runtime metadata.
1zeishctl sandboxes listCreate a sandbox
Create a MicroVM sandbox.
Command: zeishctl sandboxes create NAME --template-id TEMPLATE_ID --cpu 4 --memory 4096
CPU is cores, memory is MB, and region defaults to bremen.
1zeishctl sandboxes create NAME --template-id TEMPLATE_ID --cpu 4 --memory 4096Get sandbox details
Read one sandbox record.
Command: zeishctl sandboxes get SANDBOX_ID
Poll this command when waiting for an asynchronous lifecycle transition.
1zeishctl sandboxes get SANDBOX_IDClone a sandbox
Create a branch from an existing sandbox.
Command: zeishctl sandboxes clone SANDBOX_ID --name agent-copy
The name flag is optional.
1zeishctl sandboxes clone SANDBOX_ID --name agent-copyStart a sandbox
Request a stopped sandbox runtime.
Command: zeishctl sandboxes start SANDBOX_ID
Wait for running before using commands, files, or desktop access.
1zeishctl sandboxes start SANDBOX_IDPause a sandbox
Pause a runtime while retaining state.
Command: zeishctl sandboxes pause SANDBOX_ID
Resume the sandbox before requesting data-plane work.
1zeishctl sandboxes pause SANDBOX_IDResume a sandbox
Resume a paused runtime.
Command: zeishctl sandboxes resume SANDBOX_ID
Poll get or events until the status is running.
1zeishctl sandboxes resume SANDBOX_IDStop a sandbox
Stop a runtime without deleting its record.
Command: zeishctl sandboxes stop SANDBOX_ID
Stopped sandboxes retain their configuration.
1zeishctl sandboxes stop SANDBOX_IDDelete a sandbox
Permanently delete a sandbox.
Command: zeishctl sandboxes delete SANDBOX_ID
Deletion is irreversible.
1zeishctl sandboxes delete SANDBOX_IDRead sandbox logs
Read captured sandbox output.
Command: zeishctl sandboxes logs SANDBOX_ID
The public API returns bounded history.
1zeishctl sandboxes logs SANDBOX_IDRead sandbox events
Read lifecycle events.
Command: zeishctl sandboxes events SANDBOX_ID
Use events to correlate asynchronous state changes.
1zeishctl sandboxes events SANDBOX_IDGet exec access
Mint data-plane credentials.
Command: zeishctl sandboxes exec-access SANDBOX_ID
The credential is short-lived and sandbox-scoped.
1zeishctl sandboxes exec-access SANDBOX_IDSync sandbox SSH keys
Apply the user's current keys to a runtime.
Command: zeishctl sandboxes sync-ssh-key SANDBOX_ID
Run this after adding or removing a user SSH key.
1zeishctl sandboxes sync-ssh-key SANDBOX_IDCreate a preview code
Mint temporary HTTP access to a port.
Command: zeishctl sandboxes preview-code SANDBOX_ID 3000 --ttl-seconds 300 --path /health
The port is positional. TTL and path are optional.
1zeishctl sandboxes preview-code SANDBOX_ID 3000 --ttl-seconds 300 --path /healthCreate tunnel access
Mint WebSocket access to exposed TCP ports.
Command: zeishctl sandboxes tunnel-access SANDBOX_ID --ttl-seconds 60
Use the SDK bridge or a compatible WebSocket client.
1zeishctl sandboxes tunnel-access SANDBOX_ID --ttl-seconds 60List sandbox snapshots
List snapshots for one sandbox.
Command: zeishctl sandboxes snapshots SANDBOX_ID
Snapshot IDs are sandbox-scoped.
1zeishctl sandboxes snapshots SANDBOX_IDCreate a sandbox snapshot
Capture a runtime checkpoint.
Command: zeishctl sandboxes snapshots SANDBOX_ID create DISPLAY_NAME
Create from a live runtime and wait for readiness.
1zeishctl sandboxes snapshots SANDBOX_ID create DISPLAY_NAMEDelete a sandbox snapshot
Delete one snapshot.
Command: zeishctl sandboxes snapshots SANDBOX_ID delete SNAPSHOT_ID
Snapshot deletion is irreversible.
1zeishctl sandboxes snapshots SANDBOX_ID delete SNAPSHOT_IDExecute a command
Stream a command through sandboxd.
Command: zeishctl sandboxes exec SANDBOX_ID -- COMMAND
Stdout and stderr are streamed and the exit code is printed.
1zeishctl sandboxes exec SANDBOX_ID -- COMMANDOpen a shell
Open the browser terminal for a sandbox.
Command: zeishctl sandboxes shell SANDBOX_ID
The CLI prints the terminal URL and opens it when a browser is available.
1zeishctl sandboxes shell SANDBOX_IDConnect over SSH
Connect with local OpenSSH.
Command: zeishctl sandboxes ssh SANDBOX_ID
Pass additional SSH arguments after -- and use --identity-file when needed.
1zeishctl sandboxes ssh SANDBOX_IDRead a file
Read file contents from a sandbox.
Command: zeishctl sandboxes files SANDBOX_ID read /workspace/output.json
The path is resolved below the sandbox file root.
1zeishctl sandboxes files SANDBOX_ID read /workspace/output.jsonWrite a file
Write text to a sandbox file.
Command: zeishctl sandboxes files SANDBOX_ID write /workspace/input.txt hello
Parent directories are created by the CLI.
1zeishctl sandboxes files SANDBOX_ID write /workspace/input.txt helloList a directory
List directory entries.
Command: zeishctl sandboxes files SANDBOX_ID ls /workspace --recursive
Use --recursive for nested entries.
1zeishctl sandboxes files SANDBOX_ID ls /workspace --recursiveCreate a directory
Create a directory in the sandbox.
Command: zeishctl sandboxes files SANDBOX_ID mkdir /workspace/results --parents
Use --parents to create missing ancestors.
1zeishctl sandboxes files SANDBOX_ID mkdir /workspace/results --parentsRemove a path
Remove a file or directory.
Command: zeishctl sandboxes files SANDBOX_ID rm /workspace/results --recursive
Use --recursive for directories. Removing the file root is rejected.
1zeishctl sandboxes files SANDBOX_ID rm /workspace/results --recursiveRename a path
Rename or move a path.
Command: zeishctl sandboxes files SANDBOX_ID mv /workspace/a /workspace/b --overwrite
Use --overwrite to replace an existing destination.
1zeishctl sandboxes files SANDBOX_ID mv /workspace/a /workspace/b --overwriteDownload a file
Stream a sandbox file to local storage.
Command: zeishctl sandboxes files SANDBOX_ID download /workspace/output.json ./output.json
The destination is a local path.
1zeishctl sandboxes files SANDBOX_ID download /workspace/output.json ./output.jsonUpload a file
Stream a local file into the sandbox.
Command: zeishctl sandboxes files SANDBOX_ID upload ./input.json /workspace/input.json
Parent directories are created for the first upload chunk.
1zeishctl sandboxes files SANDBOX_ID upload ./input.json /workspace/input.jsonCall an arbitrary API route
Use the CLI escape hatch for an HTTP operation without a named command.
Command: zeishctl api GET /api/v1/public/sandboxes
Pass JSON with --body. The request uses the configured API key or OAuth session.
1zeishctl api GET /api/v1/public/sandboxes