Wheel is a macOS browser with a bottom-docked OmniBar, a blank-tab widget dashboard, local semantic search, workspace-aware tab state, built-in downloads and reading list tools, extension and ad-blocking support, and MCP/headless control paths for local automation.
Wheel centers around one bottom-docked OmniBar with three currently enabled modes.
| Mode | What it does |
|---|---|
| Address | Search, enter URLs, search history, and jump between tabs |
| Semantic | Search browsing history by meaning instead of keywords |
| Reading List | Search saved pages |
Opening a blank tab shows the current widget dashboard, not a static new-tab page.
- Widgets persist across launches
- The dashboard runs inside a single embedded
WKWebViewruntime - Widget creation uses the configured model provider plus deterministic templates for reliable cases like clocks and simple panels
- Widgets can render local data or fetch public HTTPS data through an app-managed fetch bridge
Wheel exposes model configuration in Settings instead of hard-coding a single provider.
- Provider selection for Apple, OpenAI, or vLLM
- Optional base URL and model ID configuration for remote providers
- API key storage in Keychain for providers that need it
- A Settings Assistant that can explain supported settings changes and preview them before confirmation
- Model-backed features are limited when no model is available
Wheel indexes pages locally and lets you search by concept.
- Powered by VecturaKit
- Background indexing while you browse
- History and reading-list context support
- Workspace-aware tab persistence and default workspace configuration
- Reading List and Downloads built into the main UI
- Picture-in-Picture and Reader Mode controls
- Link previews and overlay windows from the browsing surface
- Tab wheel / middle-click panel for fast switching
- Extension runtime with ad-blocking lists and refresh controls
Wheel can expose browser control over MCP and can also run headlessly.
- Built-in MCP server inside the app
- Separate
wheel-mcp-bridgestdio target for MCP clients such as Claude Desktop - Headless mode with configurable initial URL, MCP port, and window size
git clone https://github.com/stevemurr/wheel.git
cd wheel/WheelBrowser
swift run WheelBrowsercd WheelBrowser
make buildThis produces:
.build/arm64-apple-macosx/release/Wheel Browser.app
cd WheelBrowser
make installcd WheelBrowser
swift run WheelBrowser --headless --url https://example.com --port 8765 --window-size 1440x900cd WheelBrowser
swift run wheel-mcp-bridgeEnable the MCP server in Wheel's Settings before using the bridge. The bridge forwards MCP tool calls to the app's local MCP server.
- macOS 26+
- Apple Silicon
- Xcode 26+ / Swift 6.2 toolchain
- Optional model access for widget generation and the Settings Assistant
Apple uses FoundationModels / Apple Intelligence when available. OpenAI and vLLM require endpoint configuration, and OpenAI requires an API key.
The browser itself can still run without model availability, but model-backed features will be limited.
| Shortcut | Action |
|---|---|
Cmd+T |
New tab |
Cmd+W |
Close tab |
Cmd+Shift+S |
Toggle tab sidebar |
Cmd+Option+H |
Toggle auto-hide tab dock |
| Shortcut | Action |
|---|---|
Cmd+L |
Focus address bar |
Cmd+Option+F |
Alternate address-bar focus |
Cmd+J |
Open semantic search |
Cmd+S |
Save to reading list |
Cmd+B |
Show reading list |
| Shortcut | Action |
|---|---|
Cmd+R |
Reload |
Cmd+Shift+R |
Toggle Reader Mode |
Esc |
Stop loading |
Cmd+[ |
Back |
Cmd+] |
Forward |
Cmd+F |
Find in page |
| Shortcut | Action |
|---|---|
Cmd+Shift+[ |
Previous tab |
Cmd+Shift+] |
Next tab |
Cmd+Shift+T |
Reopen closed tab |
Cmd+1-9 |
Switch to tab |
Cmd+D |
Downloads |
Cmd+Option+O |
Close all overlays |
Cmd+Option+W |
Show tab wheel |
| Shortcut | Action |
|---|---|
Cmd++ / Cmd+= |
Zoom in |
Cmd+- |
Zoom out |
Cmd+0 |
Reset zoom |
Cmd+Shift+P |
Picture in Picture |
Run the main suite:
cd WheelBrowser
swift testRun the opt-in live browser automation tests:
cd WheelBrowser
WHEEL_RUN_LIVE_AGENT_TESTS=1 swift test --filter AgentLiveTestsThe active architecture today is centered on these areas:
WheelBrowser/
├── Sources/WheelBrowser/Core/ # Product gating and shared browser experience flags
├── Sources/WheelBrowser/OmniBar/ # Address/search surface plus semantic and reading-list panels
├── Sources/WheelBrowser/Widgets/ # Blank-tab widget dashboard and manifest generation
├── Sources/WheelBrowser/SemanticSearch/ # Local indexing, embeddings, and retrieval
├── Sources/WheelBrowser/Settings/ # Model configuration, extensions, MCP, and assistant UI
├── Sources/WheelBrowser/TopDrawer/ # Workspaces and tab restoration
├── Sources/WheelBrowser/WebView/ # Web view container and browser plumbing
├── Sources/WheelBrowser/Extensions/ # Extension loading and content blocker integration
├── Sources/WheelBrowser/MCP/ # In-app MCP server and shared tool definitions
├── Sources/WheelBrowser/Headless/ # Headless browser startup and configuration
├── Sources/WheelBrowser/Downloads/ # Download UI and state
├── Sources/WheelBrowser/OverlayWindow/ # Overlay browser windows and previews
├── Sources/WheelBrowser/RightClickPanel/ # Tab wheel / middle-click switcher
└── Sources/WheelMCPBridge/ # MCP stdio bridge executable
Wheel is available under the Wheel Noncommercial Share Source License 1.0.
- Forking, use, modification, and redistribution are allowed for noncommercial purposes.
- If you share a fork or modified version with anyone else, you must publish the complete corresponding source code under the same license.
- Commercial use requires prior written permission from the copyright holder.
Because commercial use is restricted, this license is source-available, not OSI open source.
