Take the reins of your real browser
reins lets coding agents (Claude Code, Cursor, Codex, anything with a shell) drive the logged-in browser you already use. No debug profile, no launch flags, no MCP server to register.
npm i -g @karnstack/reins
agent session
reins tabs b1 chrome tab 12 * Dashboard — localhost:3000 reins snapshot e3: input "Email" e7: button "Sign in" reins type --ref e3 --text "you@work.dev" reins click --ref e7 reins screenshot ~/.reins/shots/tab-12.png
How it works
Install once, drive everything
Three pieces, all yours: a CLI your agent calls, a daemon it auto-spawns, and an extension that dials in. Nothing to keep running, nothing to register per agent.
01
Install the CLI
The daemon ships inside and starts on demand; any command spawns it.
npm i -g @karnstack/reins
02
Add the extension
Install it from the Chrome Web Store in every browser you want agents to reach. It discovers the daemon on its own and the toolbar icon turns green when connected.
Get the extension03
Teach your agent
The skill teaches any coding agent the command loop. From here, the agent drives.
npx skills add karnstack/reins
Everything an agent needs to work a page
A small, curated command set covers the whole loop: look at the page, act on it, verify the result.
- Every tab, every browser
- List, open, focus, and close tabs across Chrome, Brave, Edge, Arc, and Dia. One daemon serves every connected browser.
- Real interaction
- Click, type, fill, select, hover, scroll, press keys, and upload files, all addressed by stable element refs, not brittle selectors.
- See the page
- Snapshot interactive elements, read visible text, and capture screenshots your agent can open and reason about.
- Debug signals
- Read a tab's recent console messages and network requests without ever opening DevTools.
- An escape hatch
- Evaluate JavaScript in the page, or issue raw Chrome DevTools Protocol commands when the curated set isn't enough.
- Your sessions intact
- It is your real profile, with logins, cookies, and state included. No separate automation browser to babysit.
Unlimited ideas
One CLI, your whole browser
Anything you can do signed in, your agent can do on request. A few loops to steal:
agent session
reins open https://github.com/notifications reins text --max-chars 300 Notifications · 12 unread ci: build failed on main — 2 mention you
Trust
You hold the reins
Every site your agent touches resolves to a permission tier — deny, read-only, or full. The check runs inside the extension, the one place no process on your machine can reach around, so even a misbehaving agent can't skip it.
Granting more access takes a click in the extension popup — a user gesture no agent can fake from a shell. The CLI can inspect and tighten the policy, never loosen it.
Local by design
reins has no cloud half. The extension talks to one thing, your own daemon on 127.0.0.1, and collects nothing, for anyone. The whole stack is open source and auditable.
Everything binds 127.0.0.1; nothing is reachable from the network.
Host-header validation blocks DNS rebinding, so web pages can't reach the daemon.
Only allowlisted chrome-extension:// origins may connect, an identity pages can't forge.
Chrome shows its native debugging banner whenever the extension is attached.
The popup's Disconnect toggle severs the connection instantly.
Hand your agent the reins
Two installs and a skill: your agent is driving your browser in under a minute.
npm i -g @karnstack/reins