diff --git a/README.md b/README.md index 073459c4..ff050b68 100644 --- a/README.md +++ b/README.md @@ -1,73 +1,165 @@
- Donut Browser Logo + + + Donut Browser logo +

Donut Browser

- Open Source Anti-Detect Browser -
- donutbrowser.com +

Open-source anti-detect browser. Unlimited profiles on one computer, each with its own fingerprint, cookies and proxy.

+

Zero app telemetry · No account needed · Profiles stored on your disk · Optional end-to-end encrypted sync

+

+ Latest release + Total downloads + GitHub stars + License: AGPL-3.0 + PRs welcome +

+

+ Download for macOS, Windows and Linux +

+

+ Website · + Docs · + Pricing · + Changelog +

-

- GitHub release - - - PRs Welcome - - - License - - - GitHub forks - + The Donut Browser profiles page. Twelve profiles sit in groups, each with a status, tags, a note, a proxy or VPN and an extension group.

-

- Donut Browser starts three profiles. Each one opens its own browser window with the profile name in the address bar, and shows websites a different device. -

- -

- Unlimited browser profiles on one computer. Each one shows websites a different device,
- keeps its own cookies, extensions and proxy, and stays on your machine. -

- -## Keep every account separate - -Websites link accounts that come from the same device, and then one ban can take all of them. In Donut, each account runs in its own profile with its own fingerprint, cookies and proxy or VPN, so every site sees a different device. +## Your accounts never meet In an ordinary browser, four accounts show websites the same device, so they are linked and one ban takes down all four. In Donut Browser, each account shows a different device, so the accounts stay separate. -The fingerprints come from [Wayfern](https://wayfern.com), a privacy-focused Chromium fork that sets them inside the engine, not with scripts on the page. +Websites link accounts that come from the same device, and one ban then takes them all. In Donut, each account runs in its own profile, so every site sees a different device. -## Your data stays on your device +## Every profile is a separate device + +Donut Browser starts three profiles. Each one opens its own browser window with the profile name in the address bar, and shows websites a different device. + +Each profile has its own fingerprint, cookies, extensions and proxy or VPN. WebRTC and DNS use the profile's route. Before a launch, Donut compares the timezone and language of the proxy exit with the fingerprint and stops a mismatch. + +The fingerprints come from [Wayfern](https://wayfern.com), a Chromium fork that sets them inside the engine. Cloudflare, reCAPTCHA v3 and other anti-bot services do not detect them. + +## Private at every layer Profiles, with their cookies, logins, history and fingerprints, stay on your device. Optional sync sends only data that is encrypted with your password. The app sends no telemetry. -- No account needed: profiles, cookies, logins and history live on your computer. -- Zero telemetry: the app sends no tracking or analytics. -- Lock a profile with a password, or make it ephemeral so that nothing is left when it closes. -- Sync is optional and end-to-end encrypted with a password only you know. Use Donut Sync or [run your own server](https://donutbrowser.com/docs/self-hosting). - -## Automate with code or with AI agents - -Start a profile from the local REST API and connect Playwright to it over CDP, or let your AI agent work with profiles over remote MCP. - -Start any profile from the local REST API on `127.0.0.1:10108`, then connect Playwright, Puppeteer or Selenium to it over CDP. Or connect Claude, Cursor, Codex or another MCP client over remote MCP, and watch what each agent does. Browser automation and remote MCP come with the paid plans. See the [quickstart](https://donutbrowser.com/docs/quickstart), [Playwright with Wayfern](https://donutbrowser.com/docs/wayfern) and [MCP](https://donutbrowser.com/docs/mcp) guides. +- No account needed. Profiles, cookies, logins and history stay on your computer. +- Zero app telemetry. No usage data, crash reports or device IDs leave the app. +- A password-locked profile is encrypted on disk and decrypted only while it runs. +- An ephemeral profile keeps its data in memory and is discarded when the browser closes. Clear on close drops cookies, storage and history when the window closes. +- A deleted profile waits 30 days in the trash. Permanent deletion overwrites every file. +- One setting blocks every launch without a proxy or VPN, so no profile starts from your own IP. +- Sync is optional and end-to-end encrypted with a password only you know. Use Donut Sync or [run your own server](#self-host-sync). ## Features -- Unlimited browser profiles: each fully isolated with its own fingerprint, cookies, extensions, and data -- Anti-detect Chromium engine: powered by [Wayfern](https://wayfern.com), a privacy-focused Chromium fork whose fingerprint spoofing is not detected by Cloudflare, reCaptcha v3, or other browser fingerprinting and anti-bot services -- DNS AdBlocker: block ads, trackers, and other unwanted content with per-profile DNS blocking -- Proxy support: HTTP, HTTPS, SOCKS4, SOCKS5 per profile, with dynamic proxy URLs -- VPN support: WireGuard configs per profile -- REST API & remote MCP: a local REST API and a remote [Model Context Protocol](https://modelcontextprotocol.io) server for Claude, Cursor, automation tools and custom workflows -- Profile groups: organize profiles and apply bulk settings -- Import profiles: migrate from Chrome, Edge, Brave, or other Chromium browsers -- Cookie & extension management: import/export cookies, manage extensions per profile -- Default browser: set Donut as your default browser and choose which profile opens each link -- Cloud sync: sync profiles, proxies, and groups across devices (self-hostable) -- E2E encryption: optional end-to-end encrypted sync with a password only you know -- Zero telemetry: no tracking or device fingerprinting + + + + + + + + + + + + + +
+ A proxy check: this device, the proxy and the verified exit in Frankfurt, with the ISP, timezone and UDP support. +

