Intercept the main window CloseRequested event so the user can choose between minimizing the app to the system tray and quitting, instead of the close button immediately tearing the process down. - Add an on_window_event handler that prevents close, emits close-confirm-requested, and lets the next CloseRequested through once confirm_quit flips a QUIT_CONFIRMED flag. - Add a TrayIconBuilder in the main process with Show / Quit menu items and a left-click handler that restores the window. Tray icon is decoded via the image crate so the donut glyph renders on every platform. - Add hide_to_tray command used by the dialog's Minimize action. - New CloseConfirmDialog React component mounted in app/page.tsx. - Enable Tauri features tray-icon and image-png. - Add closeConfirm strings across all eight locale files. The existing standalone donut-daemon tray binary is left untouched.
Features
- Unlimited browser profiles — each fully isolated with its own fingerprint, cookies, extensions, and data
- Chromium & Firefox engines — Chromium powered by Wayfern, Firefox powered by Camoufox, both with advanced fingerprint spoofing
- 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
- Local API & MCP — REST API and Model Context Protocol server for integration with Claude, automation tools, and custom workflows
- Profile groups — organize profiles and apply bulk settings
- Import profiles — migrate from Chrome, Firefox, 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
Install
macOS
| Apple Silicon | Intel | |
|---|---|---|
| DMG | Download | Download |
Or install via Homebrew:
brew install --cask donut
Windows
Download Windows Installer (x64) · Portable (x64)
Linux
| 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 | sh
Troubleshooting 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.AppImage
If that gives an EGL display error, try adding WEBKIT_DISABLE_DMABUF_RENDERER=1 or GDK_BACKEND=x11 to the command above. If issues persist, the .deb / .rpm packages are a more reliable alternative.
Nix
nix run github:zhom/donutbrowser#release-start
Self-Hosting Sync
Donut Browser supports syncing profiles, proxies, and groups across devices via a self-hosted sync server. See the Self-Hosting Guide for Docker-based setup instructions.
Development
See CONTRIBUTING.md.
Community
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Star History
Contributors
|
zhom |
Hassiy |
yb403 |
drunkod |
Jory Severijnse |
Thiago Mafra |
Contact
Have an urgent question or want to report a security vulnerability? Send an email to contact@donutbrowser.com.
License
This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.
