Observe and capture with Voidscape
This playbook composes a browser-capable harness, optional capture tooling, and Voidscape without turning Voidscape into a browser controller or ambient recorder.
Status: shipped documentation and observe CLI
Canonical sources: harness support, browser/CLI matrix, and authenticated sources
Responsibility boundary#
user-approved harness -> browse, click, screenshot, or save a recording
optional capture tool -> produce a chosen local image or clip
Voidscape -> inspect -> preview -> read -> manifest + citable evidenceThe harness owns live interaction. The operating system owns screen-recording permission. An optional companion owns capture history. Voidscape starts with a URL or local file and keeps its normal per-job cloud and model-download gates.
Voidscape never reads browser credentials, cookies, storage, or secrets. It never exports browser state. Browser site approval does not authorize CLI authentication, cloud spend, or model downloads.
One-time setup#
Codex or ChatGPT#
- Follow the official Codex Chrome extension setup and grant only the sites needed for the task.
- Use the harness's current permission UI to retain site access only where appropriate. Permission persistence and scope are controlled by the harness/browser, not Voidscape.
- For mobile continuation, follow Codex remote connections. The paired host must remain available and must be able to reach the local files and CLI.
Claude#
- Follow Claude Code with Chrome and grant the required site access in Claude/Chrome.
- Follow Claude Code Remote Control when continuing the running local session from another device.
- Treat the complete Claude-to-Voidscape composition as
unverifieduntil reproduced on the target host; vendor documentation establishes the harness features, not this integration.
Host capture folder and permissions#
- Choose a dedicated local folder for task captures and keep private material out of the repo.
- Grant OS screen-recording permission only to the harness or capture tool that needs it.
- Test one harmless screenshot before a real task.
- Use a new empty Voidscape evidence workdir for each read.
Pre-approving a narrow domain list can reduce repeated harness prompts. It does not promise zero prompts: new sites, sensitive actions, OS recording, cloud transfer, and model downloads remain separate decisions.
Recipe 1 — browser task to screenshot or short clip#
- In a permitted tab, ask the harness to complete the browsing task.
- Ask the harness to expose the permitted state, then use the installed observe companion (or a separately approved capture tool) to save an explicit screenshot or short silent clip. The observe companion captures the selected desktop/display; it does not navigate or select a tab.
- For a screenshot:
python skill/scripts/observe.py screenshot --out "C:\path\capture.png"
voidscape inspect "C:\path\capture.png"
voidscape preview "C:\path\capture.png"
voidscape read "C:\path\capture.png" --workdir "C:\path\evidence-image"- For a clip:
python skill/scripts/observe.py clip --seconds 15 --out "C:\path\capture.mp4"
voidscape inspect "C:\path\capture.mp4"
voidscape preview "C:\path\capture.mp4" --tier both
voidscape read "C:\path\capture.mp4" --tier both --workdir "C:\path\evidence-clip"- Stop for any previewed approval. Read the resulting bundle with
[image N]or[MM:SS]citations.
Run python skill/scripts/observe.py doctor for capture readiness and python skill/scripts/observe.py status --json for optional screenpipe health. Capture never calls read, forwards approval flags, records audio, overwrites an existing path, or starts a service.
Recipe 2 — public video URL without browser cookies#
Copy the public URL from a permitted page and pass it directly to the guided CLI:
voidscape inspect "https://example.com/public-video"
voidscape preview "https://example.com/public-video" --tier both
voidscape read "https://example.com/public-video" --tier both --workdir evidence-publicStart anonymously. A page being visible in Chrome does not prove the media endpoint is public. If the CLI returns an authentication/platform error, surface it rather than trying to extract browser state.
Recipe 3 — account-scoped media with an explicit cookie file#
Use this only for media the user is permitted to access.
- The user separately creates a site-scoped Netscape
cookies.txtoutside the repository. - The user sets
READ_VIDEO_YTDLP_COOKIESto that file path on the host. - Run
inspectagain and follow the normal preview and approval gates. - Delete or rotate the exported file according to the user's security practice.
The harness never exports the file, reads its contents, or copies it into Voidscape. Voidscape does not discover browser profiles or storage; it passes only the user-configured file path to the media tool. Never print the file or include it in evidence.
Optional screenpipe companion#
screenpipe is a separately installed, source-available desktop-memory product. It is not a Voidscape dependency and is not started or configured by the Voidscape installer.
The upstream README quickstart currently uses:
npx screenpipe record
npx screenpipe setup
claude mcp add screenpipe -- npx -y screenpipe-mcp@latestThe current upstream CLI skill also documents a screenpipe service install workflow through its CLI launcher. These are screenpipe-owned installation and service-management paths, not Voidscape commands. Follow the current screenpipe documentation and pin a release when reproducibility matters; upstream warns that main moves quickly.
screenpipe currently documents a localhost REST API (default port 3030), MCP access, local screen history, and a video-export pipe. A user or harness may query recent permitted frames and export a chosen clip, then pass that local file to Voidscape. The observe companion queries only normalized health from a loopback endpoint (or screenpipe status --json); it never queries capture history, MCP, raw SQL, or a screenpipe database.
Keep the service bound locally, apply screenpipe's current authentication and permission guidance, and never treat localhost as a sufficient trust boundary. Ambient retention, excluded apps, audio capture, cloud features, and deletion remain screenpipe/user responsibilities.
Permission boundary#
| Decision | Owner | Reuse across jobs? |
|---|---|---|
| Browser site/tab permission | User + harness | According to current harness/browser scope |
| Browser navigation/click/type | Harness within granted scope | Task/session-specific |
| OS screen/audio recording | User + operating system | According to OS permission state |
| screenpipe capture and retention | User + screenpipe | According to separate screenpipe config |
| CLI account cookie file | User | Until explicitly removed/rotated; never discovered by harness |
| Cloud transcription | User + Voidscape preview | No; approve the current job |
| Local model download | User + Voidscape preview | Approve acquisition separately |
| Evidence reading cost | Agent/harness billing context | Preview again when scope/model changes |
Failure handling#
- Host unavailable: reconnect the paired host; do not reroute silently to cloud execution.
- Capture path missing: confirm the actual local file before
inspect. - OS recording denied: report the missing permission; do not loop or install tools automatically.
- URL works in browser but not CLI: treat browser and CLI authentication as separate.
- screenpipe API/MCP unavailable: continue with a manual/harness capture or skip; screenpipe is optional.
- Preview requires approval: stop and present that specific decision.
Pattern sources#
- screenpipe: optional local capture/history, freshness, API, and export patterns.
- automated_browser
devel: structured action and session-replay patterns only.
Voidscape does not adopt always-on recording as its core, an autonomous LLM browser loop, raw page uploads to a model, cookie scraping, or unattended action replay.