with one click
dev-tunnel
Full dev setup with tunnel (automatic) and CLI authentication
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Full dev setup with tunnel (automatic) and CLI authentication
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Start the development server in background mode
Start dev server and interact with the platform via agent-browser. Use when user asks to browse, test, or demo the platform UI, connect services, or perform any browser-based interaction with the local dev environment.
Reset turbo environment (clean node_modules, reinstall, sync DB)
Check if a PR, commit, or tag has been deployed to production
Query, investigate, and manage Sentry issues for debugging and incident response
Create or update a PR and hand it off to a coding agent worker via load balancing. Removes pending label if present, then assigns a worker.
| name | dev-tunnel |
| description | Full dev setup with tunnel (automatic) and CLI authentication |
| context | main |
Full development environment setup with Cloudflare tunnel and CLI authentication. Useful for webhook testing.
Note: Since issue #1726, the web app automatically starts a Cloudflare tunnel when running pnpm dev. This operation is useful when you need the complete setup including CLI authentication.
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/turbo" && pnpm install
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/turbo" && pnpm build
Use Bash tool with run_in_background: true for both commands in parallel (two separate Bash calls in the same message):
Dev server (use tee to persist logs for /dev-logs after context compaction):
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/turbo" && pnpm dev 2>&1 | tee "$PROJECT_ROOT/turbo/.dev-server.log"
Runner:
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/turbo" && pnpm runner
Both return a task_id for monitoring. The web app will automatically start a Cloudflare tunnel. The runner takes several minutes to initialize but doesn't block the app — only chat/agent features need it.
Use TaskOutput with the task_id from Step 3 to monitor the background task output. Look for:
[tunnel] Tunnel URL: followed by the URLReady in (Next.js ready message)Poll TaskOutput every few seconds until the tunnel URL appears (up to ~60 seconds). Extract the tunnel URL (format: https://*.trycloudflare.com).
If the tunnel URL does not appear within ~60 seconds, report the failure and let the user investigate.
export VM0_API_URL=<tunnel-url>
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/e2e" && pnpm install
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/e2e" && npx playwright install chromium
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/turbo/apps/cli" && pnpm link --global
Read Clerk credentials from turbo/apps/web/.env.local:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY → CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY → CLERK_SECRET_KEYThen run:
PROJECT_ROOT=$(git rev-parse --show-toplevel)
cd "$PROJECT_ROOT/e2e" && \
CLERK_PUBLISHABLE_KEY=<publishable-key> \
CLERK_SECRET_KEY=<secret-key> \
npx tsx cli-auth-automation.ts $(printenv VM0_API_URL)
cat ~/.vm0/config.json
✅ Dev server with tunnel started!
🔧 Runner deployment started in background (takes several minutes)
Local: http://localhost:3000
Tunnel: <tunnel-url>
VM0_API_URL exported to: <tunnel-url>
✅ CLI authentication successful!
Auth token saved to: ~/.vm0/config.json
The app is usable now. Chat/agent features will become available once the runner finishes initializing.
Use `/dev-stop` to stop the server.
The web app's dev script (turbo/apps/web/scripts/dev.sh):
cloudflaredVM0_API_URL environment variableIf tunnel fails to start:
cloudflared is installedtail -f /tmp/cloudflared-dev.logIf authentication fails:
/dev-logsturbo/apps/web/.env.local