Chrome Extension  ·  v0.1.1

Give your
AI agents
the keys.

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.

Get started

Your agents deserve
the keys.

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