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.
npx skills add https://github.com/Devin-AXIS/iPolloWork --skill daytona-chrome-cdp
Use this skill when a Daytona sandbox needs a normal Chrome/Chromium browser in
the XFCE display, separate from the Electron app. This is useful for Den Web
sign-in, OAuth provider setup, browser-only admin flows, and checking what a user
would see in a regular browser.
Run inside the Electron or server sandbox:
daytona exec "$SANDBOX" -- "bash -lc 'mkdir -p /tmp/daytona-chrome-profile; DISPLAY=:99 nohup chromium --no-sandbox --disable-dev-shm-usage --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --user-data-dir=/tmp/daytona-chrome-profile about:blank >/tmp/daytona-chrome.log 2>&1 &'"
If chromium is missing, try google-chrome, google-chrome-stable, or install
Chromium in the sandbox only when needed.
CHROME_CDP_URL=$(daytona preview-url "$SANDBOX" -p 9222 2>/dev/null | grep -v '^time=')
Then connect browser tools:
browser_list({ browser_url: CHROME_CDP_URL })
After selecting the Chrome target:
navigator.userAgent
Expected: contains Chrome/ or Chromium/ and does not contain Electron/.
Use normal browser tools:
browser_navigate({ browser_url: CHROME_CDP_URL, target_id: TARGET_ID, url: DEN_WEB_URL })
browser_snapshot({ browser_url: CHROME_CDP_URL, target_id: TARGET_ID })
browser_click({ browser_url: CHROME_CDP_URL, target_id: TARGET_ID, uid: UID })
browser_fill({ browser_url: CHROME_CDP_URL, target_id: TARGET_ID, uid: UID, value: VALUE })
Validate with the daytona-flow-validator loop. Do not assume navigation or
sign-in worked until the post-action snapshot or URL proves it.
daytona exec "$SANDBOX" -- "bash -lc 'pkill -f \"chromium.*remote-debugging-port=9222\" || pkill -f \"chrome.*remote-debugging-port=9222\" || true'"
Take devin-axis/daytona-chrome-cdp from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.