karnstack
reins
2026 · MIT
[ new ]reins do hands a whole browsing task to Jev, TypeSafe's action model: one command instead of a click-by-click session. On our benchmark it was 4.6x faster at the median and about 100x cheaper. How it works · the benchmark
Drive the browser you are already signed in to
reins is a CLI that hands your coding agent the real Chromium browser you already use. Claude Code, Cursor, Codex, anything with a shell. The logins, the cookies and the sessions are already there, because it is your browser. No debug profile, no launch flags, no MCP server to register.
Install
Three steps. Do not skip the second: without it your agent never learns the commands.
- The CLI. The daemon rides inside it and starts on demand.
npm i -g @karnstack/reins - The skill, so your agent knows the commands. No skill support? It can read
reins help.npx skills add karnstack/reins - The extension, in each browser you want agents to reach. Its icon turns green once connected.
Then reins status shows what is connected.
Sign in to Dashboard
Welcome back.
Password
$ reins snapshot e3: input "Email" e7: button "Sign in"$ reins click --ref e7 ✓ clicked e7
What it does
- Tabs in every connected browser: list, open, focus, close.
- Click, type, fill, select, hover, scroll, press keys, upload files, answer dialogs.
reins snapshotlists what you can click, with short refs to act on. CSS selectors work too.- Read the page as text or a screenshot.
- Console messages and network requests, without opening DevTools.
reins evalfor JavaScript,reins cdpfor any raw DevTools Protocol call.reins dohands a whole task to Jev, TypeSafe's action model, instead of going click by click.
The loop
Look, act, check.
$ reins snapshot e3: input "Email" e7: button "Sign in"$ reins type --ref e3 --text "you@work.dev"$ reins click --ref e7$ reins text Signed in as you@work.dev
How it works
Three pieces, all on your machine. The daemon ships inside the CLI and starts on its own. Chrome shows its "is being debugged" banner while reins is attached to a tab.
your agent your machine your browser shells out daemon, starts on demand extension, MV3 reins <cmd> ───────► 127.0.0.1 ──────────────────► chrome.debugger, CDP
How the three pieces fit together
Site permissions
Every site gets one of three tiers, checked inside the extension where an agent cannot skip it.
| deny | Nothing. Commands fail, and the site's tabs are redacted from reins tabs. |
|---|---|
| read | Reading only. snapshot, text, screenshot, console, network and wait. Anything that acts on the page is blocked. |
| full | Everything, including navigation, interaction, eval and raw CDP. |
Only a click in the extension popup grants more access. From the shell, reins policy can tighten, never loosen.
Facts
| License | MIT |
|---|---|
| Browsers | Chrome, Brave, Edge, Arc, Dia. Any Chromium that takes MV3 extensions. |
| Agents | Claude Code, Cursor, Codex, Copilot, Gemini CLI. Anything with a shell. |
| Network | Binds 127.0.0.1. No account, no hosted service, no telemetry. |
Limits
| Browsers | Chromium only. No Firefox, no WebKit. |
|---|---|
| Headless | Not supported. reins drives a browser you already have open. |
| CI | Not the target. Use Playwright or agent-browser there. |
| Releases | 0.x. Commands, flags and output can still change. |
More
No Chrome Web Store access? reins extension stages the bundled copy for Chrome's Load unpacked, with no reins allow step.
Press ⌘K anywhere on this site to search the docs.