Skip to content

rookiemann/brave-origin-for-windows

Repository files navigation

Brave Origin for Windows

License: MIT Platform: Windows Brave Origin Ubuntu Built on

Run Brave Origin Nightly on Windows. Free. Portable. Zero hassle.

Brave Origin is Brave's minimalist browser — currently Linux-only. This repo brings it to Windows users in a single dark-themed window with live logs, an in-app terminal, and one-click updates. No Docker, no VMs, no Linux knowledge.

No installer • No registry • No admin rights • Offline after first run

Brave Origin Nightly running on Windows

Install in three steps

  1. Download Brave.zip (~29 MB) from the latest Release.
  2. Right-click the zip → Extract All… to any folder.
  3. Open that folder → double-click Brave.exe.

First launch: ~5 min (imports a minimal Ubuntu rootfs into WSL, apt-installs TigerVNC/noVNC/openbox, downloads the latest Brave Origin Nightly .deb from GitHub). Every launch after: ~10 seconds.

Just want to update the launcher binary in an existing install? Grab Brave.exe (~616 KB) from the same Release and replace the one in your extracted folder. For a fresh install you always want the full Brave.zip.

What you get

A dark tabbed launcher window with four tabs.

Brave — the real Brave Origin Nightly, piped through noVNC. Click around normally.

Brave tab

Logs — live tail of every service (setup, start, update, Xtigervnc, openbox, brave, websockify, control) with a source dropdown and auto-scroll. Auto-refresh pauses while you're selecting text so you can copy freely.

Logs tab

Terminalbash -lc inside the distro with command history (↑/↓). Useful for poking around /opt, checking brave-origin-nightly --version, or just df -h to see what's going on.

Terminal tab

Settings — installed vs. latest version, automatic-updates toggle, one-click Check & update button, and quick link to the Logs tab.

Settings tab

An update banner slides in on launch when a newer nightly is released. Update / Remind later (24 h) / Ignore.

Folder Structure

Brave/                                # Extract this anywhere
│
├── Brave.exe                         # Double-click this to launch
├── webview.dll                       # WebView2 loader (used by Brave.exe)
├── brave.ico                         # App icon
├── app.json                          # App config (title, ports, deps, commands)
│
├── index.html                        # The tabbed UI (Brave/Logs/Terminal/Settings)
├── bridge.py                         # Spawns start.sh and redirects the webview
├── control.py                        # Sidecar API — settings, logs, terminal, updates
│
├── setup.sh                          # First-run installer (preflights + apt + Brave .deb)
├── start.sh                          # Launches Xtigervnc + openbox + brave + websockify
├── stop.sh                           # Tree-kills everything cleanly
├── update.sh                         # apt --only-upgrade + GitHub .deb fallback
│
└── linux/
    └── ubuntu-base.tar.gz            # Ubuntu 24.04 rootfs seed (WSL import source)

Requirements

  • Windows 10 (version 2004+) or Windows 11
  • WSL2 installed (wsl --install from admin PowerShell if you don't have it)
  • Microsoft Edge WebView2 Runtime — preinstalled on Windows 11; Win10 LTSC users can grab the free Evergreen installer
  • ~1.5 GB free disk space
  • Internet on first launch only (downloads the 120 MB Brave .deb from GitHub). The app is fully offline after that.

How it works (60 seconds)

Brave.exe (Windows, WebView2 window)
    │
    │  loads
    ▼
bridge.py (Python, inside WSL, port 10611)
    │
    │  spawns start.sh, serves a tiny redirect page
    ▼
websockify (Python, inside WSL, port 9611) — serves the tabbed UI
    │
    │  WebSocket proxy
    ▼
Xtigervnc :1 (TCP 5901) — X server
    │
    │  display
    ▼
brave-origin-nightly (the real Chromium-based Brave)

A sidecar control.py on port 9612 handles the tabbed UI's JSON API (settings, logs, update check, terminal exec, shutdown). An iptables rule blocks loopback traffic to the UI ports so Brave inside the distro can't accidentally load its own URL and create a recursive mirror.

Troubleshooting

Symptom Fix
Setup Required dialog on first launch Run wsl --install in admin PowerShell, reboot
Blank white window that never paints Install the WebView2 Evergreen runtime
api.github.com is unreachable in the setup log No internet, or a firewall/proxy blocks GitHub. Reconnect and retry
less than 2 GB free in the setup log Free disk space on C: and relaunch
"Failed to connect" inside the Brave tab Click Shut down in the launcher, wsl --unregister linbox-Brave, relaunch

The Logs tab is always the first place to look — switch the dropdown to the service you care about.

Developing

This repo tracks source only: scripts, HTML, Python, config, icon. Three binary blobs are not in git and only ship inside Brave.zip:

File Where it comes from
Brave.exe Compiled from portable-linux-in-a-box, renamed + icon stamped with rcedit
webview.dll WebView2 loader, built alongside Brave.exe
linux/ubuntu-base.tar.gz Ubuntu 24.04 rootfs from cloud-images.ubuntu.com

To get a working local dev copy: clone this repo, download the latest Brave.zip from Releases, extract it, and copy those three files into your clone. Edit anything (index.html, *.sh, *.py) and double-click Brave.exe — live edits are picked up on each run, no rebuild needed.

To cut a new release:

powershell -ExecutionPolicy Bypass -File .\build-zip.ps1

That writes a clean ..\Brave.zip (runtime files only). Upload it to a new GitHub Release and you're done.

Questions, ideas, bug reports

  • Bugs / reproducible errors → open an Issue.
  • General questions, ideas, show-and-tell, "will this work for X?" → please use Discussions. Discussions are welcomed.
  • There is intentionally no Wiki on this repo — everything worth knowing lives in this README, the inline comments, and the per-file docstrings in bridge.py / control.py. Keeping docs in one place means they can't drift out of sync.

Known limitations

  • Windows only. macOS has no WSL; porting would need a QEMU backend and a Mach-O launcher.
  • Brave is a nightly, not version-pinned — the Settings tab handles updates.
  • Runs with --no-sandbox inside a disposable single-user WSL VM (Chromium's user-namespace sandbox needs CAP_SYS_ADMIN, which WSL doesn't grant). --test-type suppresses Chromium's yellow warning bar. Acceptable here; don't run Brave like this on bare-metal Linux.

This whole project exists because of my own portable-linux-in-a-box template — a single 224 KB .exe that runs any Linux app on Windows with one double-click. Brave.exe in this repo is that template, rebuilt with a title field + Brave's icon stamped into its PE resources. If you want to package a different Linux-only app for Windows users, start there.

Credits

Built with:

License

MIT — see LICENSE.

Brave Origin Nightly is separate software with its own license; this repo does not redistribute the Brave binary — it's downloaded directly from the official Brave GitHub Releases on first launch.

About

Brave Origin Nightly on Windows — free, portable, no installer. The Linux-only minimalist browser running inside WSL2 with a dark tabbed UI, live logs, in-app terminal, and one-click updates.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors