Local-first anti-detect browser — no vendor cloud, full agent integration
github.com/maximalang/donutOS
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.
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.
The fingerprints come from Wayfern, a privacy-focused Chromium fork that sets them inside the engine, not with scripts on the page.
- 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.
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. No vendor cloud needed. See the quickstart, Server Mode, and Feature Matrix.
- Unlimited browser profiles: each fully isolated with its own fingerprint, cookies, extensions, and data
- Anti-detect Chromium engine: powered by Wayfern, 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 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
git clone https://github.com/maximalang/donutOS
cd donutOS
pnpm install
pnpm tauri build --features freePortable binary will be in src-tauri/target/release/bundle/nsis/ (Windows).
Windows x64 releases are built and published automatically via GitHub Actions. Download the latest portable .zip from Releases.
Upstream original:
| Format | x86_64 | ARM64 |
|---|---|---|
| deb | Download | Download |
| rpm | Download | Download |
| AppImage | Download | Download |
Or install via package manager:
curl -fsSL https://donutbrowser.com/install.sh | shTroubleshooting AppImage
If the AppImage segfaults on launch, install libfuse2 (sudo apt install libfuse2 / yay -S libfuse2 / sudo dnf install fuse-libs), or bypass FUSE entirely:
APPIMAGE_EXTRACT_AND_RUN=1 ./Donut.Browser_x.x.x_amd64.AppImageIf that gives an EGL display error, add WEBKIT_DISABLE_DMABUF_RENDERER=1 or GDK_BACKEND=x11 to the command above. If issues persist, the .deb and .rpm packages are more reliable.
Releases include an x86_64 Flatpak bundle and a Snap, built from the .deb and tested in their sandboxes by the Linux Packages workflow. Download Donut_*_x86_64.flatpak or Donut_*_amd64.snap from the releases (the nightly has them already) and install it:
flatpak install --user Donut_*_x86_64.flatpak
sudo snap install --dangerous Donut_*_amd64.snapThe Snap leaves the microphone, the camera and the keyring (used by profile import) disconnected until you run sudo snap connect donutbrowser:audio-record, donutbrowser:camera or donutbrowser:password-manager-service. The Flatpak cannot change the default browser, so choose Donut in your system settings instead.
nix run github:donutbrowser/donutbrowser#release-startRun donutOS as a local or LAN MCP server for agent automation. See Server Mode Configuration for:
- Local
localhost:3000MCP endpoint (no auth) - LAN/remote with token auth and optional TLS
- Self-hosted sync integration
- Hermes agent integration
See Feature Matrix for full upstream vs free comparison:
- ~70 features, vendor-cloud status mapped
- Local replacements planned for cookie-bot, agents, recipes
- Self-hosted sync compatible with v0.35.4+
Donut Browser is built by the people who use it, and plenty of the most useful help involves no code at all.
- Tell other people about Donut. Word of mouth is how most users find the project, so talking about it is a real contribution.
- Report bugs and request features in GitHub Issues.
- Answer questions in GitHub Discussions.
- Fix and improve translations in
src/i18n/locales. - Write code. Start with CONTRIBUTING.md.
- Star the repo so more people see it.
For urgent questions or security vulnerability reports, email contact@donutbrowser.com.
donutOS is a local-first fork of Donut Browser — the original anti-detect browser by @zhom and contributors.
- Upstream project: zhom/donutbrowser
- Original license: AGPL-3.0
- donutOS additions: Server-mode, local automation, agent-native API
This project is licensed under the AGPL-3.0 License, with attribution to the original Donut Browser project. See the LICENSE file for details.