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