Vantage documentation

Security model

Vantage separates three authorities: the native browser application, WebKit's untrusted web-content processes, and deliberately trusted same-user agents. The agent surface is powerful by design; that power is not injected into webpages.

Threat model

Actor/inputTrustBoundary
Vantage native applicationTrusted as userUI, local state, policy, agent RPC.
Same-user agentExplicitly trustedBroad browser authority through local RPC.
Web contentUntrustedWebKit origin/process/sandbox rules.
Downloads/importsUntrusted inputConstrained names/paths; content gains no trust.
API responsesUntrusted inputReturned data gains no native authority.

Web content stays in WebKit

WebKitGTK owns HTML parsing, page JavaScript, DOM, origin enforcement, TLS, permissions, rendering and web-process isolation. Vantage does not hand arbitrary page objects or callbacks to privileged native automation code.

Agent RPC is privileged local IPC

The control plane is for software already trusted with the user's desktop/session authority. It is not a website API and should not be exposed as a remote network service.

trusted local agent -> local Vantage RPC -> browser authority
webpage JavaScript  -X-> Vantage RPC
remote website      -X-> local agent socket

Semantic refs fail closed

Snapshot refs are generation-scoped. Vantage does not silently retarget an old ref after DOM mutation. stale_or_missing requires a new observation, reducing accidental action on a changed control.

Direct fetch credential boundary

net.fetch is application-side and bypasses page CORS, but deliberately does not inherit page cookies or browser identity. Agents supply API authorization explicitly.

vant agent fetch https://api.example.com/me '{"headers":{"Authorization":"Bearer TOKEN"}}'

Connections, certificates and permissions

Site information distinguishes ordinary secure connections, insecure connections, source/internal pages and certificate details WebKit makes available. WebKit remains responsible for normal origin, TLS and permission enforcement.

Downloads and hostile filenames

Download names are sanitized and constrained to the selected destination. A browser-created file is still untrusted external content. The same rule applies to history/imported data and agent-fetched responses.

Private windows

Private browsing reduces local persistence; it is not anonymity. Remote sites, network infrastructure and explicitly invoked agents/APIs can still observe data sent to them.

Local state and secrets

History, bookmarks, sessions and settings are local browser data. Treat the Vantage profile and same-user agent socket as user-private resources. Do not place API tokens in documentation, command history or committed scripts.

Updates are part of the boundary

WebKitGTK, GTK and GStreamer are security-sensitive dependencies. Keep the operating system and browser build current through the supported distribution path.