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 bearer
MechanismWhat it is
bridgeThe high-assurance local-agent bridge. It reuses the channel-bound proof and the key stays in the keychain. The most restrictive, and the right default.
pure-webA convenience browser credential — a per-request nonce and signature, with the key sitting in the browser.
bearerThe GitHub-compatibility credential: a validated capability token with no channel binding. Opt-in per repository for exactly that reason.

Enforced 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.