daytona-dev · git:20260822.d775897 · 2026-08-22 · sha256 aef2b9627925eb7e
daytona-dev git:20260822.d775897B
Immutable. This exact content is served forever at /api/v1/blob/aef2b9627925eb7e.
--- 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 iPolloWork 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](https://github.com/daytonaio/daytona/releases) - Logged in: `daytona login` - Using the right Daytona organization for your workspace: `daytona organization use "<org-name>"` ## Quick Start ### 1. Create and start the sandbox ```bash 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-ipollowork-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. - `fraimz` 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. - `ipollowork-eval-secrets:/daytona-secrets` for provider keys and eval-only secrets. - `ipollowork-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. - `fraimz` 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: ```bash daytona ssh <sandbox> cd /workspace ``` ### 2. Get the noVNC URL ```bash daytona preview-url ipollowork-dev -p 6080 ``` Open that URL in your browser. You'll see the real Electron iPolloWork app. ### 4. Get other URLs ```bash # Den Web dashboard (if Den stack is running) daytona preview-url ipollowork-dev -p 3005 # CDP debugging endpoint daytona preview-url ipollowork-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: 1. Open the app via noVNC 2. Sign in normally (uses production `app.ipolloworklabs.com`) 3. All cloud features work ### Option B: Daytona sandbox + local Den If you need a local Den (for testing customization, restrictions, etc.): 1. Use the `docker-compose.yml` approach (requires Docker-in-Docker) 2. Or run Den on your local machine and tunnel to the sandbox ## Common Commands ```bash # List running sandboxes daytona list # SSH into sandbox daytona ssh ipollowork-dev # Check logs daytona exec ipollowork-dev 'tail -50 /tmp/electron.log' daytona exec ipollowork-dev 'tail -50 /tmp/vite.log' daytona exec ipollowork-dev 'tail -50 /tmp/start-vnc.log' # Inspect Electron CDP targets daytona exec ipollowork-dev 'curl -s http://127.0.0.1:9825/json/list' # Capture a persistent screenshot artifact daytona exec ipollowork-dev 'bash .devcontainer/capture-daytona-screenshot.sh' # Restart just the Electron app daytona exec ipollowork-dev 'bash -lc "pkill -f electron || true; pkill -f electron-dev || true"' daytona exec ipollowork-dev 'bash -lc "cd /workspace && bash /opt/ipollowork-daytona/start-daytona-electron.sh --detach"' # Stop the sandbox (preserves state) daytona stop ipollowork-dev # Start it again daytona start ipollowork-dev # Delete (destroys everything) daytona delete ipollowork-dev ``` ## Updating the Code Inside the sandbox, the repo is at `/workspace`. To pull latest: ```bash daytona ssh ipollowork-dev cd /workspace git pull origin dev pnpm install # Then restart Vite/Electron ``` ## Troubleshooting **Electron shows blank window:** Vite might not be running. Check `tail /tmp/vite.log`. Restart with: ```bash cd /workspace/apps/app && IPOLLOWORK_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 bash /opt/ipollowork-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 iPolloWork 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`.