copies your logins for a site from your normal chrome into a separate chrome that ai agents and scripts can drive. so jev, browser-use or playwright can use your accounts without touching your real browser.
syncme comes in two parts: the chrome extension and syncme-mcp, the npm bridge it talks to. the source for both is on github.
- when you're on a site you want, click the syncme icon and it asks if you want to copy it over
- syncme grabs that site's cookies and puts them in its own chrome profile (the "ai browser"). that profile is temporary and gets deleted when the ai browser closes. this runs headless in the background, nothing pops up
- when a script needs the browser, run
npx -y syncme-mcp@latest open. the ai browser opens as normal chrome with your logins already in it and prints a cdp url to connect to
it only copies cookies for sites you said yes to. no passwords, no other sites. syncme never touches your real chrome profile.
there's also a setting to re-copy all your saved sites every time the ai browser starts, so logins stay fresh.
needs chrome 140 or newer and node 20 or newer. works on mac and windows.
there's nothing to install: the extension talks to the bridge over a websocket on 127.0.0.1, and any command starts the bridge itself.
- install the extension from the chrome web store, or load this folder unpacked from
chrome://extensionswith developer mode on - click the syncme icon, hit the gear, and use one of the connect buttons, or run
npx -y syncme-mcp@latest setupto wire up every ai app it finds: claude code, claude desktop, codex, hermes, cursor, windsurf, vs code, cline, roo code, copilot cli, gemini cli, qwen code, kiro, opencode and amp
npx -y syncme-mcp@latest open # start the ai browser, prints {"cdp": "http://127.0.0.1:<port>"}
npx -y syncme-mcp@latest sync https://example.com https://github.com # copy one or more sites, asks you in chrome first unless they're saved or yolo is on
npx -y syncme-mcp@latest stop # close the ai browser
npx -y syncme-mcp@latest shutdown # close it and stop the bridge
npx -y syncme-mcp@latest setup # add the mcp server to the ai apps you have installed
npx -y syncme-mcp@latest unpair # forget the paired extension, for when you reinstall it
npx -y syncme-mcp@latest pack # build syncme.zip for the web store
connecting from playwright:
import {chromium} from 'playwright-core';
import {execFileSync} from 'node:child_process';
const {cdp} = JSON.parse(execFileSync('npx', ['-y', 'syncme-mcp@latest', 'open']));
const browser = await chromium.connectOverCDP(cdp);
await (await browser.contexts()[0].newPage()).goto('https://example.com');you can also hook it up as an mcp server so your ai can ask for a site itself. it calls copy_site with a list of sites like ["https://github.com"], you get a popup in chrome asking if it can have that login, and if you say yes it copies it and gets back the cdp url. turn on yolo mode in the syncme options (the gear in the popup) to skip that popup and let your ai copy any site it asks for. there's also open_browser and close_browser.
claude mcp add --scope user syncme -- npx -y syncme-mcp@latest
codex mcp add syncme -- npx -y syncme-mcp@latest
npx -y syncme-mcp@latest setup # does both of the above, plus every other app it finds
or by hand:
{
"mcpServers": {
"syncme": {
"command": "npx",
"args": ["-y", "syncme-mcp@latest"]
}
}
}keep chrome open with the extension for it to work, since syncme takes the cookies from there.
- syncme keeps its files in
~/Library/Application Support/syncmeon mac,%LOCALAPPDATA%\syncmeon windows and~/.local/state/syncmeon linux - removing a site from the list stops future copies, but the ai browser keeps cookies it already has until it closes
- the extension and syncme pair the first time they connect with a key exchange, so the shared secret never goes over the socket. after that they check each other on every connect, so other accounts on your computer can't pose as either one
- everything the extension and syncme send each other after that check is encrypted with aes-256-gcm, so cookies never cross the socket in plain text
- the bridge listens only on
127.0.0.1:47621, only accepts a websocket whose origin is this extension, and only takes commands from a local token only your user can read
PolyForm Noncommercial 1.0.0. free to use, change and share for anything that isn't commercial. if you want to use it for a business, ask me.