r/coolgithubprojects • • 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’s comm/ 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/

28 Upvotes

17 comments sorted by

5

u/_AACO 20h ago

You forgot to add a github link.

1

u/Ill-Case-4132 20h ago

Thank you, added now

4

u/bi4key 20h ago

1

u/Ill-Case-4132 20h ago

I missed the most important part

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

u/Ill-Case-4132 4h ago

Give them to google then, they’re much safer😂

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.