diff --git a/README.md b/README.md index 698fd55..7026169 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,25 @@ Identity creation is the human's job; lifecycle is scriptable: Tear down: `bin/netvm-node-down.sh ` (sudo). +## Agent automation via CDP + +Every profile launch exposes Chrome DevTools Protocol (deterministic port +per profile, see `bin/netvm-names.sh`). Chromium binds DevTools to loopback +only, so node-up runs a tiny TCP relay (`bin/netvm-cdp-relay.py`, +pidfile-supervised) from the veth IP to loopback. + +- Local (on the node host): `curl http://:/json/list` +- Remote operator: `ssh -L :: @` then + point Playwright (`connect_over_cdp`) or Puppeteer (`puppeteer.connect`) + at `http://127.0.0.1:`. +- `bin/netvm-cdp.sh ` prints the endpoint and the SSH command. +- `bin/netvm-chrome.sh --headless ` runs without a display. +- CDP `Page.startScreencast` streams the live page — the human handoff path + (e.g. CAPTCHA): agent screencasts, human completes, agent resumes. + +CDP is full browser control (cookies included). Exposure is host-local: +veth IPs aren't routable off the host and Warp forwards no inbound traffic. + ## Files - bin/netvm-verify.sh — prerequisite checks (ip, wg, netns, tailscale…).