All features

Share your dev server

Your localhost, in your teammate's browser.

Working on an app at localhost? Ask your agent "share my dev server with Sam". Your localhost tabs show up in Sam's PairBrowse and follow you like any shared tab, hot reloads included. No public URL, no deploy.

Ask, and it is shared

One sentence to your agent.

Join codes never carry localhost addresses, since a joiner's browser would open their own computer's. So share the dev server itself: say "share my dev server with Sam", with the port or the localhost tab you are on.

It gets an address of its own: a Cloudflare Quick Tunnel to a small proxy on your computer, never straight to the dev server. Whatever runs at localhost works the same way.

  • Your agent asks you before anything is shared.
  • Your localhost tabs show up in joiners' browsers and follow you like any shared tab.
  • A drive joiner's clicks there come back to your localhost tab.
  • Up to 3 dev servers at once.
Next.jsNuxtViteDjangoFastAPIFlaskRailswhatever runs on localhost

Only the people you let in

A key per joiner. Nobody else gets through.

The shared address leads to the small proxy, not to your dev server. It lets a visit through only with a joiner's own key, and a key works only while that joiner is in the session.

  • Each joiner has a key of their own, never shared between people.
  • Their PairBrowse sets it as an HttpOnly cookie, never in an address.
  • Anyone else with the address gets nothing.
  • Leaving, or an invite that ends, cuts access at once.

Watch or drive

Look around, or use it fully.

Watch joiners can look around and get hot reloads. They cannot send forms or change anything: only GET, HEAD and OPTIONS requests go through, plus WebSockets for hot reload.

Drive joiners can use it fully. What they do reaches your dev server like your own visits do, each of them signed in as themselves.

Test it together

Your teammate tests. You fix the code.

A drive joiner can use your localhost app like a real user: fill in the forms themselves, or ask their own Claude Code or Codex to fill them out and check for errors, broken flows and layout problems.

Their agent works in the shared tab, with its spark in its own color, and reports what breaks. You watch it happen in your own browser and fix the code, and the next hot reload reaches them.

  • Fill in the forms on your app by hand, or let an agent click through it.
  • It tries invalid input, broken flows and layout issues.
  • Each issue comes back with steps, expected and actual.
  • Watch joiners still only look: no form submits.

No config changes

Your dev server still sees localhost.

Visits reach your dev server from localhost, with the Host, Origin and Referer it expects. You do not change your config to let a teammate in.

  • Host checks like Vite's and Nuxt's allowedHosts and Next's allowedDevOrigins pass as they are.
  • Redirects and cookies your dev server sends come back for the shared address.
  • The key cookie is removed, and no forwarding or Cloudflare headers reach your dev server.

Good to know

It ends when you say so.

Say "stop sharing my dev server" and it ends. It also ends with the last join code, revoke_all, or when PairBrowse stops.

  • Up to 3 dev servers at once.
  • Addresses built into your app, like an API at http://localhost:4000, point at the joiner's own computer: use relative URLs, or share that port too.

Show your work while it is still on localhost.

Install the plugin in Claude Code or Codex, start your dev server, and ask your agent to share it with a teammate.

NextTeams and shared sessions
/html>