Somnia
Native macOS WebKit browser with a vertical sidebar, Spaces and an Obsidian-style notes vault.
Somnia is a native macOS browser written in SwiftUI on the system WebKit, with no third-party dependencies. It has a vertical tab sidebar, colour-coded Spaces, tab sleeping to save memory, a command palette that also searches your notes, Reader Mode, private tabs, an optional tracker blocker and a per-window SOCKS5/HTTP proxy. Its distinguishing half is a plain-markdown notes vault with wiki-links, backlinks and a graph view. It is not a one-to-one Arc clone: it has no pinned tabs, split view, Peek, profiles, Arc import or extensions. The release build is Apple-silicon only, ad-hoc signed (not notarized) and needs macOS 14 or later; it is a personal early-stage project.
None found
No ads, wallet, feed, upsells or account. Zero dependencies, so no analytics SDK; the only own network request is favicon fetching. Notes and history stay local.
github.comAds, crypto, paid upsells, news feeds, default-on telemetry, required accounts.
Organization
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| SidebarVertical sidebarTabs live in a vertical sidebar that is the main tab UI and can be hidden. | ✓ | ✓ | Tabs live only in a vertical sidebar with the address bar on top; it resizes and collapses to a narrow rail.github.com |
| SpacesSeveral workspaces per window, each with its own pinned and open tabs, switched by swipe or shortcut. | ◐ | ✓ | Spaces with their own tab lists, switched by clicking dots; no pinned tabs and no space shortcut or swipe.github.com |
| ProfilesProfiles per Space (shareable)Each Space can use its own browser profile (separate cookies, logins, history), and one profile can be shared by several Spaces. | ✕ | ✓ | Every normal tab uses the one default data store, so cookies are shared across Spaces.github.com |
| FavoritesGlobal favoritesPinned icons at the top of the sidebar shared by every Space (Zen calls them Essentials). | ◐ | ✓ | One global bookmark list sits above the tabs in every Space, but these are bookmarks, not pinned icons.github.com |
| Pinned TabsPinned tabs & foldersPer-space pinned tabs that act like bookmarks, with nested folders. | ✕ | ✓ | Bookmarks are one flat list with no folders; tabs cannot be pinned per Space.github.com |
| Live foldersSidebar folders that fill and refresh themselves from an outside source, such as GitHub pull requests or an RSS feed. | ✕ | ✓ | No live-folder code at bc30696; bookmarks are a flat static list with no remote source or refresh.github.com |
| ArchiveAuto-archive tabsUnpinned tabs close automatically after a set time and stay recoverable in an archive. | ◐ | ✓ | Tabs idle 15 min are put to sleep (unloaded) but stay in the list; no archive, fixed time.github.com |
| Theme pickerSpace themesPer-space colour or gradient themes. | ◐ | ✓ | Each Space has an accent dot colour; the actual app theme and accent are global.github.com |
Browsing
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| Split ViewTwo or more tabs side by side in one window. | ✕ | ✓ | No split-view feature in the README feature list or in the sources.github.com |
| PeekLink previewOpen a link in an overlay without leaving the current page (Zen calls it Glance). | ✕ | ✓ | Links with target=_blank open as a normal new tab; there is no overlay preview.github.com |
| Little ArcMini windowA small, chrome-less window for links opened from other apps or a quick search. | ✕ | ✓ | Single window type; no mini window or external-link window. Dock menu only has New Window.github.com |
| Command barA ⌘T palette that searches tabs, history, bookmarks and browser commands. | ◐ | ✓ | ⌘K searches this Space's tabs, bookmarks, history and notes; no browser commands, not ⌘T.github.com |
| Air Traffic ControlLink routingRules that send links from other apps to a chosen space or profile. | ✕ | ✓ | Bundle declares no URL types, so links from other apps cannot be routed to it.github.com |
| BoostsSite customizationPer-site custom CSS/JS, or zapping elements off a page. | ✕ | ✓ | No per-site CSS/JS or element zapping in the feature list or sources.github.com |
| Auto PiPAuto picture-in-picturePlaying video pops out into picture-in-picture automatically when you switch tabs. | ✕ | ✓ | No picture-in-picture code in the sources; web views are plain WKWebView.github.com |
| Mini playerMedia still playing in a tab you left keeps play/pause controls in the sidebar. | ✓ | ✓ | A Now Playing widget in the top bar stays visible with a play/pause toggle for the tab playing media; no skip or mute.github.com |
| Tab SwitcherRecent-tab switcherCtrl+Tab jumps back to the tab you used last and cycles in recently used order. | ✕ | ✓ | Next/Previous Tab (⌘⇧] / ⌘⇧[) step in sidebar order within the Space; no Ctrl+Tab or recent-tab switcher.github.com |
| Super CopyClean link copyA shortcut (⌘⇧C) copies the page URL with tracking parameters removed. | ✕ | ✓ | Only a toolbar button copies the raw URL; no shortcut and no tracking-parameter stripping.github.com |
| CaptureScreenshotsBuilt-in capture of a chosen area or element, and of the full page. | ✕ | ✓ | No screenshot or capture command in the feature list or menus.github.com |
Compatibility & migration
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| Arc importImports Arc spaces, pinned tabs and folders. | ✕ | – | No import feature of any kind in the sources; only an external Obsidian vault can be connected.github.com |
| Chrome extensionsInstalls extensions from the Chrome Web Store. | ✕ | ✓ | Plain WKWebView with no extension runtime or Chrome Web Store installer.github.com |
| DRM streamingNetflix, Disney+, Spotify web and other DRM video/audio play, through Widevine or, on WebKit, FairPlay. Chromium forks need a Google Widevine licence; FairPlay counts once a major service is confirmed playing in the app. | ? | ✓ | |
| PasskeysWebAuthn passkeys, Touch ID and the system/iCloud keychain. | ? | ✓ | |
| SyncSpaces, pinned tabs and settings sync across devices. | ✕ | ✓ | Local-first: notes, session and history stay on the machine; no account or sync code.github.com |
| Mobile appiPhone, iPad or Android app that shares spaces with desktop. | ✕ | ◐ | macOS-only app; the README badge and requirements list macOS 14+ only.github.com |
Extras
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| Built-in ad blockerAd and tracker blocking without installing an extension. | ◐ | ✓ | Blocks 21 hard-coded ad/tracker domains with WebKit rules, but the toggle is off by default.github.com |
| Custom ShortcutsShortcut editorMost browser keyboard shortcuts can be remapped in Settings. | ✕ | ✓ | Shortcuts are hard-coded in the app menus; Customize has no keybinding settings.github.com |
More Arc features
Arc features shown but not counted in the score, because almost no replacement has them or only a few people need them.
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| EaselsA shareable canvas of live page captures, notes and drawings. | ✕ | ◐ | No canvas or board; the only canvas is the notes graph view, and no such feature is listed in the README.github.com |
| Shared CollectionsShared spaces & foldersShare a Space, folder or set of tabs as a link anyone can open, or another user can add to their sidebar. | ✕ | ✓ | No export or sharing of Spaces, tabs or links in the feature list.github.com |
| PreviewsWeb app previewsHover a pinned Gmail, Calendar or other web app to glance at it; a pinned calendar shows the next meeting with Join. | ✕ | ✓ | No live pinned-app glance, meeting widget or unread badge; the feature list has none.github.com |
| Developer modeA developer view that turns on by itself for localhost: full URL, quick DevTools and dev tools in reach. | ✕ | ✓ | The web view is never made inspectable, so there is no Web Inspector and no developer mode.github.com |
Extension support
Which extension formats and stores run, beyond the Chrome Web Store row above.
| Feature | Somnia | Arc | Note |
|---|---|---|---|
| Manifest V2 extensionsThe older extension format Chrome removed in 2025. Needed for full uBlock Origin and other extensions that block requests. | – | ✕ | Plain WKWebView with no extension runtime or Chrome Web Store installer.github.com |
| Manifest V3 extensionsThe current extension format used by the Chrome Web Store (and supported by Firefox and Safari). | – | ✓ | Plain WKWebView with no extension runtime or Chrome Web Store installer.github.com |
| Firefox add-onsAdd-ons from addons.mozilla.org or .xpi files install and run. | – | ✕ | Plain WKWebView with no extension runtime, so no add-ons of any kind.github.com |
| Safari extensionsSafari web extensions (the App Store extension apps Safari uses) install and run. | – | ✕ | Plain WKWebView with no extension runtime, so no web extensions of any kind.github.com |