This guide covers installing OpenClaw Companion (Molty) on Windows using the pre-built installer. For building from source, see DEVELOPMENT.md.
Before installing, make sure you have:
- Windows 10 (20H2 or later) or Windows 11
- WebView2 Runtime - pre-installed on Windows 11 and most up-to-date Windows 10 systems. If missing, download from Microsoft Edge WebView2.
You do not need a pre-existing local OpenClaw gateway before installing. On first launch, OpenClaw Companion can install a dedicated local WSL gateway for you, or you can use Advanced setup to connect to an existing local, remote, or manually configured gateway. See Onboarding Wizard for the install-new-WSL and connect-existing handoff flow.
New to the OpenClaw roles? Read Operator and node concepts for a short glossary of gateway, local WSL gateway, operator, node, pairing, reapproval, and allowlisted node capabilities before starting setup.
Download the latest stable installer from the canonical OpenClaw release assets:
| File | Architecture |
|---|---|
| OpenClawCompanion-Setup-x64.exe | Intel / AMD (most PCs) |
| OpenClawCompanion-Setup-arm64.exe | ARM64 (Surface Pro X, Snapdragon laptops) |
| OpenClawCompanion-SHA256SUMS.txt | SHA-256 checksums |
If you're unsure, use the x64 installer.
Double-click the downloaded .exe. Windows may show a SmartScreen prompt - click More info → Run anyway (this is normal for code-signed apps that haven't yet accumulated reputation).
The installer runs without requiring administrator privileges.
The installer offers optional shortcuts and startup integration:
- Create Desktop Icon - adds a shortcut to your desktop.
- Start OpenClaw Companion when Windows starts - launches Molty automatically at login (recommended).
After the installer finishes, OpenClaw Companion starts automatically. Look for the OpenClaw icon in the system tray (bottom-right corner of the taskbar, near the clock).
If you don't see it, check the hidden icons area (the ^ arrow next to the tray).
The installer also creates a Start Menu group with shortcuts for OpenClaw Companion, OpenClaw Gateway Setup, OpenClaw Companion Settings, OpenClaw Chat, Check for Updates, and uninstall. The Gateway Setup shortcut launches the bundled local WSL/onboarding setup app.
On first launch, Molty opens the onboarding wizard when there is no usable saved gateway connection. The default flow installs and configures a dedicated app-owned local WSL gateway:
-
Security notice - Confirms this is a trusted PC before local setup starts.
-
Welcome - Choose Install a local gateway (WSL) to install the app-owned WSL gateway, or Connect to an existing gateway to open the tray app's Connections tab.
For the role split behind these choices, see Operator and node concepts.
-
Capabilities - Choose a capability profile, review matching Windows permission status, and see exactly what setup will install before anything runs.
-
Local setup progress - Installs a fresh app-owned
OpenClawGatewayWSL instance and connects Molty to it. This does not modify an existing user Ubuntu distro. -
Gateway installed - Confirms the private gateway is running and offers Start OpenClaw onboard.
-
OpenClaw onboard - Gateway-driven provider/model/key setup rendered as a transcript. Recovery options stay available if the gateway wizard needs attention.
-
All set - A summary of available features and startup preference. Fresh setup defaults launch-at-startup on; direct OpenClaw onboard preserves any existing startup preference.
After the wizard, the tray icon turns green when connected. You can re-run the wizard or change settings anytime from the tray menu.
| Icon colour | Meaning |
|---|---|
| 🟢 Green | Connected to gateway |
| 🟡 Amber | Connecting / reconnecting |
| 🔴 Red | Error |
| ⚫ Grey | Disconnected |
Left-click the icon to open the quick-access menu. Right-click for context options.
OpenClaw Companion responds to openclaw:// deep links, which can be invoked from a browser or another app:
| Link | Action |
|---|---|
openclaw://dashboard |
Open the OpenClaw web dashboard |
openclaw://dashboard/sessions |
Open the sessions dashboard page |
openclaw://dashboard/channels |
Open the channels dashboard page |
openclaw://dashboard/skills |
Open the skills dashboard page |
openclaw://dashboard/cron |
Open the cron dashboard page |
openclaw://chat |
Open the embedded Chat page |
openclaw://settings |
Open the Settings page |
openclaw://setup |
Open the Setup Wizard |
openclaw://commandcenter |
Open Command Center diagnostics |
openclaw://activity |
Legacy activity route; opens Sessions, Usage, Instances, or Channels according to ?filter= |
openclaw://history |
Legacy notification-history alias; opens the Channels page |
openclaw://healthcheck |
Run a manual health check |
openclaw://check-updates |
Run a manual update check |
openclaw://logs |
Open the current tray log file |
openclaw://log-folder |
Open the logs folder |
openclaw://config |
Open the config folder |
openclaw://diagnostics |
Open the diagnostics JSONL folder |
openclaw://support-context |
Copy redacted support context |
openclaw://debug-bundle |
Copy a combined debug bundle for support |
openclaw://browser-setup |
Copy browser.proxy/browser-control setup guidance |
openclaw://port-diagnostics |
Copy gateway/browser/tunnel port diagnostics with owner PID stop hints |
openclaw://capability-diagnostics |
Copy permissions, allowlist, and parity diagnostics |
openclaw://node-inventory |
Copy node capabilities, commands, and policy status |
openclaw://channel-summary |
Copy channel health and start/stop availability |
openclaw://activity-summary |
Copy recent tray activity for troubleshooting |
openclaw://extensibility-summary |
Copy channel, skills, and cron dashboard surface guidance |
openclaw://restart-ssh-tunnel |
Restart the tray-managed SSH tunnel when enabled |
openclaw://agent?message=Hello |
Send a message directly to the connected gateway |
- Check Task Manager for
OpenClaw.Tray.WinUI.exe- if it's running, the icon may be hidden. - Drag the icon out of the hidden overflow area to always show it.
- If the process isn't running, try launching from Start Menu → OpenClaw Companion.
Download and install WebView2 from Microsoft. The Evergreen Standalone Installer is the easiest option.
- Verify the gateway URL in Settings (default:
ws://localhost:18789). - Make sure the OpenClaw gateway process is running.
- Check Windows Firewall - if your gateway runs on a different machine, allow inbound traffic on port 18789.
- See the log at
%LOCALAPPDATA%\OpenClawTray\openclaw-tray.logfor connection errors. - For easy-button setup, repair, or remove failures, start with
%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.txt; Copilot CLI/debugging tools can use%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.jsonl.
Local setup creates a locked-down app-owned OpenClawGateway distro rather than a general-purpose user Ubuntu profile. Edit openclaw.json from inside WSL as the openclaw user, and reserve wsl.exe -d OpenClawGateway --user root -- ... for protected-file administration. See Managing the locked-down WSL gateway for examples.
If the tray shows Pending approval after reconnecting, run the approval command shown in the tray or log:
openclaw devices approve <device-id>
See issue #81 for context on this flow.
- Make sure you paste the entire setup code - it's a single base64url-encoded string.
- Check for accidental leading/trailing whitespace.
- The code must be from a compatible gateway version. Try entering the gateway URL and token manually instead.
- If the easy-button setup flow generated the code, check
%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.txtfor the failing phase and next action.
- Verify the gateway URL is correct (e.g.,
ws://localhost:18789for local, or the full URL for remote). - Check that your token is valid and hasn't expired.
- If the gateway is on another machine, ensure Windows Firewall allows traffic on the gateway port.
- See the log at
%LOCALAPPDATA%\OpenClawTray\openclaw-tray.logfor detailed error messages. - Easy-button setup diagnostics keep per-run JSONL traces at
%LOCALAPPDATA%\OpenClawTray\Logs\Setup\setup-*.jsonland updateeasy-setup-latest.txt/.jsonlafter each run.
The Wizard screen relies on the gateway's wizard protocol. If it shows offline:
- The gateway may not support wizard mode yet - this is fine, configuration can be done later.
- Check that the gateway is running and reachable.
- You can skip the Wizard screen and configure your gateway manually from the tray menu → Settings.
Settings are stored at %APPDATA%\OpenClawTray\settings.json. If this file is corrupt, delete it and reconfigure from scratch.
- Open Settings and toggle Start with Windows off, then on again.
- Check
HKCU\Software\Microsoft\Windows\CurrentVersion\Runfor aOpenClawTrayentry.
OpenClaw Companion checks for updates automatically and shows a notification when a new version is available. Click Update to download and apply the update. You can also manually check by re-downloading from the OpenClaw Windows docs or the latest OpenClaw Windows release.
Go to Settings → Apps → Installed apps, find OpenClaw Companion, and click Uninstall. Alternatively, use Add or Remove Programs in the Control Panel. You'll be asked whether to also remove the local WSL gateway; choose Yes to unregister its WSL distro and generated state, or No to leave the gateway and that state in place.
Your settings file at %APPDATA%\OpenClawTray\settings.json is not removed automatically, and device identity files for gateways unrelated to the one you removed (including per-gateway keys at %APPDATA%\OpenClawTray\gateways\<gateway-id>\device-key-ed25519.json) are preserved. Choosing Yes also removes the removed gateway's own identity directory. Root operator and node tokens are preserved only while an external gateway record remains; otherwise they are cleared, even if another local or loopback gateway record remains. Delete %APPDATA%\OpenClawTray\ manually if you want a fully clean uninstall.
For the Companion MSIX, managed Gateway cleanup uses a current-user interactive scheduled task that survives Companion removal. Its worker, registration script and versioned cleanup-host-<hash>.exe are copied to %USERPROFILE%\.openclaw-companion\cleanup\<Companion-package-family>\. The task runs at logon and every minute through a GUI-subsystem helper that starts Windows PowerShell with CreateNoWindow, preventing a desktop console from being created. The helper targets the Windows-provided .NET Framework 4.8 and forwards the worker's exit code, recording failures in cleanup-host-error.txt beside the worker. It does not depend on VBScript, the Companion's .NET 10 runtime, or an executable inside the removed package. Versioned helper paths allow an updated Companion to refresh the task without overwriting a running helper.
The worker checks Companion package identity, ownership sentinels and removal events, then removes only the recorded owned Gateway resources after confirmed Companion removal. Polling also retries pending cleanup and provides a second absence check at least 30 seconds after the first when removal-event evidence is unavailable. The exact one-minute interval is a cleanup-latency choice, not an AppX requirement; increasing it would only slow cleanup, not prevent a visible launch. Opening an updated packaged Companion refreshes an existing owned cleanup task with the new action. A Gateway-only package update cannot refresh this Companion-owned task.
For the headless dev/WSL CLI uninstall (--uninstall --dry-run, then --confirm-destructive), see the uninstall skill. For a clean retest of native Gateway/MXC, Companion, and managed llama.cpp, use its hard-clean procedure. This inventories exact targets and requires confirmation before teardown, package removal, or residual-state deletion. Shared model caches, unrelated profiles, and WSL are preserved unless explicitly included.
On a demo/test device without Copilot, copy scripts/clean-uninstall.ps1 and run it with Windows PowerShell 5.1. Running without arguments previews the scope; -ConfirmDestructive applies it. Use -All to include dev state, receipt-backed cached models, and owned release/dev WSL distros; add -ExcludeCachedModels to preserve external shared cached weights. It still requires -ConfirmDestructive to apply and does not discover custom profile paths. Read the standalone options and preservation rules before expanding the scope or removing shared model weights.
For leftover Windows isolated-profile registrations, use -RemoveIsolatedProfilePath with exact, independently verified disposable paths. This also handles registrations whose directories were manually deleted. Preview first; applying requires elevation as the same affected user. Loaded, special, and ordinary user profiles are rejected, and -All never selects these profiles automatically.