Skip to content

On-demand sandboxes

A sandbox is a fully isolated Tango Vision tenant: its own PostgreSQL database, a seeded building graph, and a dedicated tv-api stack — at its own subdomain. You develop against it instead of production.

Why

  • Isolation. Your sandbox's data is physically separate from every other tenant.
  • Realism. It's seeded with a parameterized building (mall or office) with spaces, elements, and telemetry — so your module renders against real-shaped data.
  • Disposability. Reset it when you've made a mess; it expires automatically.

Create one — from the dashboard

The platform console has a Sandboxes page (under the admin nav). Paste your API key, then New sandbox:

FieldMeaning
NameDisplay name; the subdomain is derived from it
Building typemall or office
Storeys1–50
Area (m²)Total gross area
TTL (days)1–30; auto-cleanup after

Within ~30 seconds the row flips to ready with a URL like:

https://acme-cafm-dev-x7k2.sandbox.k8s.tangovision.dev

Create one — from the API

bash
curl -X POST https://sandbox-api.k8s.tangovision.dev/api/v1/sandboxes \
  -H "Authorization: Bearer $SANDBOX_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "name": "acme-cafm-dev",
    "buildingType": "mall",
    "storeys": 3,
    "areaSqm": 20000,
    "ttlDays": 14
  }'

Response:

json
{
  "sandboxId": "sbx_...",
  "name": "acme-cafm-dev",
  "slug": "acme-cafm-dev-x7k2",
  "status": "ready",
  "apiUrl": "https://acme-cafm-dev-x7k2.sandbox.k8s.tangovision.dev",
  "expiresAt": "2026-06-13T...",
  "extensionsRemaining": 2
}

Lifecycle

ActionEndpoint
ListGET /api/v1/sandboxes
CreatePOST /api/v1/sandboxes
Extend TTLPOST /api/v1/sandboxes/:id/extend (body { "days": 7 })
Reset (wipe + re-seed)POST /api/v1/sandboxes/:id/reset
DeleteDELETE /api/v1/sandboxes/:id

Quotas

To keep the shared cluster healthy:

  • 3 concurrently-active sandboxes per external developer
  • 2 TTL extensions per sandbox
  • 30 day maximum TTL

These are enforced by the provisioner; you'll get a clear 429/400 when you hit them.

What's inside a fresh sandbox

  • An organization + site + building seeded by @tv/sandbox-seed
  • Storeys, spaces, elements, and points sized by your parameters
  • Up to 30 days of backfilled telemetry (configurable via seedTelemetryDays)
  • The standard tv-api schema, so every platform endpoint works

Point your module's PlatformContext at the sandbox's apiUrl and develop as if it were production — because, structurally, it is.

Built on the Tango Vision platform.