Documentation
A sandbox is a private, tenant-scoped workspace where you develop an app of your own against Veltrix before it is installed. You write the app on your machine, the Veltrix CLI syncs it into the sandbox, and the portal validates the manifest, lets you edit files in the browser, runs the app's handlers in an isolated process, and previews its UI. Code in a sandbox is visible only to your organization, and a sandbox that stops being used expires automatically.
Sandboxes are for app authors. They are not where you manage security configurations; for that see Configuration Canvas. For how to write an app, see App Development.
/sandboxes).The portal lists, inspects, edits and deletes sandboxes, but a sandbox is created from the CLI.
sandbox:write scope (plus sandbox:execute if the CLI should run handlers), or it is bound to a role that grants sandbox access, such as an administrator role. See API Keys & Tokens.veltrix login
veltrix sandbox create my-sandbox --app <app-id>
veltrix dev ./my-app --sandbox my-sandbox
The empty states in the portal show this same three-line snippet.
The Sandboxes page lists every sandbox in your organization, newest first.
| Column | Meaning |
|---|---|
| Name | Click to open the detail page. The copy icon next to it copies the veltrix dev command for this sandbox. |
| App | The app id the sandbox was created for. |
| Status | See below. Hover the badge for its description. |
| Files | File count and total size, or "No files synced yet". |
| Last sync | Relative time of the last sync, or "Never synced". |
| Expires | For example "Expires in 6 days"; shown in red once expired. |
Delete removes the sandbox and its synced files after a confirmation. Your local files are not affected, and you can recreate the sandbox with the CLI. Refresh reloads the list.
| Status | Meaning |
|---|---|
| Active | Ready. The CLI can sync files and run the dev loop. |
| Syncing | The CLI is syncing local files right now. |
| Error | The last sync or dev session failed. Check the CLI output; handlers cannot be run until you fix the errors and resync. |
| Expired | The sandbox passed its expiry. Its files were removed and it no longer accepts syncs. Delete it and create a new one. |
Open a sandbox to see its detail page: the header (name, status, app, last sync, expiry, the dev command with a copy button, Refresh and Delete), then four cards. The page updates live when the CLI syncs or when a peer edits a file.
The button appears once the sandbox has synced. It scaffolds a new configuration type and adds it to the manifest.
| Field | Meaning |
|---|---|
| ID | Required. Becomes the folder and manifest id. A lowercase slug such as threat-intel. |
| Name (optional) | Label shown in the pipeline and canvas. Defaults to a title-cased id. |
| Component types (optional) | Comma-separated target roles, for example server, forwarder. You can edit them later in the manifest. |
It creates config-types/<id>/ with canvas.yaml, defaults.yaml and the six handlers (validate, deploy, rollback, healthCheck, driftDetect, getStatus), and the new files sync down to your local workspace.
Uploads are checked on the way in: paths must stay inside the sandbox, executable file types and links are rejected, names starting with .veltrix are reserved, and there are caps on file count and total size.
The Checks card runs your app's handlers against a draft so you can see them work before you ship.
A run result shows pass or fail, the handler's return value, duration, whether it timed out, and the console output the handler produced.
sandbox, and only use a credential tagged sandbox for the same tool. Production credentials are unreachable.If the manifest declares a client entry and at least one page with nav: sidebar, the Preview card renders the app's pages inside the portal, the way an installed app would look, with a page switcher.
| Setting | Value |
|---|---|
| Sandboxes per developer | Set by the platform operator. The shipped deployment script uses 10; the server's own default is 2. Expired sandboxes free their slot. |
| Idle expiry | 7 days by default, renewed by every sync and save. A cleanup job (every 15 minutes by default) marks sandboxes expired and deletes their files. |
| Size and file count | 20 MB total and 500 files per sandbox by default. |
| Handler time and memory | 30 seconds and 256 MB per run, two concurrent runs per organization, by default. |
The quota is per developer, not per organization. In the CLI a developer is identified by the API key, so give each person their own key; people who share one key share one quota. In the portal the developer is the signed-in user.
| Who | What is needed |
|---|---|
| Portal user | The sandbox manage permission on their role (an all-access role also works). |
| CLI or API key | Scope sandbox:read to list and view; sandbox:write to create, sync, edit and delete; sandbox:execute to run handlers. Write does not imply execute. A key whose role has the sandbox manage permission (or all access) is also accepted for every action. |
veltrix sandbox create.