Docs

Getting started

Four steps, about five minutes. At the end an agent can open a tab in your own signed-in Chrome and tell you what is on it.

1. Create an account

Sign up with an email address, Google or GitHub. Personal accounts are free and stay free. If you are setting this up for a team, use create a business account instead — it makes the organization and your account in one step, and shared browsers, policy and CDP all live at that level.

2. Install the extension and pair a browser

TabTunnel drives a real Chrome, so there is one to install into. Your dashboard carries the install link; adding the extension opens its own setup page, which asks three things in this order:

  • How much to ask you. confirm_every prompts you for every new site, allow_local prompts except on localhost, allow_all never prompts. Start at confirm_every; you can change it later from the extension.
  • What to call this machine. The name your agent will see in list_browsers.
  • Sign in. It opens TabTunnel in a tab, you approve, and the browser is enrolled.

Chrome will show a “started debugging this browser” bar while an agent is attached. That is Chrome telling you the truth and it cannot be turned off — the extension's setup page explains it before you get there.

3. Mint a token

Open Tokens in the dashboard and mint one, naming the agent that will use it. The secret is shown once — only its SHA-256 is stored, so nobody, including us, can show it to you again. Treat it like a password: on its own it is enough to drive every browser you can reach.

Connecting Claude.ai, Claude Desktop or a ChatGPT connector? Skip this step — they sign in over OAuth and mint their own.

4. Point your agent at it

The endpoint is the same for every MCP client:

MCP Streamable HTTP
https://tabtunnel.dev/v1/mcp

with Authorization: Bearer <your token>. For Claude Code that is one command; for Cursor, Windsurf and Cline it is a block of JSON.

Then ask it to list your browsers. If your machine comes back, you are done.

The first command takes a few seconds

An idle browser polls rather than holding a socket open, so the first command after a quiet spell waits for it to be pulled up — usually a handful of seconds. Everything after that is immediate until it goes quiet again. This is the design: sockets scale with how much automation is running, not with how many browsers are installed.

Which surface do you want?

There are two ways in, and they take the same token.

  • MCP — for agents. Twenty-nine tools an assistant picks from, tab ownership and consent enforced on every one of them. This is what most people want.
  • The same endpoint over plain HTTP — if you are writing the client yourself, MCP is JSON-RPC over one POST and you can drive it with curl.
  • Playwright — for test suites. The @tabtunnel/playwright package points Playwright at the same browser over the DevTools Protocol. A paid, per-browser feature for business organizations.

Is something here wrong, or missing? Tell us.