daytona-dev
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.
git clone --depth 1 https://github.com/Devin-AXIS/iPolloWork /tmp/daytona-dev && cp -r /tmp/daytona-dev/.opencode/skills/daytona-dev ~/.claude/skills/daytona-devSKILL.md
# 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`.
Search and summarize material from the Acme research service.
Agent-first screenshots — an agent drives the real app via CDP and produces clean, defect-free product screenshots (newsletters, landing pages, social, decks, PR). Dual-channel verification (DOM + pixels + vision) in a capture loop. Use for any "take/redo screenshots of the app" task.
Resolve the correct library and retrieve a small, relevant set of version-aware official documentation before answering a technical question.
Use the current project dependency versions and Context7 documentation to implement or upgrade code without importing APIs from a different release line.
Create an OpenCode plugin for iPolloWork. Scaffolds the plugin file with the correct API shape, tool definitions, and hook registration. Use when the user asks to 'create a plugin', 'write a plugin', or 'make a plugin that does X'.
Launch and control standalone Chrome in a Daytona sandbox via CDP. Use for web sign-in, OAuth, Den Web setup, browser-only flows, or when the app should not be driven through Electron CDP.
Daytona cloud server, Den sandbox, desktop plus cloud e2e, marketplace server, worker proxy, cloud auth, org policies, connect Electron to Den. Use for server-side setup in validated flows.
Electron and Den, desktop plus cloud, two-sandbox e2e, cloud auth, marketplace, org policy, worker proxy, provider sync, desktop handoff. Validate Electron against a Daytona Den server with unified proof.