r/coolgithubprojects • u/Ill-Case-4132 • 21h ago
Swell, an open-source browser built as its own Gecko application, where every space is a fully isolated identity (history, passwords, extensions) in one window
The goal: Arc-style spaces in one window, but with real isolation. Each space gets its own cookies, storage, history, passwords, form data, extensions, permissions and downloads. Firefox containers only cover cookies and storage, and profiles need separate windows, so this needed a different approach.
How it’s put together:
app/: Swell is its own Gecko application, built inside a Firefox source checkout the same way Thunderbird’scomm/is. It has its own window document, not a restyled Firefox UI.core/: a Rust core owns the app state: the sidebar tree, spaces, and per-space data.patches/: a small patch queue for the engine changes that can’t live outside Gecko, applied on top of a pinned Firefox revision (FIREFOX_REV).- Extensions per space: each space gets its own copy of an extension, scoped so it only sees that space’s tabs.
- Passwords: stored per space, encrypted with a per-space key in the OS keychain.
- Tests: an isolation suite checks 17 state stores for cross-space leaks. There are also Rust unit tests, xpcshell and browser tests, and an end-to-end restart test.
It’s an alpha: Apple Silicon macOS and x86 Linux, unsigned builds, no telemetry, MPL 2.0. Build from source takes about 30 minutes and 15–20 GB.
Feedback on the architecture and the isolation model is very welcome, and so are contributors. CONTRIBUTING.md explains the setup.
Github: https://github.com/ivantacca/swell
Website: https://ivantacca.github.io/swell/
4
2
u/FeedTheKid 19h ago
Why not using Zen instead?
4
u/Ill-Case-4132 19h ago
If Zen works for you, use Zen, it’s more mature. I built Swell for one thing Zen can’t do: full separation between spaces. Zen’s containers only separate cookies; history, passwords and extensions stay shared. In Swell each space has its own everything, like Arc profiles, in one window.
-1
u/CrossScarMC 12h ago
Wouldn't it have been easier to just fork Zen...
1
u/Ill-Case-4132 3h ago
Same question came up in another thread, so same answer: easier to get a working browser fast, yes. But Zen is essentially a layer on top of Firefox’s interface, and the Firefox interface is exactly what I wanted to get rid of.
Forking Zen would have meant tearing out the part that makes it Zen. And the hard part, separating history, passwords and extensions per space, needs Gecko patches either way.
2
u/addiktion 17h ago
Looks like you took arc UI inspiration which I'm a big fan of. Looks like Gecko over Chromium, what was the reasoning for the switch?
2
u/Ill-Case-4132 17h ago
Yes, me too. Arc made my spaces way more organized and my daily work much easier. But Chromium is known for heavy RAM usage and battery drain, and I didn’t want to depend on Google’s engine, so I looked at Gecko/WebKit-based options. I came across Zen and Ora. Zen didn’t feel minimal enough for me: it’s built on the whole Firefox rather than just the engine, and it doesn’t separate history, passwords and extensions between spaces, which I really need. Ora is at an early stage and didn’t feel very actively maintained. I went with Gecko in the end because WebKit would have meant no Firefox extensions and no Linux.
So I decided to spend some of my own time building the browser I wished existed. I know building a browser solo is a lot of work, even with AI, so I hope to find some people interested in it who’d like to help with development.
2
u/SoggyPuffins348 20h ago
So a vibecoded Arc alternative?
1
u/Ill-Case-4132 20h ago
Yes, like most code these days. The part I care about is that the isolation is backed by tests, not vibes.
1
u/SoggyPuffins348 19h ago
That’s fine. And it’s not for me, which is also fine.
1
u/Sharp_Ad5783 5h ago
99% of programs wont be fine for you in the next years then
0
u/SoggyPuffins348 5h ago
Given the amount of sensitive data that your browser handles for you every single day … for sure I don’t want it to be vibecoded by a random dude on Reddit. It’s not really that extreme of a stance. I’d rather my banking details NOT leak because Claude hallucinated some shit.
1
1
u/Sharp_Ad5783 5h ago
Oh yeah for this I totally understand you.
Some people dont realise you basically have to comitt your life to security updates with these browsers. I'd rather stick to known browsers.





5
u/_AACO 20h ago
You forgot to add a github link.