Nook
A fast, minimal browser with a sidebar-first design for macOS.
Status: Development started back up in September 2026 under a new maintainer. The next release is 1.1.0; see Releases for the current download.
Features
- Sidebar-first navigation – vertical tabs that feel natural and uncluttered.
- Performance – optimized with modern macOS APIs for speed and low memory use.
- Minimal, modern UI – focused on content, not chrome.
Getting Started
Download
or, Build from Source
Prerequisites
- macOS 26.0 (Tahoe) or later, Apple Silicon
- Xcode 26 or later
git clone https://github.com/nook-browser/Nook.git
cd Nook
open Nook.xcodeproj
Nook builds for Apple Silicon only: the on-device tab organizer depends on MLX, which has no x86_64 slice. Xcode resolves the Swift packages on open.
You’ll need to set your personal Development Team in Signing to build locally.
Project Structure
Nook/
├── App/ # Entry point, AppDelegate, window scene, menu commands
├── Packages/ # Local Swift packages shared with the planned iOS port
│ ├── NookTabsCore/ # Tab tree model: spaces, items, ordering, on-disk store
│ ├── NookSettings/ # Settings service and every persisted value type
│ ├── NookDesign/ # Design tokens: radii, spacing, type, motion, surfaces
│ ├── NookBlocker/ # Content blocker: filter lists, adblock-rust conversion, cosmetic engine
│ ├── NookTweaks/ # Site tweaks: YouTube, Facebook, social downloads, SponsorBlock, routing
│ ├── NookWeb/ # Tabs controller, page sessions, windows, history, favicons, search
│ └── NookUI/ # Shared SwiftUI: rows, context menus, spaces list, toasts, settings tabs
├── Nook/
│ ├── Managers/ # Feature managers (macOS side)
│ │ ├── BrowserManager/ # Central coordinator; conforms to the package seams
│ │ ├── ExtensionManager/ # WKWebExtension support
│ │ ├── AIManager/ # AI chat providers, MCP client, browser tools
│ │ ├── DevMCPServer/ # Local MCP server for driving the app from a coding agent
│ │ ├── TabOrganizerManager/ # On-device LLM tab grouping (MLX)
│ │ ├── WebViewCoordinator/ # Web view pool for multi-window display
│ │ ├── DownloadManager/ # File downloads
│ │ ├── DialogManager/ # Modal dialogs
│ │ ├── PeekManager/ # Quick preview overlay
│ │ ├── SplitViewManager/ # Split-screen tab viewing
│ │ └── ...
│ ├── Models/ # macOS-only models and SwiftData entities
│ ├── Components/ # SwiftUI views: sidebar, website view, settings, drag and drop, dialogs
│ ├── Browser/ # macOS-only slice of the tab controller
│ ├── Utils/ # WebKit helpers and utilities
│ └── ThirdParty/ # adblock-rust FFI crate and other embedded dependencies
├── CommandPalette/ # Command palette UI
├── Navigation/ # Sidebar structure: header, bottom bar, spaces list
├── Onboarding/ # First-run flow
├── Settings/ # SwiftUI environment glue for the settings service
├── UI/ # Shared buttons and controls
├── docs/ # Architecture notes, design specs, implementation plans
├── scripts/ # Filter list refresh, used in CI
└── assets/ # Static assets
Architecture Overview
Nook follows a manager-based architecture where:
- Managers handle business logic and coordinate between different parts of the app
- Models represent data and state using Swift's
@Observablemacro - Components are SwiftUI views that reactively update based on model changes
- BrowserManager acts as the central coordinator, connecting all managers together
- Packages hold the model, blocker, tweak and shared view code that has no AppKit dependency, so it can be reused by an iOS app