Proxies and VPNs

+

HTTP, HTTPS, SOCKS4 and SOCKS5 proxies, dynamic proxy URLs, WireGuard, and VLESS, VMess, Trojan and Hysteria2 links. A check shows the exit IP, location, latency and UDP support.

+
+ The DNS blocklist dialog with the Light and Normal lists, their domain counts and the time of the last refresh. +

DNS blocklists

+

Block ads, trackers and malware domains per profile, with no extension. Pick one of five levels, or add your own lists and an allowlist.

+
+ The fingerprint settings of a profile, with the operating system, a button that regenerates the fingerprint and an option for a new fingerprint at every launch. +

Fingerprints

+

Regenerate a profile's fingerprint, or get a new one at every launch. With Pro or Team, a profile can present macOS, Windows or Linux on any computer.

+
+ Traffic details of one profile: a chart of bandwidth over five minutes, with data sent, data received and the request count. +

Traffic

+

Bandwidth, requests and top domains for each profile. Turn off site recording to keep only data totals.

+
+ The 2FA codes of a profile, with the current six-digit code for one account and a field to add a key. +

2FA codes

+

Keep each account's 2FA key with its profile and copy the current code. The keys stay encrypted on your device and are never synced.

+
+ The command palette over the profiles page, with a list of pages and their keyboard shortcuts. +

Command palette

+

Press ⌘ K or Ctrl K to open a page, start or stop a profile, or run an action. Every page has its own shortcut.

+
+ +Also in the app: + +- Groups, tags, notes, statuses, and templates that create many profiles at once. +- Import profiles from Chrome, Edge, Brave or another Chromium browser, with cookies, logins and extensions. +- Import and export cookies, including Playwright `storageState` files. +- Add extensions from a Chrome Web Store link, a `.crx` or `.zip` file, or an unpacked folder, and share one set across profiles. +- Set Donut as your default browser and choose which profile opens each link. +- The interface is in 11 languages. + +## Automate with code or AI agents + +Start a profile from the local REST API and connect Playwright to it over CDP, or let your AI agent work with profiles over remote MCP. + +Start any profile from the local REST API on `127.0.0.1:10108`, then connect Playwright, Puppeteer or Selenium over CDP. The [`sdk`](sdk) folder has Python and Node clients. Connect Claude Code, Cursor, Codex or another client over remote [MCP](https://modelcontextprotocol.io) to let an agent work in your profiles. Donut has no AI model of its own. Remote MCP needs a paid plan. Starting profiles from the API and the Synchronizer need Pro or Team. + +Guides: [quickstart](https://donutbrowser.com/docs/quickstart), [Playwright with Wayfern](https://donutbrowser.com/docs/wayfern), [MCP](https://donutbrowser.com/docs/mcp). + + + + + + +
+ The Agent page. Claude Code asks for a verification code and for a decision about two orders, with buttons to show the window, hand the profile back or answer. +

Agent console

+

See what each connected agent does, answer its questions, and take over a profile and hand it back. One switch pauses all agents.

+
+ The Synchronizer: a leader profile mirrors to two followers, above the profiles table. +

Synchronizer

+

Every click and keystroke in a leader profile repeats in the followers you pick. Hold one follower out, or arrange all windows in a grid.

+
+ +## Plans + +The app is free, with unlimited local profiles. Paid plans add cloud features and automation. Prices are on the [pricing page](https://donutbrowser.com/pricing). + + + + + + + + + + + + + + +
FreeSoloProTeam
Unlimited local profiles
Proxies, VPNs and DNS blocklists
Local REST API
Self-hosted sync
Everything in Free
Encrypted cloud backup
Cookie Bot
Scheduled recipes
Remote MCP for AI agents
Everything in Solo
Browser automation API
Cross-OS fingerprints
Synchronizer
Remote browser sessions
Everything in Pro
Shared profiles
Access by profile group
Team activity log
+ + + + + + +
+ Cookie Bot: the next nightly run, a chart of machine time per night, and four profiles with their schedule. +

Cookie Bot

+

Browses real sites on a schedule from a remote host, so a new profile builds a natural history before you use it.

+
+ Team access: one member is limited to two of the team's profile groups. +

Team

+

A running profile is locked for everyone else. Limit each member to some profile groups, and see who changed what.

