VT Code's maintained WebMCP browser app is published at two URLs. Both pages use the same browser tool surface and start in safe in-memory fallback mode; the ChatGPT Site is the primary hosted demonstration, while GitHub Pages is a static fallback and reference deployment.
| Deployment | URL | Exact browser origin | Active pairing command |
|---|---|---|---|
| ChatGPT Site | https://vtcode.vinhnx.chatgpt.site/ | https://vtcode.vinhnx.chatgpt.site |
/webmcp pair https://vtcode.vinhnx.chatgpt.site |
| GitHub Pages | https://vinhnx.github.io/VTCode/ | https://vinhnx.github.io |
/webmcp pair https://vinhnx.github.io |
The page derives its origin from window.location.origin. The GitHub Pages
/VTCode/ path is a URL path, not part of the origin; do not include it in a
pairing command or bridge allowlist. The same rule applies to ports on local or
custom deployments.
Use the ChatGPT Site when demonstrating the browser WebMCP experience. Use GitHub Pages when a stable static fallback or repository-hosted reference is more useful. Neither page hosts the Rust WebSocket bridge. Without an explicit bridge pairing, the editor remains page-local and cannot read or write a local workspace.
Browser WebMCP and the VT Code bridge are separate interfaces:
- Browser WebMCP registers eight bounded, page-scoped tools through
document.modelContextwhen the browser context supports it. - The authenticated
/webmcpWebSocket connects the page to VT Code for workspace reads, reviewed proposals, runtime events, and active agent turns.
The page can demonstrate the first interface without pairing. A real
VT CODE TURN requires the second interface and the same VT Code TUI session
that owns terminal approval.
Configure both exact production origins if the same active TUI should serve both sites:
[webmcp]
allowed_origins = [
"https://vtcode.vinhnx.chatgpt.site",
"https://vinhnx.github.io",
]Then run the command matching the open page:
/webmcp pair https://vtcode.vinhnx.chatgpt.site
/webmcp pair https://vinhnx.github.io
When a bridge is already running, pairing another configured origin issues a
new one-time code and keeps existing authenticated sessions active. The
pending code is still single-use. Use --replace only when intentionally
revoking current browser sessions:
/webmcp pair --replace https://vtcode.vinhnx.chatgpt.site
Paste the newest WebSocket URL and code into Settings → Connect or re-pair a
VT Code bridge. A loopback ws://127.0.0.1:... endpoint is reachable only
from a browser that can reach the same machine. A remote or sandboxed browser
needs a reachable wss:// endpoint behind a TLS-terminating reverse proxy.
For a workspace-only headless bridge, repeat --origin for the exact origins
that should be accepted:
vtcode webmcp serve \
--origin https://vtcode.vinhnx.chatgpt.site \
--origin https://vinhnx.github.io \
--allowed-root /absolute/path/to/workspaceThe headless adapter does not execute active VT Code agent turns. Use an active
TUI pairing when the browser must send VT CODE TURN prompts.
Chrome origin-trial tokens are bound to exact origins. For a build served at
both public URLs, provide one token for each origin through
VITE_WEBMCP_ORIGIN_TRIAL_TOKENS, separated by commas or whitespace. The
legacy singular VITE_WEBMCP_ORIGIN_TRIAL_TOKEN remains supported for a
single-origin build. The GitHub Pages workflow reads the corresponding
WEBMCP_ORIGIN_TRIAL_TOKENS Actions variable and injects the tokens into the
document head at build time; no token belongs in source control. If the
ChatGPT Site is built or uploaded separately, pass the same build variables to
that publisher as well; the Pages workflow does not deploy the ChatGPT Site.
If no token is available, use a supported browser's WebMCP testing flag or the
normal fallback. WebMCP availability also depends on the page's origin-isolated
browsing context and tools Permissions Policy. A successful HTTP response or
an active VT Code pairing does not, by itself, prove that native browser
WebMCP is available.
For either deployment:
- Open the page directly and confirm the expected URL and fallback editor.
- In a supported WebMCP browser, inspect the page and confirm the eight
registered tools, bounded results, and
get_editor_state.webmcp_context. - Start Evidence before a real inspector or ChatGPT in-app-browser run; keep the sanitized JSON beside the screenshot or recording.
- For workspace access, pair using the exact origin table above and paste the URL/code printed by the same TUI.
- Confirm browser edits remain proposals and that approval, apply, checks, and revert stay behind the VT Code terminal or configured headless policy.
The implementation details and test commands are in the WebMCP development guide, the browser bridge user guide, and the WebMCP app guide.