![]()
Open source plugin for Claude Code and Codex
Your AI. Your team.One browser.
Work alongside Claude Code, Codex and your teammates in the same browser. Share tabs, follow their cursors and take over whenever you need.
Plugin and helper MIT licensed. Read the source on GitHub
- 01 Claude fills the form
- 02 Maya joins with Codex
- 03 You review and submit
Presence
See who's doing what.
Named cursors and shared tabs, so you always know who is where and what they are touching.
Sign up
Project briefCreate your account
Step 1 of 2
In this browser
Live- YYouHostReviewing the form
Claude CodeAgentFilling Work email- MMayaTeammateWatching
Maya's CodexAgentReading Project brief
- Shared tabs follow the host.
- Teammates who join see the tabs you open, as you open them.
- The agent shows its work.
- A bar at the bottom of each page and the side panel say what it is doing right now.
- One agent per tab.
- Claude Code, Codex and your teammates' agents share one browser and split the work instead of typing over each other.
For developers
Share your dev work, live.
Working on an app at localhost? Ask your agent "share my dev server with Sam". Your localhost tabs show up in Sam's browser and follow you like any shared tab.
Test it together
Sam tests. You fix.
A drive joiner can fill in the forms on your localhost app by hand, or let their own Claude Code or Codex click through it, trying invalid input and checking the layout. It reports what breaks with steps, expected and actual, while you watch and fix the code. Watch joiners still only look.
Its own tunnel, no deploy.
A Cloudflare Quick Tunnel to a small proxy on your computer, never straight to the dev server. No public URL to publish, no tunnel account to set up.
Only people you let in.
Each joiner gets a key of their own, set by their PairBrowse as an HttpOnly cookie, never in an address. Anyone else with the address gets nothing.
Watch or drive.
Watch joiners look around and get hot reloads, but cannot send forms. Drive joiners, and their agents, use it fully, each signed in as themselves.
No config changes.
Your dev server sees localhost as the Host, Origin and Referer it expects, so its host checks pass. Redirects and cookies come back for the shared address.
Your agent asks you before sharing. Up to 3 dev servers at once. "Stop sharing my dev server" ends it, and so does the last join code ending or PairBrowse stopping.
How dev server sharing worksFast mode
A whole page in one move.
The agent sends a full page as one pairbrowse_run call: go, fill, choose, tick, click, wait. No model turn between steps.
A typical signup page takes about 0.3 s. The reply is a short outline of the next page, about 50 tokens.
Each field is checked after focus leaves it. A field that won't keep its value stops the run and says why.
A flow that worked saves as a playbook and replays with new values in one call.
Your tabs
It sees every tab you have open.
Sign into your email once. When a form asks for a code, Claude switches to your inbox tab, copies it, and switches back to fill it in.
Uploads without Finder
Upload buttons never open the file picker. The file you mean is copied into its uploads folder and attached.
- logo.png
- uploads/
- attached
Popups handled
Cookie banners and plain popups are found by their shape and place on the page, in any language, and closed.
- banner found
- Accept
- closed
Which session?
Your agent waits until you pick one.
Continue where you left off
Or
Sessions
Pick up any session.
The browser's first tab is the session picker: your three most recent sessions, how many tabs each has and who used them, with a Live badge when people are in it right now.
One browser per job
Each session is a separate browser with its own logins and tabs, for example one per client. A fresh session is clean and deleted when you switch away.
Tabs come back in order
After a restart, an "Opening tabs" screen brings each tab back one by one and puts you on the tab you were on.
Or just say it
Tell the agent "use the client-x session" or "I want a fresh session" and the picker never shows.
Profile
Never asks twice.
Company details live in your Profile, so the next form fills itself. Passwords stay as names: the agent never sees the value.
What you set yourself is never overwritten by what the agent or a form saw.
Passwords, PINs, codes, card and bank numbers are never remembered.
A password is filled only on the HTTPS sites you allowed, and masked in everything the agent reads.
Handoff
Take over when it matters.
The agent drafts, you decide. PairBrowse stops at the steps that need a person and hands them to you, in the same tab.
- Clicks that pay, delete, publish, send or submit ask you first.
- Logins, 2FA, CAPTCHAs and payment are handed to you.
- Type in any field and the agent waits. Fields you fill stay yours.
Runs and reviews
Stop today. Carry on tomorrow.
Long listings take more than one sitting. Say "carry on" and Claude picks up exactly where it stopped, then checks the official rules before anything goes live.
- Every job is saved as a run: done, left, your turn, open tabs. Progress is saved after each page.
- After a browser restart, your tabs reopen one by one, in order.
- Publish and Submit for review stay locked until a passing review is saved. This can't be turned off.
The PairBrowse browser
A browser that looks like yours.
A Chromium build made for agents working in a real, logged-in browser. Automated browsers often differ from everyday ones in ways sites notice. The PairBrowse browser keeps those differences out, so sites see a normal browser.
- macOS, Apple Silicon and Intel
- Linux x64
Know the limits: it runs without Chrome's own sandbox, and on macOS without Google Safe Browsing, so keep to sites you'd open anyway. Security limits
Human-like input, when you want it
Optional, off by defaultOff by default, so actions stay deterministic for testing. Turn it on and moving, clicking, dragging, scrolling and typing follow one human input style: eased, slightly curved mouse paths and key-by-key typing with human timing, all as native trusted input.
Company
~/.pairbrowse/config.json
{ "pairbrowse": {
"humanize": true
} }- Eased, curved paths
- Key-by-key timing
- Native trusted input
Pinned and verified
Downloaded once from the public GitHub release, then checked before it is used. The engine pack it launches with is checked the same way, before every load.
- SHA-256 pinnedThe build and its engine pack are checked against pinned hashes.
- Bundle intactOn macOS the app's ad-hoc code signature must verify. That shows the app is intact, not who made it; the pinned SHA-256 ties it to the release.
- Self-check, rollbackA launch test runs, and the previous version is kept.
Free for personal, non-commercial use. Commercial use comes with PairBrowse Pro (coming soon), or set "browserEngine": "chromium" for a fully open setup. That stops basic navigator.webdriver checks, nothing more.
Use cases
Built for the web work agents get stuck on.
Logins, email codes, store rules and final clicks are where an agent alone stalls. These are the jobs PairBrowse was made for.
You ask
Sign me up for a developer account and get me an API key.
What happens
- Claude: Filled the account page in one run
- Claude: Moved on to the next page
- You: Your turn: solve the CAPTCHA
- Claude: Copied the email code from your inbox tab
You ask
Fill in the Chrome Web Store listing and get it ready for review.
What happens
- Claude: Filled the listing from your remembered details
- Claude: Opened the store's current official requirements
- Claude: Checked every rule and recorded a passing review
- You: Your turn: confirm Submit for review
You ask
Test the sign-up flow on localhost:3000 and report what breaks.
What happens
- Claude: One valid pass, then empty fields, bad formats, double submits
[High] Sign-up accepts an empty password
- Where
- localhost:3000/signup
- Expected
- "Password is required" next to Password
- Actual
- account created, redirected to /dashboard
You ask
The coupon field on the preview does nothing. Look at it with me.
What happens
- You: Clicked Apply in Claude's tab
- Claude: Waited until you stopped, then took a fresh look
- Claude: Told which button you used, never what you typed
- Codex: Took its turn in another tab of the same browser
You ask
Make a watch link for Sam for 2 hours.
What happens
- Claude: Made a watch link with its own key 2 hours
- Sam: Sees the page, the tabs and the activity line
- You: Drive lets Sam click and type too. Claude asks you first
- You: Revoke it any time and the view ends at once
Open source
Open source, by design.
A browser your agent drives should be one you can inspect. PairBrowse is built in the open, so you can see exactly what it does with your pages, your logins and your team.
Read the code that guards your browser
The plugin and helper are MIT. Every guard, hand-off and join check is in the open, next to the tests that hold it.
Small and pinned
The helper and hooks use only Node's standard library. The browser runtime is pinned with a lockfile and installed without install scripts.
Fully open when you want it
One setting runs PairBrowse on an open Chromium build instead of the native browser, fine for commercial use under MIT.
Built in public
Issues, fixes and docs happen on GitHub. Fixes stay general and are checked live on real sites before they land.
- scripts/policy.mjs
- scripts/guard.mjs
- scripts/secrets.mjs
- scripts/liveview.mjs
- docs/security.md
- runtime/package-lock.json
# fully open setup, in ~/.pairbrowse/config.json
{ "browserEngine": "chromium" }
The native PairBrowse browser is free for personal use. How the licenses work
Install
Start in minutes.
Two commands add PairBrowse to your coding agent. Then ask for a web task and watch it work.
Choose your coding agent
Copy the install command
claude plugin marketplace add pairbrowse/pairbrowseclaude plugin install pairbrowse@pairbrowseOpen a session
Ask your agent for any web task. The PairBrowse window opens, and its first tab lets you pick a saved or fresh session.
Need more detail? Read the full install guide
Bring everyone onto the same page.
Install the plugin, ask your agent for a web task, and invite your team in.