npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

browser-cookie-bridge

v1.4.6

Published

Local-first cookie and session transfer for macOS with optional Browserless upload

Readme

Move signed-in sessions locally—or explicitly upload one to Browserless Cloud.


Version 1.4.0 adds an optional one-click Codex restart flow. When enabled for a manual sync, Browser Cookie Bridge force quits Codex, waits for its database to close, performs the verified local transfer, preserves the imported/skipped/failed counts, and reopens Codex only after success. The option is off by default.

Why Browser Cookie Bridge

Signing into the same sites across several browsers is repetitive. Export files are awkward, password managers do not move active sessions, and ChatGPT Codex does not currently offer a Brave import button.

Browser Cookie Bridge gives those browser profiles a small, native control panel. Local browser and Codex transfers stay on the Mac. If you explicitly select Browserless Cloud and click Upload, the app can instead send authenticated profile state to your own Browserless account.

Windows waitlist

Browser Cookie Bridge currently ships for macOS. A separate Windows app is being explored, with demand guiding whether it moves into active development. If you use Windows, join the early-access waitlist and tell us which browsers and transfer paths matter to you.

Features

  • 🍪 Cookie and session transfer — cookies are enabled by default, including supported domain, path, expiry, security, SameSite, and partition attributes.
  • 🗃️ Optional full site data for Codex — replace Codex's compatible Local Storage, IndexedDB, Session Storage, service-worker, and related origin stores from a closed source profile, with backup and rollback. Off by default.
  • 🌐 Seven Chromium browsers — Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Perplexity Comet can be sources or destinations.
  • ChatGPT Codex import — merge selected local browser data into Codex's built-in browser; Codex is destination-only.
  • 🔁 Optional Codex restart — manual Sync can force quit a running Codex instance and reopen it only after a successful local transfer; off by default.
  • 🔄 Optional two-app restart — Full site data can force quit the selected source browser and Codex, then reopen only the apps that were running after a successful transfer; off by default.
  • ☁️ Optional Browserless upload — create or refresh a Browserless authenticated profile with cookies, local storage, and IndexedDB; see a local size preflight, live progress, cancellation, and post-upload verification.
  • 🕘 Background automation — sync when you sign in, at a fixed daily time, or whenever you choose.
  • Native menu-bar app — closing the window removes the Dock icon while the helper continues running.
  • 🧯 Backup and rollback — Codex's database is backed up, modified on a separate copy, integrity-checked, and restored if replacement fails.
  • ⬆️ Built-in updates — checks for GitHub releases, verifies the DMG checksum, installs in place, and relaunches the app.
  • 🔒 Local-first — local paths use no account, analytics, cookie logs, or remote relay; the separate Browserless path runs only after explicit selection and confirmation.

What it transfers

| Data | Support | Notes | |---|---:|---| | Cookies and sessions | ✅ Default | Transfers supported cookie values and attributes | | Full site data → Codex | Optional | Replaces compatible origin storage from a closed Chromium profile; backs up Codex first | | History URLs | ◐ Optional | Original visit times and page titles cannot be preserved | | Local storage and IndexedDB | ◐ Optional | Full site data into Codex, or an explicit Browserless authenticated-profile upload | | Passwords | — Never | Chromium extensions cannot read the browser password store | | Bookmarks, autofill, payments | — Never | Not requested or accessed | | iCloud Keychain | — Never | Remains completely separate |

Some websites bind sessions to a specific device or browser and may ask you to sign in again after a transfer.

Requirements

  • macOS 13.5+
  • A supported Chromium browser, or ChatGPT Codex as the destination

The DMG is self-contained. Node.js 24+ and Xcode Command Line Tools are required only for npm or source installation.

Installation

Via Homebrew — recommended

brew install --cask apoorvdarshan/tap/browser-cookie-bridge

Homebrew selects the correct Apple-silicon or Intel DMG, verifies its SHA-256 checksum, and installs the signed and notarized app into /Applications.

Download a DMG — recommended

Open the DMG, drag Browser Cookie Bridge onto Applications, then open it from Applications. Current DMGs are checksum-verified, Developer ID-signed, and Apple-notarized for a standard macOS first-launch experience. The app does not require Node.js, Xcode, Terminal, or an administrator password.

Via npm

Run the published package directly:

npx browser-cookie-bridge install-app

