Browser-driven agents at the web edge
web-bridge, web-session, and the three auth postures.
Written By Dustin
Last updated 24 minutes ago
A browser-based agent cannot hold your keychain identity. The web edge gives it a way to act without one.
The bridge
tovio web-bridge --forge <host:port>Relays a browser's mutating requests to one Forge — fixed at launch — under the repository's keychain identity. The signing key never leaves your machine and never enters the browser. Options: --cert to pin the Forge's certificate (defaults to the repo's known cert), --addr for the listen address (defaults to an OS-chosen loopback port; a non-loopback bind is refused), and --allow-origin, repeatable, to name exactly which browser origins may pair with it.
Authorising a browser session
tovio web-session authorize <pubkey>Authorises an ephemeral browser-generated Ed25519 public key (64 hex characters) to act as a principal, minting a short-lived owner-signed authorization into the access registry. --principal selects which DID it acts as (default: the owner).
--ttl is in seconds and the default and the maximum are both 900 — a quarter of an hour. A larger value is clamped, not honoured, so asking for an hour silently gets you fifteen minutes. Re-authorise rather than trying to buy a longer window.
The posture is policy-governed
tovio policy web-auth --allow bridgetovio policy web-auth --allow pure-webtovio policy web-auth --allow bearerEnforced fail-closed
A mechanism outside the allowed set — or a pure-web credential against a path that mandates the bridge — is refused with TVO-FORGE-016 and HTTP 403.
This is mechanism governance, orthogonal to authorization, and it holds even for an admin. A caller using an allowed mechanism who lacks the grant gets TVO-FORGE-009; a caller using a disallowed mechanism gets TVO-FORGE-016 regardless of what grants they hold.
These are operator commands
web-bridge and web-session are hidden from the default help index. They are runnable and supported; they are simply not part of the everyday surface, because most repositories never need a browser-driven agent at all.