v0.9.1 Experimental Preview
mgbrowser
A browser written from the ground up in Rust.
Measured standards progress. This update fixes intrinsic widths and supported column baseline alignment. The pinned WPT pilot and remaining unsupported tests are reported below, freshly measured on every commit.
Right-click Inspect element or press F12 for diagnostics. Ctrl+T opens a tab; drag tabs into windows or left/right groups. Smooth scrolling, themes, sizing, bookmarks and update progress with Restart now remain.
Linux x86_64 · X11 / XWayland · glibc 2.35+ · No Rust toolchain needed
curl -fsSL https://mgbrowser.org/install.sh | bashRun the command once to get automatic updates. Installed builds check on startup and daily; restart to use a new version. Menu → About shows version, compile time and commit. Use --no-auto-update to disable background checks. HTTP pages keep a red title/address strip in both themes; Ctrl+L selects the location. Boa page JavaScript remains opt-in with --enable-scripts.
Modern-web compatibility is poor. This is a technology preview, not a daily browser. Do not use it for banking, sensitive authenticated browsing, or arbitrary hostile websites.
Measured compatibility
Web Platform Tests
7 / 24 selected tests passing
Fail: 0 · Unsupported: 17 · Errors: 0 · Timeouts: 0 · Crashes: 0.
A pinned static-reftest pilot using the real Rust browser navigation, resource and rendering path. This is a selected subset, not the full Web Platform Tests suite or JavaScript testharness coverage. These are current-source measurements, not a score for the installed release.
Pages reruns this selection and checks the recorded score before publishing a commit. Unsupported cases stay in the denominator.
Method and limitations ↗ · Full results and tested commit ↗
Reproducibility fingerprints
Upstream WPT: 84daed4ae966d9624bed22f43587c79283ad1fea
Corpus SHA-256: a7c74dc8f01eebd8f14ad8851e4d8c3bad3d2ac97764abd2e370602e40b1bbdd
Browser source SHA-256: 34b49a42e1df1e36a2fc8c8ecd52f482d4d1dbf3bce826cc7f49db8277595bf8
Try the browser we have
Small. Original. Experimental.
Own HTML parsing, measurement and rendering, with Rust Stylo for CSS and Taffy for bounded flex/grid sizing. PNG/JPEG/GIF and restricted static SVG images use Rust codecs. Verified HTTPS with experimental RustCrypto TLS. Opt-in Boa JavaScript runs in a restricted child process; partial CDP controls real browser input.
The installer checks SHA-256, installs to ~/.local/bin without sudo, and adds an Mg desktop launcher. Try mgbrowser https://news.google.com/ or Hacker News.
A few practical details
Open a page.
Run inside an X11 or XWayland desktop. A DejaVu or Liberation font is required; otherwise set MGBROWSER_FONT to a TrueType/OpenType font file. Follow the installer’s PATH instruction if shown.
Ctrl+L edits the address, Enter navigates, Tab moves between fields, Alt+Left goes back. Use --help for options. Developer guide ↗
Reusable Rust components
Butane. Sparkle. Chassis.
Butane embeds Boa with bounded execution policy and preserves our original interpreter as a test baseline. Sparkle handles HTML, DOM, layout and painting. Chassis brings browser services and optional controls; mg-browser supplies the desktop and platform integration.
The libraries have standalone examples and support rendering without a window. V8/WebKit drop-in compatibility, Tauri integration and a ThermiteOS port remain future work. Architecture and embedding guide ↗
The Butane JavaScript plan ↗ remains a longer roadmap. Boa now executes inline page scripts under an explicit process-contained profile ↗. Comprehensive cooperative resource control, external loading and React/Vue browser applications remain open. The initial experiment results ↗ remain separate evidence.
Read before browsing
Known limitations
- Modern-web compatibility is poor. The Google search → first result journey is not working.
- Google News still has font/icon/corner differences, script-dependent placeholders and possible destination fallbacks. Search, menus and accounts remain unfinished. Ordinary Playwright is unsupported. The native inspector is read-only, not Chrome DevTools or a JavaScript debugger.
- Boa-backed JavaScript integration is incomplete. Scripting is disabled by default and requires
--enable-scripts. - External scripts, modules, timers, fetch/XHR and general browser event-loop behavior are not implemented. No React/Vue browser-app compatibility is claimed.
- Script workers bound cumulative opcodes, sources/jobs and allocation requests. This is not complete cooperative work budgeting or GC/RSS measurement. Active detached listeners persist until removal or teardown.
- Full CSS is not implemented. Flex/grid, positioning and stacking are bounded subsets; transforms, rounded corners, complete line clamping and independently scrolling elements are unsupported. No CSS imports or downloaded fonts.
- Stylesheets remain same-origin; foreign HTTPS images load without cookies. Images support PNG, JPEG, first-frame GIF and restricted static SVG. Unsupported images remain placeholders. Dynamic resources are not fetched. Desktop reading is not mobile fidelity or general destination compatibility.
- Linux X11/XWayland is the supported GUI target. Cookies are memory-only.
- Tabs are limited to 16 across four windows, with two left/right groups per window. Navigation/script budgets remain per tab/worker, not a combined memory or CPU quota.
- System size follows screen-global X11 desktop DPI, with 100% fallback. This is whole-browser size, not per-site page zoom or per-monitor Wayland scaling. Images retain their existing decoded resolution.
- System appearance follows the Linux settings portal's light/dark preference, with Light fallback when unavailable. Custom desktop skins/accents are not copied; window managers may ignore decoration hints. Pages are not forced into dark mode.
- The restricted JavaScript worker is not a sandbox for the browser as a whole.
- Do not use this release for banking, sensitive authenticated browsing, or arbitrary hostile websites.
Research after the release
Leave a trail others can follow.
Feature contracts, daily logs and reusable agent skills keep experiments reviewable. The proposed autoresearch evaluator, broader CSS/images and full CDP remain future work. This preview does not complete the formal Linux MVP gates.
Built in the open
Evidence over promises.
Modern page, Promise, retained-event and GC/lifecycle tests accompany the Boa integration. The original engine's assertions and 26 native/26 CDP fixture journeys remain a separate research baseline. Exact release and public-install receipts live in the dated work log; local fixtures are not broad web compatibility.
Feature specification · Daily logs · Skills
Our collaboration workflow draws from Recurse.
Project status
Latest work log: . Status comes from the repository’s feature specification.
- F-026 : Upstream Web Platform Tests coveragein-progress
- F-025 : Google News desktop readingin-progress
- F-024 : Pinned Playwright browser controlin-progress
- F-023 : Detachable tabs and left/right page groupsstable
- F-022 : Native inspection and compatibility diagnosticsstable
- F-021 : Smooth wheel scrollingstable
- F-020 : Update progress, explicit restart and compact toolbarstable
- F-019 : Navigation toolbar and local bookmarksstable
- F-018 : Desktop-aware browser sizestable
- F-017 : System, light and dark browser appearancestable
- F-016 : Modern Butane JavaScript and embedding compatibilityin-progress
- F-015 : Self-updates and build identitystable
- F-014 : Hacker News desktop renderingstable
- F-013 : Reusable Mg component boundariesstable
- F-012 : v0.1 experimental previewstable
- F-001 : Project foundation and websitestable
- F-002 : Agent continuity and reusable skillsstable
- F-003 : Local document renderingin-progress
- F-004 : Static web navigationin-progress
- F-005 : Styled text and imagesin-progress
- F-006 : Reproducible autoresearch evaluatorplanned
- F-007 : Linux MVP releaseplanned
- F-008 : JavaScript and broader compatibilityin-progress
- F-009 : Experimental Rust dependency foundationstable
- F-010 : Google search to first destinationin-progress
- F-011 : Chrome DevTools Protocol automationin-progress