| name | daytona-dev |
| description | Daytona development environment overview. Use when the user asks about Daytona setup, Daytona toolbox, dev environment, noVNC, CDP, server sandbox, secrets volume, Electron sandbox, standalone Chrome, validation, or artifacts volume. |
Skill: Daytona Dev Environment
Launch the OpenWork Electron app in a Daytona cloud sandbox. The real desktop
app runs on Daytona's XFCE/noVNC desktop stack and is accessible through your
browser.
Prerequisites
- Daytona CLI installed:
brew install daytonaio/cli/daytona or download from GitHub releases
- Logged in:
daytona login
- Using the "Different AI" org:
daytona organization use "Different AI"
Quick Start
1. Create and start the sandbox
bash .devcontainer/test-on-daytona.sh [branch-or-commit]
The helper uses the VNC snapshot, starts noVNC/Vite/Electron, and prints the
URLs. If the snapshot is missing, create it with
bash .devcontainer/create-daytona-openwork-snapshot.sh.
Use the Daytona setup as four reusable pieces. Prefer the focused skills when a
request names one piece directly:
test-on-daytona.sh for the real Electron/noVNC/CDP sandbox.
daytona-flow-validator for the observe -> act -> assert -> evidence loop.
test-server-on-daytona.sh for the cloud Den server sandbox.
daytona-electron-den for Electron connected to a Daytona Den server.
daytona-chrome-cdp for standalone Chrome in the sandbox, separate from Electron.
openwork-eval-secrets:/daytona-secrets for provider keys and eval-only secrets.
openwork-eval-artifacts:/daytona-artifacts for screenshots, validation notes, and recordings.
Focused skills:
daytona-cloud-server for cloud server and Den flows.
daytona-electron-den for two-sandbox Electron + Den validation.
daytona-flow-validator for pass/fail validation and evidence.
daytona-chrome-cdp for normal Chrome browser automation in Daytona.
daytona-secrets-volume for adding or verifying secrets.
daytona-electron-test for real Electron UI validation.
daytona-recording-artifacts for screenshots, recordings, and PR evidence.
Or SSH in after the helper prints the sandbox name:
daytona ssh <sandbox>
cd /workspace
2. Get the noVNC URL
daytona preview-url openwork-dev -p 6080
Open that URL in your browser. You'll see the real Electron OpenWork app.
4. Get other URLs
daytona preview-url openwork-dev -p 3005
daytona preview-url openwork-dev -p 9825
What's Running
| Service | Port | Description |
|---|
| noVNC | 6080 | See and interact with the Electron app in your browser |
| Vite HMR | 5173 | Hot module replacement for the React UI |
| CDP | 9825 | Chrome DevTools Protocol — for automation |
| Den Web | 3005 | Admin dashboard (only if MySQL is available) |
| Den API | 8788 | Control plane (only if MySQL is available) |
Running with Den (full stack)
The devcontainer's docker-compose.yml includes MySQL. If you're using Daytona's raw sandbox mode (no Docker Compose), the Den stack won't start because there's no MySQL. Two options:
Option A: Daytona sandbox + production Den
Just point the app to the production Den:
- Open the app via noVNC
- Sign in normally (uses production
app.openworklabs.com)
- All cloud features work
Option B: Daytona sandbox + local Den
If you need a local Den (for testing customization, restrictions, etc.):
- Use the
docker-compose.yml approach (requires Docker-in-Docker)
- Or run Den on your local machine and tunnel to the sandbox
Common Commands
daytona list
daytona ssh openwork-dev
daytona exec openwork-dev 'tail -50 /tmp/electron.log'
daytona exec openwork-dev 'tail -50 /tmp/vite.log'
daytona exec openwork-dev 'tail -50 /tmp/start-vnc.log'
daytona exec openwork-dev 'curl -s http://127.0.0.1:9825/json/list'
daytona exec openwork-dev 'bash .devcontainer/capture-daytona-screenshot.sh'
daytona exec openwork-dev 'bash -lc "pkill -f electron || true; pkill -f electron-dev || true"'
daytona exec openwork-dev 'bash -lc "cd /workspace && bash /opt/openwork-daytona/start-daytona-electron.sh --detach"'
daytona stop openwork-dev
daytona start openwork-dev
daytona delete openwork-dev
Updating the Code
Inside the sandbox, the repo is at /workspace. To pull latest:
daytona ssh openwork-dev
cd /workspace
git pull origin dev
pnpm install
Troubleshooting
Electron shows blank window:
Vite might not be running. Check tail /tmp/vite.log. Restart with:
cd /workspace/apps/app && OPENWORK_DEV_MODE=1 nohup npx vite --host 0.0.0.0 --port 5173 > /tmp/vite.log 2>&1 &
noVNC shows black screen:
Xvfb/XFCE may have crashed. Restart the desktop stack:
bash /opt/openwork-daytona/start-daytona-vnc.sh
"no space left on device" when creating sandbox:
Use --disk 10. The default Daytona disk can be 3 GB, which is not enough for
OpenWork dependencies and sidecar prep. Also don't use --context . — it
uploads the entire repo (with worktrees, node_modules). Use individual
--context flags for just the files needed.
Electron can't connect to localhost:5173:
Vite must listen on 0.0.0.0, not just localhost. The start script handles this, but if running manually use npx vite --host 0.0.0.0.