dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
Local-first session transfer on macOS: Chromium browsers, ChatGPT Codex, experimental Cursor import, encrypted Grok Bot export, and optional Browserless Cloud.
Translation pending
SecurityJavaScript · SwiftGitHub @apoorvdarshanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Private, local cookie and session transfer between Chromium browsers and ChatGPT Codex on macOS.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Move signed-in sessions locally—or explicitly upload one to Browserless Cloud.
Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Comet · ChatGPT Codex and experimental Cursor browser import · encrypted Grok Bot .bcbx export · optional Browserless authenticated profiles.
Download for Apple silicon
· Download for IntelRead the full README ↗Move signed-in sessions locally—or explicitly upload one to Browserless Cloud.
Version 1.5.2: Grok Bot
.bcbxbundles embed the decryption key, so import needs no passphrase—treat the file as credentials because anyone with it can decrypt the cookies. Version 1.5.1 restored the Product Hunt launch link. Version 1.5.0 added experimental Cursor browser import and encrypted Grok Bot.bcbxexport. Cursor is destination-only and currently imports cookie sessions into its dedicated browser partition. Attach the.bcbxfile to any Grok Bot and paste the prompt; the bundled importer decrypts automatically. Cookie values must never be logged or pasted into chat. The optional Codex restart flow from 1.4.0 is unchanged and remains off by default.
Signing into the same sites across several browsers is repetitive. Export files are awkward, password managers do not move active sessions, and embedded app browsers do not always offer an import button.
Browser Cookie Bridge gives those browser profiles a small, native control panel. Local browser, Codex, and Cursor transfers stay on the Mac. Grok Bot uses an encrypted transfer file with an embedded decryption key that you attach yourself. If you explicitly select Browserless Cloud and click Upload, the app can instead send authenticated profile state to your own Browserless account.
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.
SameSite, and partition attributes.Partitions/cursor-browser profile and refuses unknown schemas..bcbx) — export cookie sessions into a local encrypted bundle with an embedded decryption key and bundled importer. The destination tile uses the official Grok Bot app icon. Attach the file to any Grok Bot; the importer runs on the cloud computer only. Manual only.| 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 |
| Encrypted Grok Bot export | Manual | Cookie sessions only, written to a local .bcbx file; history and full site data are excluded |
| History URLs | ◐ Optional | Supported for browser and Codex targets; excluded for Cursor and Grok Bot. 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.
The DMG is self-contained. Node.js 24+ and Xcode Command Line Tools are required only for npm or source installation.
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.
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.
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 →
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. A first install uses ~/Applications/Browser Cookie Bridge.app without requesting administrator access. The normal install-app command preserves an existing /Applications/Browser Cookie Bridge.app; npm run build:app intentionally replaces that canonical copy using --replace-system-from-source. Daily sync stays off until you enable it.
Local builds reuse the installed app's signing certificate, or choose an available Developer ID Application or Apple Development identity. Set MACOS_SIGNING_IDENTITY to select a compatible certificate explicitly. Certificate signing keeps the app's identity stable so Full Disk Access can survive rebuilds. Changing from ad hoc signing may require granting access once. If no certificate is available, ad hoc installs warn that permissions may reset; the installer refuses to replace a certificate-signed app with an incompatible signature.
No browser extension is needed for this path.
Cursor support is experimental and currently limited to cookie sessions in its dedicated browser partition. The importer validates the audited Cursor schema and fails closed if Cursor changes it.
An open destination app blocks the transfer. The optional Restart Codex automatically setting applies only to a manual Codex sync: it force quits Codex, waits for its database to close, and reopens Codex only after the transfer succeeds. Cursor must be quit manually. Scheduled and login syncs never force quit either app.
.bcbx)No browser extension is needed for this path.
Grok Bot cannot receive a local database merge. The app writes an encrypted transfer file that you attach to any Grok Bot.
GrokBot-Import.bcbx. The source browser can stay open: the app copies its cookie database itself before the export runs..bcbx file to any Grok Bot and paste the prompt. The bundled importer decrypts automatically—no separate key entry.If the app shows Grant Full Disk Access to read Brave cookies (Create is blocked until then), macOS is refusing to let it read the browser's cookie store (EPERM: operation not permitted). Add Browser Cookie Bridge under System Settings › Privacy & Security › Full Disk Access, then quit and reopen the app. Quitting the browser does not fix this. The doctor command prints the same check as Source cookie store access.
The bundle is a zip-compatible .bcbx file containing manifest.json, encrypted payload.enc, decryption.key, import.mjs, and PROMPT.txt. Cookies are encrypted with AES-256-GCM using a scrypt-derived key; the same key is stored in decryption.key inside the bundle so the importer can decrypt without user input. Treat the file as credentials—anyone with the bundle can read the cookies. The file is written with user-only permissions (0600). Daily sync and Sync at login never create Grok Bot bundles.
On the Grok Bot cloud computer the bundled importer:
GrokBot-Import.bcbx and run node import.mjs.Browser-to-browser transfers use a small unpacked extension at each selected endpoint.
browser-cookie-bridge setup --no-schedule or use the app's extension setup action.extension-<browser> folder for each endpoint.Generated extensions live under ~/Library/Application Support/BraveCodexCookieSync/ and contain a random, user-only local broker token. Do not share those folders.
This path uses the official Browserless CLI and is deliberately separate from local sync.
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.
| Control | What it does |
|---|---|
| Export from | Selects the browser whose data will be read |
| Import into | Selects a different browser, ChatGPT Codex, experimental Cursor browser, Grok Bot, 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 embedded-browser sync safely exits without making changes when its destination app is open. Browserless cloud uploads and Grok Bot .bcbx exports are always manual.
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 [--grok-bot-domains example.com]
browser-cookie-bridge sync [--timeout 300] [--allow-cloud-upload] [--output /path/GrokBot-Import.bcbx]
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, cursor, browserless, and grok-bot. The same browser cannot be both endpoints. Cursor import currently supports cookies only. Grok Bot export requires --output /path/GrokBot-Import.bcbx and writes cookies only; --grok-bot-domains optionally limits the bundle. The bundle includes an embedded decryption key—treat it as credentials and never paste cookie values into chat. 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.
| 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 / Cursor | The app reads the selected local Chromium profile, creates a consistent destination SQLite backup, merges cookies into a working copy, validates it, then replaces only the embedded browser's cookie database atomically. Codex also supports optional history and full site data. Cursor import is experimental and limited to the dedicated browser-partition cookie store. |
| Browser → Grok Bot | The app reads the selected local Chromium profile, encrypts cookie sessions into a .bcbx bundle with an embedded decryption key, and writes that file locally. You attach it to a Grok Bot; the bundled importer decrypts and injects cookies on the cloud computer only. |
| 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.
.bcbx files encrypt cookie payloads with AES-256-GCM but include the decryption key inside the bundle (decryption.key). Treat the entire file as credentials—anyone with the bundle can read the cookies. Do not share it or paste cookie values into chat. The bundled importer decrypts automatically, reports only import counts, then deletes the unzipped files and the bundle copy. Legacy v1 bundles without an embedded key still prompt for a separate passphrase.~/Library/Application Support/BraveCodexCookieSync/backups/codex or backups/cursor; the newest 14 per destination are retained.Partitions/cursor-browser profile, never Cursor's main application cookie store.value column with an empty encrypted_value. Those imported rows can therefore remain readable to software running as your macOS user until the website refreshes them.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.
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.
Contributions are welcome. See CONTRIBUTING.md for local setup, validation, privacy requirements, and pull request guidance.
If Browser Cookie Bridge is useful to you:
Product screenshots, the transparent cookie logo, and launch artwork live in marketing/.
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
MIT © 2026 Apoorv Darshan
Not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, OpenAI, Cursor, xAI, or Browserless. Their names and marks belong to their respective owners.