Goal
Make PickLab a production-ready, provider-neutral computer-use runtime: agents can launch an isolated headed browser, combine visual and semantic control, watch the session live, inspect replayable evidence, and hand control to a human without exposing the real desktop.
Product decisions
- Xvfb remains the only display server in v1. Xephyr is out.
picklab watch opens a host-side VNC viewer against the isolated display. Observation is server-enforced read-only.
- A browser session is one record owning private Xvfb and Chrome legs.
- Chrome uses an ephemeral profile, scrubbed environment, loopback CDP with port
0, and DevToolsActivePort readback.
- The official Chrome DevTools MCP is reached through a framing-aware PickLab relay, not reimplemented.
- Evidence is append-only and renders as a static HTML filmstrip.
- Human control uses an atomic lease plus short-lived agent permits. No control state is stored authoritatively in session JSON.
- Android viewing/takeover, persistent browser profiles, Firefox/WebKit, uid sandboxing, and remote multi-user viewing are out of scope for v1.
- No feature flag: each PR preserves current defaults and is independently releasable.
Security posture
Browser/CDP processes still run as the invoking user. V1 is for authorized, trusted development and QA — not hostile-page isolation. VNC and CDP bind loopback only, browser profiles are ephemeral, Chrome receives a scrubbed environment, process groups are verified and killed before profile deletion, and secrets/capability URLs are excluded from persisted diagnostics. SECURITY.md must document the residual same-UID/local-process risk before #18 closes.
PR plan
Dependency order
PR 1 -> PR 3 --------------------------┐
PR 2 -> PR 5 -> PR 6 -> PR 7 ---------+-> PR 8 -> PR 9
PR 4 ----------------------------------┘
PR 1 and PR 2 may proceed independently. PR 4 is also independent, but must land before the final computer-use claim. Shared CLI/MCP session wiring is serialized to keep reviews clean.
Production acceptance
- A coding agent configures PickLab once and can recreate browser sessions without MCP config edits.
- Visual desktop tools and semantic DevTools tools operate on the same isolated headed Chrome.
picklab watch can attach to an already-running session; closing the viewer never stops or corrupts it.
- Normal viewing is read-only.
watch --control prevents PickLab-managed agent input after human acquisition completes.
- Sensitive typed values, cookies, headers, bodies, query tokens, JWTs, OTPs, and CDP websocket capabilities never enter persisted evidence.
- Screenshot pixels are explicitly not claimed to be redactable; automatic capture is suppressed around sensitive inputs.
- Two concurrent browser sessions have distinct displays, profiles, and CDP ports.
- Destroy/reap leaves no Chrome process-group members or ephemeral profile data.
- Hosted CI passes typecheck, tests, coverage, and build without silent prerequisite skips.
- Before closing: attach one real watch recording and one pause → control → return → resume recording.
Current status: In progress
Next: PR 1 and PR 2 foundation slices.
Goal
Make PickLab a production-ready, provider-neutral computer-use runtime: agents can launch an isolated headed browser, combine visual and semantic control, watch the session live, inspect replayable evidence, and hand control to a human without exposing the real desktop.
Product decisions
picklab watchopens a host-side VNC viewer against the isolated display. Observation is server-enforced read-only.0, andDevToolsActivePortreadback.Security posture
Browser/CDP processes still run as the invoking user. V1 is for authorized, trusted development and QA — not hostile-page isolation. VNC and CDP bind loopback only, browser profiles are ephemeral, Chrome receives a scrubbed environment, process groups are verified and killed before profile deletion, and secrets/capability URLs are excluded from persisted diagnostics. SECURITY.md must document the residual same-UID/local-process risk before #18 closes.
PR plan
-viewonly, x11vnc installed/asserted, focused testsbrowserrecord,browprefix, geometry, capability resolution, verified process-group stoppicklab watch, manual/auto preference, host-side viewer, zero/multiple/headless behaviorwatch --control, temporary writable VNC, fresh-state handoffDependency order
PR 1 and PR 2 may proceed independently. PR 4 is also independent, but must land before the final computer-use claim. Shared CLI/MCP session wiring is serialized to keep reviews clean.
Production acceptance
picklab watchcan attach to an already-running session; closing the viewer never stops or corrupts it.watch --controlprevents PickLab-managed agent input after human acquisition completes.Current status: In progress
Next: PR 1 and PR 2 foundation slices.