Deploying
Launch a streaming cloud desktop from your constitution and open it in your browser.
Overview
Dictumal creates a DigitalOcean droplet, runs cloud-init, and brings up XFCE + TigerVNC + Guacamole + HTTPS. Deployment does not require per-instance DNS setup.
What Gets Deployed
- XFCE Desktop — A lightweight Linux desktop environment.
- TigerVNC + Apache Guacamole — VNC provides the desktop session and Guacamole streams it to your browser over HTTPS.
- Nginx + HTTPS — Reverse proxy for
/guacamole/using a self-signed certificate. - Firewall (UFW) — Allows ports 22, 80, 443.
Deploying Step by Step
- Open your constitution and click the Deploy button (rocket icon) next to the Export button.
- Step 1: configure Vigilance (optional Coding Practice mode, local clipboard classifier model, and screenshot testing toggle).
- Step 2: choose your machine and region.
- With Vigilance off, choose from the available machine sizes.
- With Vigilance on, machine size is fixed to Performance (
s-4vcpu-8gb) and you only choose region.
- Step 3: choose Pre-installed Apps (currently VS Code), then click Deploy Now to start provisioning.
Regions are currently US-only: San Francisco 3 (sfo3), New York 1 (nyc1), and New York 3 (nyc3). Default is sfo3.
Expected Timeline And Statuses
After deploy, you will see:
- PROVISIONING — Droplet is being created (typically 30s to 2m).
- CONFIGURING — Cloud-init installs desktop and gateway stack (typically 3m to 10m).
- ACTIVE — HTTPS Guacamole endpoint is ready and desktop launch buttons are enabled.
Polling runs every 5 seconds, so final UI updates can lag by one poll cycle after backend status changes.
Accessing Your Desktop
Once active, click Open Desktop. This calls /api/deployments/[id]/launch, which redirects to Guacamole with a short-lived encrypted token.
The Instances UI prefers a single gateway launch button for normal use. Direct-IP fallback still exists for debugging via /api/deployments/[id]/launch?target=ip.
Gateway Host Behavior
- Default preferred host:
stream.the-next-lab.com. - Override with
NEXT_PUBLIC_STREAM_GATEWAY_HOST. - Fallback: deployment IP is used when gateway host is blank or launch target is explicitly set to
ip.
Destroying a Deployment
Click Destroy in the deploy dialog or instances page. The app calls DELETE /api/deployments/[id], attempts DO droplet deletion, and marks the deployment as DESTROYED.
Troubleshooting Quick Hits
- If the deploy button spins and then resets, check the inline error in the deploy dialog (quota limits, unsupported region, and provider failures are surfaced there).
401from deployment routes: verify you are signed in and auth environment is correct.- Stuck in
CONFIGURINGfor a long time: check droplet log/var/log/dictumal-init.log. - ACTIVE appears delayed: wait one extra 5s poll cycle or refresh.