See through the web.
Glass is a transparent privacy browser that doesn't just block trackers — it shows you exactly what it's protecting you from. Built with Tauri, Svelte, and adblock-rust.
- Real-time tracker blocking — Powered by Brave's adblock-rust engine with 140k+ filter rules (EasyList + EasyPrivacy)
- Live tracker feed — See every blocked request as it happens, categorized by type (Advertising, Analytics, Social, Fingerprinting, etc.)
- Tracker intelligence — Click any tracker to see who owns it, what data it collects, and its risk level
- Investigation mode — Full-screen dashboard for deep-diving into what sites are doing behind the scenes
- Fingerprint protection — Randomizes Canvas, WebGL, and Navigator APIs
- HTTPS upgrade — Automatically upgrades insecure connections
- Cosmetic filtering — Hides ad elements and tracking pixels from the DOM
- Custom new tab page — Clean, minimal start page with search and shortcuts
┌──────────────────────────────────────────┐
│ Svelte Frontend (Browser Chrome) │
│ TabBar · AddressBar · PrivacyPanel │
├──────────────────────────────────────────┤
│ Tauri IPC Bridge │
├──────────────────────────────────────────┤
│ Rust Backend │
│ ├── blocker/ adblock-rust engine │
│ ├── tabs/ multi-webview lifecycle │
│ ├── privacy/ categorization + FP │
│ └── scripts/ injected content scripts │
└──────────────────────────────────────────┘
Each browser tab is a native Tauri child webview. The main window renders the browser chrome (tab bar, address bar, panels) in Svelte, while tab content runs in separate webview processes.
- Node.js 18+
- Rust 1.77+
- Tauri CLI —
npm install -g @tauri-apps/cli - macOS 12+ (Windows/Linux support planned)
# Clone
git clone https://github.com/Atomics-hub/privacy-browser.git
cd privacy-browser
# Install dependencies
npm install
# Run in dev mode
npm run tauri dev# Build release binary
npm run tauri buildThe built app will be at src-tauri/target/release/bundle/macos/Glass.app.
Tracker blocking: On macOS, Glass uses a dual approach. Filter rules are converted to Apple's WKContentRuleList format for engine-level blocking. A content script (PerformanceObserver + error events) detects blocked resources and reports counts back to the Rust backend.
Cosmetic filtering: A MutationObserver in each tab collects DOM class and ID selectors, sends them to the adblock-rust engine, and injects CSS to hide matching elements.
Fingerprint protection: Injected scripts randomize Canvas getImageData, WebGL renderer strings, and Navigator/Screen properties to prevent cross-site fingerprinting.
Blocked count: Displayed as approximate (~N) since WebKit's content blocking API doesn't provide per-block callbacks.
| Layer | Technology |
|---|---|
| Desktop framework | Tauri v2 |
| Frontend | Svelte 5 + TypeScript |
| Backend | Rust |
| Ad blocking | adblock-rust (Brave's engine) |
| Filter lists | EasyList + EasyPrivacy |
| Build | Vite 7 |
- Local AI integration (Ollama) for page summarization and tracker explanations
- Reader mode
- Custom filter list support
- Windows and Linux builds
- Keyboard shortcuts and command palette
- Dark/light theme toggle
- Extension support