reins

Take the reins of your real browser from any coding agent.

A CLI plus a Manifest V3 extension give agents full control of the Chromium browsers you already use: Chrome, Brave, Edge, Arc, Dia. Every session is already logged in, because it is your browser. No MCP server, no debug profile, no launch flags. Free and open source, on npm as @karnstack/reins.

$ reins snapshote3: link "pricing"e5: button "Submit"e8: textbox "Email"$ reins fill --ref e8 "mail@karnstack.com"$ reins click --ref e5$ reins screenshot~/.reins/shots/tab-12-1400x900.png

the loop agents run: snapshot prints interactive elements with refs, act by ref, verify with text or screenshot.

what you get

Your browser, already logged in
the extension lives inside the browsers you already run, so every session is authenticated by definition. scrape behind logins, call a site's API as the signed-in you, replay live network traffic.
Nothing to register per agent
the CLI is the whole interface, so anything with a shell drives it: Claude Code, Cursor, Codex, Copilot. the daemon spawns on demand and one daemon serves every connected browser at once.
Per-site permissions
every host resolves to deny, read, or full, enforced in the extension. loosening is popup-only by design, so a shell agent can never grant itself access.
Raw CDP escape hatch
reins cdp reaches the full Chrome DevTools Protocol when the curated commands don't cover it: cookies, geolocation, PDF, tracing.

drop it in

npm i -g @karnstack/reins        # the CLI, daemon included
npx skills add karnstack/reins   # the skill, into your agent of choice

then add the extension from the Chrome Web Store in every browser you want agents to reach. it finds the daemon on its own, and that's the whole setup. reins tabs shows what's connected.

MIT licensed. contributions welcome.

Command Palette

Search for a command to run...