No administrator password is needed. The app is built from source on your Mac and installed in your user Applications folder. If a signed /Applications/Browser Cookie Bridge.app already exists, the CLI preserves it instead of replacing its Developer ID signature with an ad-hoc local build; use the app's built-in updater for signed releases.

All installation methods use the same bundle identifier and settings under ~/Library/Application Support/BraveCodexCookieSync. Homebrew and the DMG install the canonical system Applications copy. Installing either after npm does not create a separate product identity: a stale matching user Applications copy is moved to Trash on launch, and future updates replace the same app.

View browser-cookie-bridge on npm →

From source

git clone https://github.com/apoorvdarshan/browser-cookie-bridge.git
cd browser-cookie-bridge
npm test
npm run build:app

The final command compiles the native SwiftUI app, enables Open at login, Sync at login, and the menu-bar helper, then launches it. A first install uses ~/Applications/Browser Cookie Bridge.app without requesting administrator access. If an existing signed /Applications/Browser Cookie Bridge.app is present, the CLI keeps that system copy canonical and leaves app updates to the signed-DMG updater. Developers who intentionally need to replace it with a local ad-hoc build can pass --replace-system-from-source. Daily sync stays off until you enable it.

Setup

Browser → ChatGPT Codex

No browser extension is needed for this path.

  1. Select a source browser and ChatGPT Codex as the destination.
  2. Quit Codex completely, or enable Restart Codex automatically. Closing only its browser panel is not enough.
  3. Choose Cookies and, optionally, History URLs.
  4. Press Sync now and reopen Codex after the success message if automatic restart is off.

By default, an open Codex blocks the transfer. The optional Restart Codex automatically setting applies only to a manual Sync: it force quits Codex, waits for its database to close, and reopens Codex only after the transfer succeeds. Scheduled and login syncs never force quit it.

Browser → browser

Browser-to-browser transfers use a small unpacked extension at each selected endpoint.

  1. Run browser-cookie-bridge setup --no-schedule or use the app's extension setup action.
  2. Open the extensions page in both browsers and enable Developer mode.
  3. Choose Load unpacked and select the generated extension-<browser> folder for each endpoint.
  4. Keep both browsers open, select the same endpoints in the app, then press Sync now.

Generated extensions live under ~/Library/Application Support/BraveCodexCookieSync/ and contain a random, user-only local broker token. Do not share those folders.

Browser → Browserless Cloud (optional)

This path uses the official Browserless CLI and is deliberately separate from local sync.

  1. Select Browserless Cloud as the destination.
  2. Enter your Browserless API token, cloud profile name, region, and optional domain allowlist. The token is stored in macOS Keychain; it is never written to the app configuration or command arguments.
  3. Quit the selected source browser so its profile can be copied consistently.
  4. Review the cloud warning and click Upload now.

The upload creates the named Browserless profile the first time and refreshes it on later runs. It may contain cookies, local storage, and IndexedDB; history and saved passwords are excluded. The app measures the profile, IndexedDB, local storage, and available disk space locally before capture. Progress and elapsed time remain visible, Cancel upload terminates the isolated capture process group, and the dedicated temporary workspace is removed after success, failure, timeout, or cancellation.

Browserless currently caps the serialized authenticated-profile artifact at 2 MB. A large on-disk IndexedDB does not mean all of it will be uploaded: the official CLI's --auto-fit behavior drops the heaviest origins until the artifact fits while keeping cookies. Browser Cookie Bridge reports those omissions in the final result and verifies that the named cloud profile can be read back after upload. Use the domain allowlist when you need specific sites or want a faster, smaller capture.

Browserless uploads never run from Daily sync or Sync at login. Browser Cookie Bridge disables Browserless CLI telemetry for this integration. Comet is not currently supported by the Browserless capture CLI. The default cloud timeout is 15 minutes; --timeout can override it.

The official CLI records the Browserless upload-disclaimer acceptance timestamp in ~/.browserless/config.json. Browser Cookie Bridge does not store its API token there.

Usage

| Control | What it does | |---|---| | Export from | Selects the browser whose data will be read | | Import into | Selects a different browser, ChatGPT Codex, or optional Browserless Cloud | | Cookies | Moves cookies and supported session attributes; on by default | | History URLs | Adds visited URLs without their original timestamps or titles | | Daily sync | Runs at one fixed local time; off by default | | Sync at login | Runs once whenever you sign in; on by default | | Open at login | Starts the background app after macOS login; on by default | | Show in menu bar | Keeps sync, status, updates, and support actions close at hand | | Restart Codex automatically | Force quits Codex for a manual sync and reopens it only after success; off by default | | Check for updates | Finds a newer GitHub release, verifies its DMG, and offers install + relaunch |

