A spatial 3D browser with a game-like UI. Tabs are floating circles in space, not rows in a bar.
- 3D Spatial UI: Tabs represented as floating circles in a beautiful 3D space
- Lightweight: Built with Go and system WebView engines (no Electron!)
- Modern UX: Smooth transitions, interactive animations, and intuitive controls
- Cross-platform: Windows, macOS, and Linux support
The webview library uses CGO and requires GTK3 and WebKit2GTK:
# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev pkg-config
# Fedora
sudo dnf install gtk3-devel webkit2gtk3-devel
# Arch
sudo pacman -S gtk3 webkit2gtkWebKit is built-in. Just install Go.
WebView2 Runtime is usually pre-installed on Windows 11. For Windows 10:
# Install dependencies
go mod download
# Run in development mode
go run cmd/orb/main.go
# Or build and run
make build
./orb- Escape - Return to 3D space from a tab
- Ctrl+Shift+Space - Also returns to space
- Mouse Drag - Rotate camera around the scene
- Mouse Wheel - Zoom in/out
- New Tab Button (bottom-right) - Create a new tab
- Click a Circle - Open that tab's webpage
- Hover a Circle - See tab title tooltip
- Return Button (top-right when viewing a tab) - Go back to space
orb/
├── cmd/orb/ # Main application entry point
├── internal/
│ ├── app/ # Core application logic
│ │ ├── state.go # Thread-safe state management
│ │ ├── tabs.go # Tab lifecycle
│ │ ├── transitions.go # Mode transitions
│ │ └── types.go # Data types
│ ├── ui/ # UI bridge (Go ↔ JavaScript)
│ │ └── bindings.go # IPC layer
│ └── webview/ # WebView management
│ └── manager.go # WebView lifecycle
├── ui/ # Three.js frontend
│ ├── index.html # Main HTML
│ ├── main.js # App coordinator
│ ├── scene.js # Three.js scene
│ ├── interactions.js # Mouse/touch interactions
│ ├── transitions.js # Smooth animations
│ └── styles.css # Styling
└── docs/ # Documentation
- Backend: Go handles system-level concerns and tab lifecycle
- Frontend: Three.js handles visualization and interaction
- WebView: System WebView engines render actual web pages
- IPC: Go ↔ JavaScript communication via bindings and Eval
See docs/ARCHITECTURE.md for detailed architecture.
- 3D space with tab circles
- Create/close tabs
- Click to view tab content
- Return to space
- Smooth transitions
- Tab title updates
- Favicon display
- Enhanced animations
- Keyboard navigation
- Drag to create groups
- Visual group containers
- Group management
- Save/restore tabs on restart
- Session snapshots
# Development build (with debug mode)
make dev
# Production build
make build
# Clean build artifacts
make clean
# Run tests
make test
# Install dependencies
make depsSet debug = true in cmd/orb/main.go to enable:
- WebView developer tools
- Verbose logging
- Live reload from
ui/directory
The webview package uses CGO and needs GTK3 and WebKit2GTK. Install dev packages (see Prerequisites), then run go build ./... again:
# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev pkg-configInstall the WebView2 Runtime from Microsoft.
Grant the app permission in System Preferences > Security & Privacy.
Make sure you're running from the project root, or the ui/ directory is accessible.
MIT License - See LICENSE for details.
Contributions are welcome! Please read CONTRIBUTING.md before submitting PRs.
Orb reimagines browser UI as a spatial experience, inspired by:
- Arc Browser's spatial thinking
- Three.js creative coding
- Calm, minimal design philosophy
Built with:
- Go - Backend language
- webview_go - Native WebView bindings
- Three.js - 3D rendering
- Love for spatial interfaces ❤️
Made with ✨ by the Orb team
Orb now uses a modern React frontend with Go backend:
orb/
├── web/ # React frontend (TypeScript)
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── types/ # TypeScript types
│ │ └── App.tsx # Main app
│ ├── dist/ # Built files (served by Go)
│ └── package.json
│
├── cmd/orb/ # Go backend
└── internal/ # Go packages
# Build everything (frontend + backend)
make build
# Run in development mode
make dev
# Build only frontend
make build-web
# Run frontend dev server (for UI development)
make dev-web