+
## Install @@ -95,7 +187,7 @@ brew install --cask donut | **AppImage** | [Download](https://github.com/donutbrowser/donutbrowser/releases/download/v0.34.0/Donut_0.34.0_amd64.AppImage) | [Download](https://github.com/donutbrowser/donutbrowser/releases/download/v0.34.0/Donut_0.34.0_aarch64.AppImage) | -Or install via package manager: +On 64-bit Linux, the install script adds the Donut apt or rpm repository, so updates come through your package manager. For a per-user AppImage, end the command with `sh -s -- --appimage`. ```bash curl -fsSL https://donutbrowser.com/install.sh | sh @@ -131,22 +223,33 @@ The Snap leaves the microphone, the camera and the keyring (used by profile impo nix run github:donutbrowser/donutbrowser#release-start ``` -## Self-Hosting Sync +## Run from source -Run your own sync server to sync profiles, proxies, and groups across devices for free. See the [Self-Hosting Donut Sync guide](https://donutbrowser.com/docs/self-hosting) for Docker-based setup instructions. +```bash +git clone https://github.com/donutbrowser/donutbrowser.git +cd donutbrowser +pnpm install +pnpm tauri dev +``` + +This needs Node.js (version in `.node-version`), pnpm, stable Rust and the [Tauri v2 prerequisites](https://v2.tauri.app/start/prerequisites/). With Nix, run `nix run .#setup` and then `nix run .#tauri-dev`. See [CONTRIBUTING.md](CONTRIBUTING.md). + +## Self-host sync + +Run your own sync server to sync profiles, proxies and groups across devices for free. The server is in [`donut-sync`](donut-sync) and ships as the `donutbrowser/donut-sync` Docker image. See the [self-hosting guide](https://donutbrowser.com/docs/self-hosting). ## Contributing -Donut Browser is built by the people who use it, and plenty of the most useful help involves no code at all. +Most of the useful help needs no code. -- Tell other people about Donut. Word of mouth is how most users find the project, so talking about it is a real contribution. +- Tell other people about Donut. Most users find it by word of mouth. - Report bugs and request features in [GitHub Issues](https://github.com/donutbrowser/donutbrowser/issues). - Answer questions in [GitHub Discussions](https://github.com/donutbrowser/donutbrowser/discussions). - Fix and improve translations in `src/i18n/locales`. - Write code. Start with [CONTRIBUTING.md](CONTRIBUTING.md). - Star the repo so more people see it. -## Star History +## Star history @@ -170,4 +273,4 @@ For urgent questions or security vulnerability reports, email [contact@donutbrow ## License -This project is licensed under the AGPL-3.0 License. See the [LICENSE](LICENSE) file for details. +AGPL-3.0. See [LICENSE](LICENSE). diff --git a/assets/readme/agent.webp b/assets/readme/agent.webp new file mode 100644 index 00000000..15e65e04 Binary files /dev/null and b/assets/readme/agent.webp differ diff --git a/assets/readme/command-palette.webp b/assets/readme/command-palette.webp new file mode 100644 index 00000000..870acb50 Binary files /dev/null and b/assets/readme/command-palette.webp differ diff --git a/assets/readme/cookie-bot.webp b/assets/readme/cookie-bot.webp new file mode 100644 index 00000000..1c727ef2 Binary files /dev/null and b/assets/readme/cookie-bot.webp differ diff --git a/assets/readme/dns-blocklist.webp b/assets/readme/dns-blocklist.webp new file mode 100644 index 00000000..2c47ad45 Binary files /dev/null and b/assets/readme/dns-blocklist.webp differ diff --git a/assets/readme/fingerprint.webp b/assets/readme/fingerprint.webp new file mode 100644 index 00000000..4d93a9a6 Binary files /dev/null and b/assets/readme/fingerprint.webp differ diff --git a/assets/readme/logo-dark.svg b/assets/readme/logo-dark.svg new file mode 100644 index 00000000..f67283ba --- /dev/null +++ b/assets/readme/logo-dark.svg @@ -0,0 +1 @@ + diff --git a/assets/readme/logo-light.svg b/assets/readme/logo-light.svg new file mode 100644 index 00000000..3b29c0d0 --- /dev/null +++ b/assets/readme/logo-light.svg @@ -0,0 +1 @@ + diff --git a/assets/readme/profiles.webp b/assets/readme/profiles.webp new file mode 100644 index 00000000..110706c5 Binary files /dev/null and b/assets/readme/profiles.webp differ diff --git a/assets/readme/proxy-check.webp b/assets/readme/proxy-check.webp new file mode 100644 index 00000000..e8278b52 Binary files /dev/null and b/assets/readme/proxy-check.webp differ diff --git a/assets/readme/synchronizer.webp b/assets/readme/synchronizer.webp new file mode 100644 index 00000000..0b964c9b Binary files /dev/null and b/assets/readme/synchronizer.webp differ diff --git a/assets/readme/team-access.webp b/assets/readme/team-access.webp new file mode 100644 index 00000000..dd22f49c Binary files /dev/null and b/assets/readme/team-access.webp differ diff --git a/assets/readme/traffic.webp b/assets/readme/traffic.webp new file mode 100644 index 00000000..abdd167d Binary files /dev/null and b/assets/readme/traffic.webp differ diff --git a/assets/readme/two-factor-codes.webp b/assets/readme/two-factor-codes.webp new file mode 100644 index 00000000..7b6d0203 Binary files /dev/null and b/assets/readme/two-factor-codes.webp differ