Automation uses the saved source, destination, and data choices for local transfers. A scheduled Codex sync safely exits without making changes when Codex is open. Browserless cloud uploads are always manual and require an explicit upload action.

CLI

browser-cookie-bridge install-app [--no-open] [--replace-system-from-source]
browser-cookie-bridge setup [--hour 9] [--minute 0] [--no-schedule]
browser-cookie-bridge preferences --source brave --target codex --cookies on --history off --site-storage off --auto-restart-codex off --auto-restart-both off
browser-cookie-bridge sync [--timeout 300] [--allow-cloud-upload]
browser-cookie-bridge browserless-preflight
browser-cookie-bridge doctor
browser-cookie-bridge enable-login-sync
browser-cookie-bridge disable-login-sync
browser-cookie-bridge enable-app-login
browser-cookie-bridge disable-app-login
browser-cookie-bridge remove-schedule

Supported source IDs are brave, chrome, edge, arc, vivaldi, opera, and comet. Target IDs are the same plus codex and browserless. The same browser cannot be both endpoints. Browserless requires BROWSERLESS_TOKEN and the explicit --allow-cloud-upload flag; the native app supplies the token from Keychain without placing it in the OS command line or app configuration.

How it works

| Path | Transfer method | |---|---| | Browser → browser | Unpacked extensions connect to a short-lived broker on IPv4 loopback. Selected data stays in memory and is never written to logs. | | Browser → Codex | The app reads the selected local Chromium profile, creates a consistent Codex SQLite backup, merges into a working copy, validates it, then replaces the destination atomically. | | Browser → Browserless | The bundled official Browserless CLI copies a closed local profile, captures cookies/local storage/IndexedDB, and uploads it directly to the selected Browserless region. |

The broker validates a random token and extension origin, limits payload size, and normally exits after five minutes. Only the endpoints selected in the app respond to a transfer.

Security & privacy

  • Cookie values and history URLs are never logged.
  • Browser-to-browser data is held only in broker memory.
  • Codex backups are stored with user-only permissions under ~/Library/Application Support/BraveCodexCookieSync/backups/codex; the newest 14 are retained.
  • Full site-data import is opt-in and requires both Codex and the source browser to be closed. It replaces compatible Codex origin-storage directories rather than attempting an unsafe LevelDB merge; the previous directories are included in the same backup.
  • The app refuses unknown Codex database schemas instead of guessing.
  • Imported Codex rows use an empty encrypted_value because OpenAI's Safe Storage key is protected by a private macOS Keychain access group. Those imported rows can therefore remain readable to software running as your macOS user until the website refreshes them.
  • Anyone who can use your logged-in macOS account or modify a generated extension may be able to access transferred browser sessions.
  • The optional Browserless destination sends authenticated state to Browserless under their terms and privacy practices. Its API token is stored in macOS Keychain, uploads are manual, and Browserless CLI telemetry is disabled by the app.

Cookies are credentials. Review the source, protect your macOS account, and transfer only between profiles you trust.

Found a vulnerability? Read SECURITY.md and report it privately. Do not open a public issue or include real browser data.

Releases

Pushing a semantic version tag runs tests, validates that package and app versions match, builds separate Apple-silicon and Intel DMGs, publishes to npm, and creates a GitHub Release with the tarball, DMGs, and SHA-256 files attached.

npm run release:check
git tag vX.Y.Z
git push origin vX.Y.Z

A normal branch push does not publish anything.

Contributing

Contributions are welcome. See CONTRIBUTING.md for local setup, validation, privacy requirements, and pull request guidance.

Support

If Browser Cookie Bridge is useful to you:

Product screenshots, the transparent cookie logo, and launch artwork live in marketing/.

Website

The product landing page, documentation overview, Privacy Policy, and Terms are live at cookiebridge.apoorvdarshan.com and live in web/. Preview them locally at http://localhost:3000:

npm run web

Star History

License

MIT © 2026 Apoorv Darshan

Not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, OpenAI, or Browserless. Their names and marks belong to their respective owners.