--- summary: "Uninstall OpenClaw completely (CLI, service, state, workspace)" read_when: - You want to remove OpenClaw from a machine - The gateway service is still running after uninstall title: "Uninstall" --- # Uninstall Two paths: - **Easy path** if `openclaw` is still installed. - **Manual service removal** if the CLI is gone but the service is still running. ## Easy path (CLI still installed) Recommended: use the built-in uninstaller: ```bash openclaw uninstall ``` Non-interactive (automation / npx): ```bash openclaw uninstall --all --yes --non-interactive npx -y openclaw uninstall --all --yes --non-interactive ``` Manual steps (same result): 1. Stop the gateway service: ```bash openclaw gateway stop ``` 2. Uninstall the gateway service (launchd/systemd/schtasks): ```bash openclaw gateway uninstall ``` 3. Delete state + config: ```bash rm -rf "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}" ``` If you set `OPENCLAW_CONFIG_PATH` to a custom location outside the state dir, delete that file too. 4. Delete your workspace (optional, removes agent files): ```bash rm -rf ~/.openclaw/workspace ``` 5. Remove the CLI install (pick the one you used): ```bash npm rm -g openclaw pnpm remove -g openclaw bun remove -g openclaw ``` 6. If you installed the macOS app: ```bash rm -rf /Applications/OpenClaw.app ``` Notes: - If you used profiles (`--profile` / `OPENCLAW_PROFILE`), repeat step 3 for each state dir (defaults are `~/.openclaw-`). - In remote mode, the state dir lives on the **gateway host**, so run steps 1-4 there too. ## Manual service removal (CLI not installed) Use this if the gateway service keeps running but `openclaw` is missing. ### macOS (launchd) Default label is `bot.molt.gateway` (or `bot.molt.`; legacy `com.openclaw.*` may still exist): ```bash launchctl bootout gui/$UID/bot.molt.gateway rm -f ~/Library/LaunchAgents/bot.molt.gateway.plist ``` If you used a profile, replace the label and plist name with `bot.molt.`. Remove any legacy `com.openclaw.*` plists if present. ### Linux (systemd user unit) Default unit name is `openclaw-gateway.service` (or `openclaw-gateway-.service`): ```bash systemctl --user disable --now openclaw-gateway.service rm -f ~/.config/systemd/user/openclaw-gateway.service systemctl --user daemon-reload ``` ### Windows (Scheduled Task) Default task name is `OpenClaw Gateway` (or `OpenClaw Gateway ()`). The task script lives under your state dir. ```powershell schtasks /Delete /F /TN "OpenClaw Gateway" Remove-Item -Force "$env:USERPROFILE\.openclaw\gateway.cmd" ``` If you used a profile, delete the matching task name and `~\.openclaw-\gateway.cmd`. ## Normal install vs source checkout ### Normal install (install.sh / npm / pnpm / bun) If you used `https://openclaw.ai/install.sh` or `install.ps1`, the CLI was installed with `npm install -g openclaw@latest`. Remove it with `npm rm -g openclaw` (or `pnpm remove -g` / `bun remove -g` if you installed that way). ### Source checkout (git clone) If you run from a repo checkout (`git clone` + `openclaw ...` / `bun run openclaw ...`): 1. Uninstall the gateway service **before** deleting the repo (use the easy path above or manual service removal). 2. Delete the repo directory. 3. Remove state + workspace as shown above.