A Windows companion suite for OpenClaw - the AI-powered personal assistant.
Made with π¦ love by Scott Hanselman and Molty
This monorepo contains three projects:
| Project | Description |
|---|---|
| OpenClaw.Tray | System tray application for quick access to OpenClaw |
| OpenClaw.Shared | Shared gateway client library |
| OpenClaw.CommandPalette | PowerToys Command Palette extension |
- Windows 10 (20H2+) or Windows 11
- .NET 10.0 SDK (preview) - https://dotnet.microsoft.com/download/dotnet/10.0
- Windows 10 SDK (for WinUI build) - install via Visual Studio or standalone
- WebView2 Runtime - pre-installed on modern Windows, or get from https://developer.microsoft.com/microsoft-edge/webview2
- PowerToys (optional, for Command Palette extension)
Use the build script to check prerequisites and build:
# Check prerequisites
.\build.ps1 -CheckOnly
# Build all projects
.\build.ps1
# Build specific project
.\build.ps1 -Project WinUI
.\build.ps1 -Project Tray -Configuration ReleaseOr build directly with dotnet:
# Build all (use build.ps1 for best results)
dotnet build
# Build WinUI (requires runtime identifier for WebView2 support)
dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-arm64 # ARM64
dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-x64 # x64
# Build MSIX package (for camera/mic consent prompts)
dotnet build src/OpenClaw.Tray.WinUI -r win-arm64 -p:PackageMsix=true # ARM64 MSIX
dotnet build src/OpenClaw.Tray.WinUI -r win-x64 -p:PackageMsix=true # x64 MSIX# WinForms version
dotnet run --project src/OpenClaw.Tray/OpenClaw.Tray.csproj
# WinUI version - run the exe directly (path includes runtime identifier)
.\src\OpenClaw.Tray.WinUI\bin\Debug\net10.0-windows10.0.19041.0\win-arm64\OpenClaw.Tray.WinUI.exe # ARM64
.\src\OpenClaw.Tray.WinUI\bin\Debug\net10.0-windows10.0.19041.0\win-x64\OpenClaw.Tray.WinUI.exe # x64Modern Windows 11-style system tray companion that connects to your local OpenClaw gateway.
- π¦ Lobster branding - Pixel-art lobster tray icon with status colors
- π¨ Modern UI - Windows 11 flyout menu with dark/light mode support
- π¬ Quick Send - Send messages via global hotkey (Ctrl+Alt+Shift+C)
- π Auto-updates - Automatic updates from GitHub Releases
- π Web Chat - Embedded chat window with WebView2
- π Live Status - Real-time sessions, channels, and usage display
- π Toast Notifications - Clickable Windows notifications with smart categorization
- π‘ Channel Control - Start/stop Telegram & WhatsApp from the menu
- β± Cron Jobs - Quick access to scheduled tasks
- π Auto-start - Launch with Windows
- βοΈ Settings - Full configuration dialog
- π― First-run experience - Welcome dialog guides new users
- Status - Gateway connection status with click-to-view details
- Sessions - Active agent sessions (clickable β dashboard)
- Channels - Telegram/WhatsApp status with toggle control
- Actions - Dashboard, Web Chat, Quick Send, Cron Jobs, History
- Settings - Configuration, auto-start, logs
Comparing against openclaw-menubar (macOS Swift menu bar app):
| Feature | Mac | Windows | Notes |
|---|---|---|---|
| Menu bar/tray icon | β | β | Color-coded status |
| Gateway status display | β | β | Connected/Disconnected |
| PID display | β | β | Mac shows gateway PID |
| Channel status | β | β | Mac: Discord / Win: Telegram+WhatsApp |
| Sessions count | β | β | |
| Last check timestamp | β | β | Shown in tray tooltip |
| Gateway start/stop/restart | β | β | Mac controls gateway process |
| View Logs | β | β | |
| Open Web UI | β | β | |
| Refresh | β | β | Auto-refresh on menu open |
| Launch at Login | β | β | |
| Notifications toggle | β | β |
These features are available in Windows but not in the Mac app:
| Feature | Description |
|---|---|
| Quick Send hotkey | Ctrl+Alt+Shift+C global hotkey |
| Embedded Web Chat | WebView2-based chat window |
| Toast notifications | Clickable Windows notifications |
| Channel control | Start/stop Telegram & WhatsApp |
| Modern flyout menu | Windows 11-style with dark/light mode |
| Deep links | openclaw:// URL scheme with IPC |
| First-run welcome | Guided onboarding for new users |
| PowerToys integration | Command Palette extension |
When Node Mode is enabled in Settings, your Windows PC becomes a node that the OpenClaw agent can control - just like the Mac app! The agent can:
| Capability | Commands | Description |
|---|---|---|
| System | system.notify, system.run, system.execApprovals.get, system.execApprovals.set |
Show Windows toast notifications, execute commands with policy controls |
| Canvas | canvas.present, canvas.hide, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.push (investigating), canvas.a2ui.reset (investigating) |
Display and control a WebView2 window |
| Screen | screen.capture, screen.list |
Capture screenshots |
| Camera | camera.list, camera.snap |
Enumerate cameras and capture a still photo |
-
Enable Node Mode in Settings (enabled by default)
-
First connection creates a pairing request on the gateway
-
Approve the device on your gateway:
openclaw devices list # Find your Windows device openclaw devices approve <id> # Approve it
-
Configure gateway allowCommands - Add the commands you want to allow in
~/.openclaw/openclaw.json:{ "nodes": { "allowCommands": [ "system.notify", "system.run", "system.execApprovals.get", "system.execApprovals.set", "canvas.present", "canvas.hide", "canvas.navigate", "canvas.eval", "canvas.snapshot", "canvas.a2ui.push", "canvas.a2ui.reset", "screen.capture", "screen.list", "camera.list", "camera.snap" ] } }β οΈ Important: The gateway has a server-side allowlist. Commands must be listed explicitly - wildcards likecanvas.*don't work! -
Test it from your Mac/gateway:
# Show a notification openclaw nodes notify --node <id> --title "Hello" --body "From Mac!" # Open a canvas window openclaw nodes canvas present --node <id> --url "https://example.com" # Execute JavaScript (note: CLI sends "javaScript" param) openclaw nodes canvas eval --node <id> --javaScript "document.title" # Render A2UI JSONL in the canvas (pass the file contents as a string) openclaw nodes canvas a2ui push --node <id> --jsonl "$(Get-Content -Raw .\\ui.jsonl)" # Take a screenshot openclaw nodes invoke --node <id> --command screen.capture --params '{"screenIndex":0,"format":"png"}' # List cameras openclaw nodes invoke --node <id> --command camera.list # Take a photo (NV12/MediaCapture fallback) openclaw nodes invoke --node <id> --command camera.snap --params '{"deviceId":"<device-id>","format":"jpeg","quality":80}' # Execute a command on the Windows node openclaw nodes invoke --node <id> --command system.run --params '{"command":"Get-Process | Select -First 5","shell":"powershell","timeout":10000}' # View exec approval policy openclaw nodes invoke --node <id> --command system.execApprovals.get # Update exec approval policy (add custom rules) openclaw nodes invoke --node <id> --command system.execApprovals.set --params '{"rules":[{"pattern":"echo *","action":"allow"},{"pattern":"*","action":"deny"}],"defaultAction":"deny"}'
π· Camera permission: Desktop builds rely on Windows Privacy settings. Packaged MSIX builds will show the system consent prompt.
π Exec Policy:
system.runis gated by an approval policy (saved toexec-policy.json). Default rules allow read-only commands (echo, Get-*, hostname, etc.) and deny destructive operations (rm, shutdown, registry edits). Usesystem.execApprovals.get/setto view/modify rules remotely.
The tray menu shows node connection status:
- π Node Mode section appears when enabled
- β³ Waiting for approval... - Device needs approval on gateway
- β Paired & Connected - Ready to receive commands
- Click the device ID to copy it for the approval command
OpenClaw registers the openclaw:// URL scheme for automation and integration:
| Link | Description |
|---|---|
openclaw://settings |
Open Settings dialog |
openclaw://chat |
Open Web Chat window |
openclaw://dashboard |
Open Dashboard in browser |
openclaw://dashboard/sessions |
Open specific dashboard page |
openclaw://send?message=Hello |
Open Quick Send with pre-filled text |
openclaw://agent?message=Hello |
Send message directly (with confirmation) |
Deep links work even when Molty is already running - they're forwarded via IPC.
PowerToys Command Palette extension for quick OpenClaw access.
- π¦ Open Dashboard - Launch web dashboard
- π¬ Quick Send - Send a message
- π Full Status - View gateway status
- β‘ Sessions - View active sessions
- π‘ Channels - View channel health
- π Health Check - Trigger health refresh
- Build the solution in Release mode
- Deploy the MSIX package via Visual Studio
- Open Command Palette (Win+Alt+Space)
- Type "OpenClaw" to see commands
Shared library containing:
OpenClawGatewayClient- WebSocket client for gateway protocolIOpenClawLogger- Logging interface- Data models (SessionInfo, ChannelHealth, etc.)
- Channel control (start/stop channels via gateway)
moltbot-windows-hub/
βββ src/
β βββ OpenClaw.Shared/ # Shared gateway library
β βββ OpenClaw.Tray/ # System tray app
β βββ OpenClaw.CommandPalette/ # PowerToys extension
βββ docs/
β βββ molty1.png # Screenshot
βββ moltbot-windows-hub.sln
βββ README.md
βββ LICENSE
βββ .gitignore
Settings are stored in:
- Settings:
%APPDATA%\OpenClawTray\settings.json - Logs:
%LOCALAPPDATA%\OpenClawTray\openclaw-tray.log
Default gateway: ws://localhost:18789
On first run without a token, Molty displays a welcome dialog that:
- Explains what's needed to get started
- Links to documentation for token setup
- Opens Settings to configure the connection
MIT License - see LICENSE
Formerly known as Moltbot, formerly known as Clawdbot

