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.pngthe 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, orfull, enforced in the extension. loosening is popup-only by design, so a shell agent can never grant itself access. - Raw CDP escape hatch
reins cdpreaches 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 choicethen 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.