A Firefox fork with the power-user stack built in.
Native blocking, site-aware dark mode, vertical tree tabs, workspaces, vim navigation, session history, and egress auditing live in the browser—not in an extension collection.
Gjoa is a return to form for what the browser was meant to be.
The browser should belong to its user: open, adaptable, deeply customizable, and capable of serious work.
Modern workflows too often depend on fragile layers of extensions, scripts, hidden preferences, and configuration workarounds. Gjoa reclaims the browser as a personal computing environment by bringing vertical tabs, workspaces, keyboard-driven navigation, interface control, native dark mode, and privacy-oriented controls into the browser itself.
| Capability | What it does |
|---|---|
| Blocking | Native network, cosmetic, and curated scriptlet filtering |
| Dark mode | Pre-paint darkening for light sites while preserving native dark themes |
| Tabs + keyboard | Vertical tree tabs, modal navigation, remappable bindings, and commands |
| Workspaces | Named tab spaces that persist across session restore |
| History | Searchable, append-only session history |
| Browser UI | Floating urlbar, sidebar drawer, and a custom new-tab page |
| Control | about:gjoa settings, reversible features, and about:sovereignty egress audit |
Tagged releases produce draft GitHub releases with portable artifacts for:
- Linux x86_64 (
.tar.xzor.AppImage) - Linux arm64 (
.tar.xzor.AppImage) - macOS Apple Silicon (
.dmg) - Windows x86_64 (
.zip)
Download the artifact for your platform from Releases. Extract archives before launching gjoa; AppImages run directly after chmod +x. Release artifacts are portable builds and do not use -march=native.
bun run init
nix build .#gjoa-quickbuild --impure
./result/bin/gjoagjoa-quickbuild is the practical local build: CPU-portable and without LTO. .#gjoa is a personal, CPU-specific build with LTO and -march=native; do not distribute it to arbitrary machines.
Chrome JS and CSS iterate without a full Firefox rebuild:
direnv allow
cd engine && ./mach build
# edit src/gjoa/chrome/bjs/**/*.bjs or src/gjoa/chrome/css/*.uc.css
gjoa sync
gjoa hotreloadThe repository's .envrc activates the Mach toolchain and pinned Beagle
compiler. gjoa sync emits Beagle modules under dist/chrome/JS/ and stages
the CSS under dist/chrome/CSS/.
Before a full build, run the focused checks:
bun run preflight
bun test
bun run test:integrationThe compiler, patching strategy, and other implementation detail live in those docs rather than in this release-facing page.
MPL-2.0, the same license as Firefox.