Webby is a standalone local bridge from browser-native WebMCP tools to any standards-compatible MCP client. It is a Phoenix/Elixir application designed to run continuously as a per-user background service.
The current implementation provides a loopback-only Phoenix service, SQLite WAL
persistence, atomic runtime discovery metadata, a JSON health endpoint, a local
LiveView dashboard, and durable browser-extension pairing over a versioned
Phoenix Channel protocol with single-use Ed25519 authentication challenges.
The unpacked Manifest V3 extension now scans already-permitted sites by default,
offers explicit broad all-tabs scanning with continuous disclosure, and records
sanitized WebMCP catalogs in the local discovery inbox. Discoveries can be
explicitly promoted into durable page registrations, which bind matching open
documents to live catalog sessions. The authenticated Streamable HTTP endpoint
at /mcp exposes one stable webby broker tool for inspecting status, browsers,
discoveries, registered pages, sessions, and current catalogs. Explicitly scoped
clients can invoke page.call; Webby pins each call to a browser, immutable Chrome
document ID, and catalog revision, propagates cancellation, bounds arguments,
results, and execution time, and stores metadata-only invocation audits.
Webby is independent software. It has no dependency on Labby or any other MCP gateway, and no particular MCP client receives privileged integration.
mise install
mise exec -- mix setup
mise exec -- mix phx.serverThe local dashboard is available at http://127.0.0.1:6477/ and health can be checked with:
curl --fail http://127.0.0.1:6477/healthRun the verification suite:
MIX_ENV=test mise exec -- mix test
MIX_ENV=test mise exec -- mix credo --strict
npm test --prefix extensionFor extension development, load the extension directory as an
unpacked Chrome extension, open its popup, set the loopback Webby URL if needed,
and submit a pairing request for approval in the local dashboard.
Build a production release:
MIX_ENV=prod mise exec -- mix assets.deploy
MIX_ENV=prod mise exec -- mix releaseProduction startup binds exclusively to 127.0.0.1:6477 unless WEBBY_PORT
selects a different loopback port. On first launch, Webby creates a stable,
owner-only signing secret under its platform configuration directory;
SECRET_KEY_BASE can override it for managed deployments.