Chrome Extension  ·  v0.1.1

Give your
AI agents
the keys.

Browser auth state capture for AI agents — Playwright, Claude Code & more.

Keyring captures your browser auth state — cookies, localStorage, all of it — and stores it locally so your AI agents can log in as you. No scripts. No credentials in code.

~/.keyring/storage-state.json
{
  "cookies": [
    {
      "name": "session_token",
      "value": "eyJhbGciOiJSUzI...",
      "domain": "github.com",
      "httpOnly": true
    }
  ],
  "origins": [
    {
      "origin": "https://github.com",
      "localStorage": [
        { "name": "user_id", "value": "u_8x..." }
      ]
    }
  ]
} 
100%
Local Storage
2x
Auth Methods
0
Servers Involved
1cmd
To Load State
The Problem

Agents can't log in.
Until now.

Before keyring

Your agent hits a wall.

Every time your AI opens a browser, it starts cold — no cookies, no sessions, no auth. You end up writing brittle login scripts, storing passwords in env files, or supervising every session manually.

→
After keyring

Your agent is already in.

Browse normally in Chrome. Keyring silently captures your auth state in the background. Your agent loads it with one line — and it's authenticated on every site you've visited.

How It Works

Three steps.
Zero config.

01
🔑

Install & browse

Install the Chrome extension and native host. Log into your sites as you normally would. Keyring watches silently — you don't change how you work.

02
💾

State is captured

Cookies and localStorage are saved to ~/.keyring/storage-state.json on your machine. Standard Playwright format. Nothing leaves your computer.

03
🤖

Agents use it

Your AI loads the state file before launching. It inherits all your sessions instantly — authenticated everywhere you are, with no credentials in code.

Integration

Works with
every tool.

Standard Playwright storage state format — compatible with any browser automation framework or AI agent.

playwright.ts TypeScript
// Load keyring auth state
const browser = await chromium.launch();
const context = await browser.newContext({
  storageState: "~/.keyring/storage-state.json"
});

// Agent is authenticated on every site
const page = await context.newPage();
await page.goto("https://github.com");
// ✓ Already logged in as you
agent-browser CLI Shell
$ agent-browser state load ~/.keyring/storage-state.json
✓ Loaded 24 cookies, 12 localStorage entries
AGENTS.md Markdown
# Browser Automation State

ALWAYS load auth state from
`~/.keyring/storage-state.json`
FIRST before any browser automation.
🎭
Playwright
Pass the file directly to storageState in any browser context. It just works.
🤖
agent-browser
One command loads all your sessions before any automated browser task.
✨
Claude Code
Drop a reference in AGENTS.md — Claude automatically loads your auth state before every browser task.
🐍
Any automation tool
Standard JSON format compatible with Puppeteer, Selenium wrappers, or any tool accepting cookie/localStorage data.
Features

Built for
developers.

🔒

Local-only storage

Everything stays on your machine at ~/.keyring/storage-state.json. No servers, no cloud sync, no telemetry of any kind.

🍪

Full auth capture

Captures both HTTP cookies and localStorage — the two places websites actually store your sessions. Nothing slips through.

⚙️

Whitelist or global

Choose which sites to capture. Whitelist specific domains, or capture everywhere with per-site exclusions — you're in control.

📋

Playwright format

Output is the standard Playwright storage state format — readable JSON, compatible with every major browser automation framework.

🚀

Agent-assisted setup

The extension generates a setup prompt you can paste to your AI agent. It configures everything automatically — you don't need to read docs.

🔐

Privacy by design

No analytics, no telemetry, no external requests of any kind. Your auth data is yours — it never leaves your machine.

FAQ

Common questions.

Is my auth data sent to any server?

No. keyring is 100% local. Your cookies and localStorage data never leave your machine. There are no servers, no cloud sync, and no telemetry of any kind. Data is saved only to ~/.keyring/storage-state.json on your own computer.

How do agents load the captured auth state?

The state file uses the standard Playwright storageState JSON format. Pass it to browser.newContext({ storageState: '~/.keyring/storage-state.json' }) — or use agent-browser state load, or reference it in your AGENTS.md for Claude Code.

Do I need to change how I browse?

No. Install the extension and native host, then browse normally. keyring captures your sessions silently in the background — you don't change how you work.

Which tools and frameworks are compatible?

Playwright, Puppeteer, agent-browser, Claude Code, and any tool that accepts standard cookie or localStorage JSON data. If it supports Playwright's storageState format, it works with keyring.

Can I choose which sites to capture?

Yes. You can whitelist specific domains (only those sites are captured), or enable global capture with per-site exclusions. You stay in full control of what gets saved.

Get started

Your agents deserve
the keys.

Privacy-first. Works with Playwright, agent-browser, Claude Code, and any browser automation tool.