An Electron application that provides a high-fidelity Chrome browser interface while proxying all browsing activity through a Browserbase verified remote browser. The app enables desktop embedding support for Browserbase remote browsers, making cloud browser sessions appear and behave as native desktop Chrome instances.
- Native Chrome Experience: Users should feel like they're using a real Chrome browser installed on their desktop
- Browserbase Integration: All browsing happens through Browserbase verified remote browsers
- Seamless Interaction: Full mouse, keyboard, and scrolling support forwarded to the remote session
- Tab Synchronization: Local tabs mirror the tabs open in the remote Browserbase session
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Electron App β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Chrome-like UI Shell β β
β β [β] [β] [β»] [π ] [ URL Bar ] β β
β β βββββββββββ¬ββββββββββ¬ββββββββββ β β
β β β Tab 1 β Tab 2 β + β β β
β β βββββββββββ΄ββββββββββ΄ββββββββββ β β
β β β Bookmarks Bar β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Browserbase Live-View Embed β β
β β (iframe / webview) β β
β β β β
β β Remote browser session rendered here β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Downloads Bar (when active) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β WebSocket / API
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browserbase Cloud β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Remote Browser (Verified Browser Mode) β β
β β β β
β β - Real Chrome instance β β
β β - Verified browser identity β β
β β - Proxy rotation (optional) β β
β β - Session persistence β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Technology |
|---|---|
| Framework | Electron (latest stable) |
| UI | HTML/CSS/TypeScript |
| Build System | electron-builder |
| Target Platform | Windows (primary), macOS/Linux (secondary) |
| Feature | Implementation |
|---|---|
| Live View | Native Browserbase live-view iframe embed |
| Session Creation | New session per app window; optional async/deferred scheduling via environment flag |
| Authentication | Environment variable (BROWSERBASE_API_KEY) |
| Verified Browsers | Verified Browser Mode enabled by default |
interface SessionConfig {
scheduleMode?: "deferred";
readyTimeoutMs?: number;
readyPollIntervalMs?: number;
proxies?: boolean; // default true
browserSettings: {
verified?: boolean; // default true
viewport: { width: number; height: number };
};
// Additional Browserbase session options as needed
}- Standard window controls (minimize, maximize, close)
- Frameless window with custom title bar to match Chrome's appearance
- Window draggable from title bar area
| Element | Functionality |
|---|---|
| Back Button | Navigate back in remote browser history |
| Forward Button | Navigate forward in remote browser history |
| Reload Button | Reload current page in remote browser |
| Home Button | Navigate to default home page |
| URL Bar | Display current URL, allow URL entry for navigation |
| URL Bar Icons | SSL indicator, bookmark star |
- Display tabs mirroring the remote Browserbase session's tabs
- Tab operations sync to remote browser via CDP:
- New tab (Ctrl+T)
- Close tab (Ctrl+W)
- Switch tabs (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+1-9)
- Tab dragging (visual only, reordering handled remotely)
- Tab appearance matches Chrome stable (rounded tabs, close buttons, favicons)
- Visual bookmarks bar below the navigation bar
- Toggleable visibility (Ctrl+Shift+B)
- Static/decorative for initial version
- Future: Sync with Browserbase session bookmarks
- Browserbase live-view embed filling the main content area
- Full interaction support:
- Mouse events (click, double-click, right-click, hover, drag)
- Keyboard events (typing, shortcuts)
- Scroll events (wheel, touch scroll)
- Touch events (for touch-enabled displays)
- Appears at bottom when downloads are detected in remote session
- Shows download progress, filename, and status
- Actions: Open, Show in folder, Cancel
- Auto-hides after completion (with delay)
All user input in the content area must be captured and forwarded to the Browserbase session:
interface InputEvent {
type: "mouse" | "keyboard" | "scroll" | "touch";
// Mouse events
mouseEvent?: {
type: "click" | "dblclick" | "mousedown" | "mouseup" | "mousemove" | "contextmenu";
x: number;
y: number;
button: number;
};
// Keyboard events
keyboardEvent?: {
type: "keydown" | "keyup" | "keypress";
key: string;
code: string;
modifiers: { ctrl: boolean; shift: boolean; alt: boolean; meta: boolean };
};
// Scroll events
scrollEvent?: {
deltaX: number;
deltaY: number;
x: number;
y: number;
};
}Use Chrome DevTools Protocol for:
- Tab management (list, create, close, activate)
- Navigation commands
- URL retrieval
- Download monitoring
- Page events
-
Color Scheme
- Tab bar background:
#DEE1E6(light mode) - Active tab:
#FFFFFF - URL bar background:
#F1F3F4 - Accent color:
#1A73E8(Google Blue)
- Tab bar background:
-
Typography
- System font stack matching Chrome
- URL bar: 14px
- Tab titles: 12px
-
Icons
- Use Chrome's icon set or pixel-perfect recreations
- Back, Forward, Reload, Home, Star, Menu (three dots)
-
Spacing & Layout
- Tab height: 34px
- Navigation bar height: 40px
- Bookmarks bar height: 28px
- URL bar border-radius: 24px
| Shortcut | Action |
|---|---|
| Cmd/Ctrl+T | New tab |
| Cmd/Ctrl+W | Close tab |
| Cmd/Ctrl+Tab | Next tab |
| Cmd/Ctrl+Shift+Tab | Previous tab |
| Cmd/Ctrl+L | Focus URL bar |
| Cmd/Ctrl+R / F5 | Reload |
| Cmd+Left / Cmd+[ on macOS, Alt+Left elsewhere | Back |
| Cmd+Right / Cmd+] on macOS, Alt+Right elsewhere | Forward |
| Cmd/Ctrl+Shift+B | Toggle bookmarks bar |
| F11 | Toggle fullscreen |
# Required
BROWSERBASE_API_KEY=bb_live_xxxxxxxxxxxx
# Optional
BROWSERBASE_DEFAULT_URL=https://www.google.com
BROWSERBASE_VERIFIED=true
BROWSERBASE_PROXIES=true
BROWSERBASE_ASYNC_BROWSERS=false
BROWSERBASE_ASYNC_READY_TIMEOUT_MS=120000
BROWSERBASE_ASYNC_POLL_INTERVAL_MS=1500
BROWSERBASE_AUTOMATION_SERVER=false
BROWSERBASE_AUTOMATION_PORT=0
BROWSERBASE_ACCELERATED_SCROLL=falseAt startup the desktop app loads .env and browserbase.env from the current
working directory, the Electron user data directory, and the user's home
directory before validating required Browserbase settings. Existing environment
variables take precedence over file values.
BROWSERBASE_VERIFIED and BROWSERBASE_PROXIES default to true (Scale). If
Verified is unavailable, session create retries with proxies still enabled. If
proxies are also unavailable, it retries without either and logs a notice that
the session will work much better with both, including docs links.
When BROWSERBASE_AUTOMATION_SERVER=true, the app starts a localhost-only
metadata server that exposes the active Browserbase CDP URL at /session and
Chrome-compatible discovery data at /json/version and /json/list.
When BROWSERBASE_ACCELERATED_SCROLL=true, wheel input over the Browserbase
live view is captured locally and dispatched to the active remote page over CDP.
The default remains live-view scrolling for compatibility with custom scroll
implementations.
{
"appearance": {
"theme": "system",
"showBookmarksBar": true
},
"browserbase": {
"defaultUrl": "https://www.google.com",
"stealthMode": "verified"
}
}desktop-browserbase/
βββ src/
β βββ main/ # Electron main process
β β βββ index.ts # Main entry point
β β βββ browserbase.ts # Browserbase API client
β β βββ session.ts # Session management
β β βββ ipc.ts # IPC handlers
β βββ renderer/ # Electron renderer process
β β βββ index.html # Main window HTML
β β βββ styles/
β β β βββ chrome.css # Chrome UI styles
β β β βββ components.css
β β βββ components/
β β β βββ TitleBar.ts
β β β βββ TabBar.ts
β β β βββ NavigationBar.ts
β β β βββ BookmarksBar.ts
β β β βββ ContentArea.ts
β β β βββ DownloadsBar.ts
β β βββ app.ts # Renderer entry point
β βββ shared/ # Shared types and utilities
β βββ types.ts
βββ assets/
β βββ icons/ # App and UI icons
βββ package.json
βββ tsconfig.json
βββ electron-builder.yml
βββ README.md
- Electron app scaffolding
- Basic Chrome UI layout (non-functional)
- Browserbase session creation on app launch
- Live-view embed displaying remote browser
- Input forwarding (mouse, keyboard, scroll)
- URL bar navigation
- Back/Forward/Reload buttons
- Basic tab display (read-only)
- CDP connection to remote browser
- Real-time tab list sync
- Tab switching
- New tab / close tab
- High-fidelity Chrome styling
- Keyboard shortcuts
- Downloads bar
- Bookmarks bar (visual)
- Window state persistence
- Windows executable build
- Installer creation
- VM testing documentation
- Performance optimization
- Visual: App is visually indistinguishable from Chrome at first glance
- Functional: All navigation and tab operations work seamlessly
- Performance: Input latency < 100ms, video stream smooth at 30fps+
- Verified Browsers: Remote sessions use Verified Browser Mode by default
- Stability: No crashes during extended use sessions
- How to handle Browserbase session timeouts/disconnects gracefully?
- Should the app support multiple windows (each with its own BB session)?
- File download handling - stream to local disk or keep in cloud?
- Right-click context menu - forward to remote or local implementation?