Build Your Own Lightweight macOS App from the Websites You Already Use
You probably have half a dozen web apps open in browser tabs right now—Slack, Gmail, Google Calendar, maybe a project tracker or two. Each one eats a chunk of memory, and flipping between tabs gets old fast. Multi is a small open-source project that turns a group of websites into a single, lightweight native macOS app, without the overhead of a full browser window.
What It Does
Multi creates a custom macOS application from a set of URLs you specify. You define the app's tabs—titles and addresses—in a single JSON config file, and Multi packages them into a standalone .app you can launch like anything else in your Applications folder. Each app gets native notifications, file uploads, and dialogs, so it behaves more like a real desktop application than a pinned browser tab.
The configuration lives in one place. If your app is named Test, the file sits at /Applications/Multi/Test.app/Contents/Resources/config.json and uses a handful of top-level fields. tabs is the only required one; the rest are optional toggles like windowed (each tab gets its own window), alwaysOnTop, alwaysNotify, and terminateWithLastWindow. You also get customization through CSS and JavaScript, plus a CLI called create-mac-app for building and updating apps from the command line.
Why It's Cool
-
It's genuinely lightweight. The project's framing is about resource usage—the author wrote a whole blog post on building a Slack clone that uses fewer resources. If your machine groans under a dozen Electron apps, this is a different approach.
-
The config is just JSON. No proprietary settings panels, no clicking through menus. You edit a file, and you can version-control it, share it, or script it. That's a small thing that makes a big difference if you like your tools to be reproducible.
-
The CSS/JS hooks are practical, not theoretical. The README doesn't just say "you can inject code"—it shows concrete examples: fixing broken links in Gmail and Google Calendar, reloading Slack when it disconnects, adding find-in-page, drag-and-drop URL opening, and link previews. These are the exact annoyances you'd want to patch in a web app wrapper.
-
The CLI makes it repeatable.
create-mac-appmeans you're not hand-assembling apps each time. You can create and update them, which matters if you want to keep a team's setup consistent or rebuild after a config change. -
Window options cover real workflows. Tabbed or floating windows, always-on-top, background opening of external links, and choosing which browser handles them (by bundle identifier, like
com.apple.Safari). It's a small set of knobs, but they map to how people actually work.
How to Try It
The easiest path is Homebrew:
brew install --cask multi
If you'd rather not use Homebrew, grab the latest .dmg from the Releases page and run it manually.
Once installed, you'll define your app's tabs in a JSON config. The README's table lays out the available fields—start with tabs and add options like windowed or alwaysOnTop as you need them. From there, the create-mac-app CLI handles building and updating your app, and you can layer in custom CSS and JavaScript for site-specific fixes.
The full documentation, including the JSON field reference and the JS/CSS examples, lives in the repository. If you want the backstory, the author links several blog posts covering motivation, performance, and the 3.0 rewrite.
Final Thoughts
Multi isn't trying to replace your browser or reinvent the desktop app. It's a focused tool for people who live in a handful of web apps and want them corralled into something lighter and more native-feeling. The JSON-first configuration and CLI will appeal most to developers who like tinkering and scripting their environment; if you want a polished GUI setup wizard, this probably isn't it. But if you've ever wished Slack and Gmail could just be one app that doesn't hog your RAM, it's worth a look.
Follow @githubprojects for more developer tools and open source projects.