Overview
Chrome ate my RAM and phoned home while doing it. I wanted a browser that stayed light and kept quiet, and I wanted to understand what building one actually takes. Aperture is a Rust shell (tao + wry) over Windows WebView2. WebView2 is Chromium, so Gmail, YouTube, Docs, and every real site just work. The value is what sits around the engine: a three-tier memory lifecycle that dims, sleeps, and finally discards idle background tabs (reclaim measured, not assumed), ad and tracker blocking through Brave’s adblock crate, zero application telemetry, and a persistent local profile so logins survive restarts.
It grew into a genuine daily driver. Session restore, bookmarks, command palette, reader mode, history, tab groups, per-site zoom, find-in-page, downloads. Then the harder tier: Arc-style workspaces, split view, private tabs on an isolated ephemeral profile, Chrome-style profiles with separate everything, link routing rules, tab auto-archive, and a browsing-trail graph on the new-tab page that maps the last N days of navigation as a draggable force-directed graph.
Two pieces I am proudest of. Aperture loads real unpacked Chrome extensions, so the genuine Bitwarden extension handles passwords. Passkeys were harder: Bitwarden’s passkey popout cannot render under WebView2’s window model, so Aperture ships its own WebAuthn provider that overrides navigator.credentials.get, reads the P-256 key from the vault CLI, and signs the challenge itself. Tested on a real production passkey login. The second is the local-AI sidebar: page-aware chat streaming from Ollama on my own GPU, with conversation memory, agentic web search where the browser fetches and reads pages itself, a screenshot-vision fallback, and VRAM unload when the panel closes. Every AI feature is optional and the whole layer disables cleanly for people without a local model.
In July I re-evaluated the project honestly. Matching Chrome from a solo shell is unbounded maintenance, and mainstream Chromium browsers now ship the memory features that motivated the whole thing. So I froze Aperture as a finished, open-source artifact and moved the genuinely novel pieces into a small MV3 extension I run on ungoogled-chromium. Knowing when to stop is part of the engineering.
Key Features
- Three-tier memory lifecycle: dim, sleep, discard idle tabs with measured RAM reclaim
- Ad and tracker blocking, no telemetry, DoH, HTTPS upgrade, storage partitioning
- Real unpacked Chrome extensions, including Bitwarden for passwords
- Built-in WebAuthn provider for passkey logins where the extension cannot reach
- Page-aware local-AI sidebar on Ollama: streaming chat, agentic search, vision fallback
- Workspaces, split view, private tabs, profiles, link routing, tab auto-archive
- Browsing-trail graph of navigation history on the new-tab page
Tech Stack
- Rust (
tao+wry) over Windows WebView2 - Brave’s
adblockcrate - Ollama for the optional AI layer
- No admin install, no Microsoft toolchain: Rust GNU + MinGW