refactor: rename to openclaw

This commit is contained in:
Peter Steinberger
2026-01-30 03:15:10 +01:00
parent 4583f88626
commit 9a7160786a
2357 changed files with 16688 additions and 16788 deletions

View File

@@ -1,5 +1,5 @@
---
summary: "Automated, hardened Moltbot installation with Ansible, Tailscale VPN, and firewall isolation"
summary: "Automated, hardened OpenClaw installation with Ansible, Tailscale VPN, and firewall isolation"
read_when:
- You want automated server deployment with security hardening
- You need firewall-isolated setup with VPN access
@@ -8,19 +8,19 @@ read_when:
# Ansible Installation
The recommended way to deploy Moltbot to production servers is via **[moltbot-ansible](https://github.com/moltbot/moltbot-ansible)** — an automated installer with security-first architecture.
The recommended way to deploy OpenClaw to production servers is via **[openclaw-ansible](https://github.com/openclaw/openclaw-ansible)** — an automated installer with security-first architecture.
## Quick Start
One-command install:
```bash
curl -fsSL https://raw.githubusercontent.com/moltbot/moltbot-ansible/main/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw-ansible/main/install.sh | bash
```
> **📦 Full guide: [github.com/moltbot/moltbot-ansible](https://github.com/moltbot/moltbot-ansible)**
> **📦 Full guide: [github.com/openclaw/openclaw-ansible](https://github.com/openclaw/openclaw-ansible)**
>
> The moltbot-ansible repo is the source of truth for Ansible deployment. This page is a quick overview.
> The openclaw-ansible repo is the source of truth for Ansible deployment. This page is a quick overview.
## What You Get
@@ -46,22 +46,22 @@ The Ansible playbook installs and configures:
2. **UFW firewall** (SSH + Tailscale ports only)
3. **Docker CE + Compose V2** (for agent sandboxes)
4. **Node.js 22.x + pnpm** (runtime dependencies)
5. **Moltbot** (host-based, not containerized)
5. **OpenClaw** (host-based, not containerized)
6. **Systemd service** (auto-start with security hardening)
Note: The gateway runs **directly on the host** (not in Docker), but agent sandboxes use Docker for isolation. See [Sandboxing](/gateway/sandboxing) for details.
## Post-Install Setup
After installation completes, switch to the moltbot user:
After installation completes, switch to the openclaw user:
```bash
sudo -i -u moltbot
sudo -i -u openclaw
```
The post-install script will guide you through:
1. **Onboarding wizard**: Configure Moltbot settings
1. **Onboarding wizard**: Configure OpenClaw settings
2. **Provider login**: Connect WhatsApp/Telegram/Discord/Signal
3. **Gateway testing**: Verify the installation
4. **Tailscale setup**: Connect to your VPN mesh
@@ -70,17 +70,17 @@ The post-install script will guide you through:
```bash
# Check service status
sudo systemctl status moltbot
sudo systemctl status openclaw
# View live logs
sudo journalctl -u moltbot -f
sudo journalctl -u openclaw -f
# Restart gateway
sudo systemctl restart moltbot
sudo systemctl restart openclaw
# Provider login (run as moltbot user)
sudo -i -u moltbot
moltbot channels login
# Provider login (run as openclaw user)
sudo -i -u openclaw
openclaw channels login
```
## Security Architecture
@@ -117,8 +117,8 @@ If you prefer manual control over the automation:
sudo apt update && sudo apt install -y ansible git
# 2. Clone repository
git clone https://github.com/moltbot/moltbot-ansible.git
cd moltbot-ansible
git clone https://github.com/openclaw/openclaw-ansible.git
cd openclaw-ansible
# 3. Install Ansible collections
ansible-galaxy collection install -r requirements.yml
@@ -126,18 +126,18 @@ ansible-galaxy collection install -r requirements.yml
# 4. Run playbook
./run-playbook.sh
# Or run directly (then manually execute /tmp/moltbot-setup.sh after)
# Or run directly (then manually execute /tmp/openclaw-setup.sh after)
# ansible-playbook playbook.yml --ask-become-pass
```
## Updating Moltbot
## Updating OpenClaw
The Ansible installer sets up Moltbot for manual updates. See [Updating](/install/updating) for the standard update flow.
The Ansible installer sets up OpenClaw for manual updates. See [Updating](/install/updating) for the standard update flow.
To re-run the Ansible playbook (e.g., for configuration changes):
```bash
cd moltbot-ansible
cd openclaw-ansible
./run-playbook.sh
```
@@ -156,14 +156,14 @@ If you're locked out:
```bash
# Check logs
sudo journalctl -u moltbot -n 100
sudo journalctl -u openclaw -n 100
# Verify permissions
sudo ls -la /opt/moltbot
sudo ls -la /opt/openclaw
# Test manual start
sudo -i -u moltbot
cd ~/moltbot
sudo -i -u openclaw
cd ~/openclaw
pnpm start
```
@@ -174,32 +174,32 @@ pnpm start
sudo systemctl status docker
# Check sandbox image
sudo docker images | grep moltbot-sandbox
sudo docker images | grep openclaw-sandbox
# Build sandbox image if missing
cd /opt/moltbot/moltbot
sudo -u moltbot ./scripts/sandbox-setup.sh
cd /opt/openclaw/openclaw
sudo -u openclaw ./scripts/sandbox-setup.sh
```
### Provider login fails
Make sure you're running as the `moltbot` user:
Make sure you're running as the `openclaw` user:
```bash
sudo -i -u moltbot
moltbot channels login
sudo -i -u openclaw
openclaw channels login
```
## Advanced Configuration
For detailed security architecture and troubleshooting:
- [Security Architecture](https://github.com/moltbot/moltbot-ansible/blob/main/docs/security.md)
- [Technical Details](https://github.com/moltbot/moltbot-ansible/blob/main/docs/architecture.md)
- [Troubleshooting Guide](https://github.com/moltbot/moltbot-ansible/blob/main/docs/troubleshooting.md)
- [Security Architecture](https://github.com/openclaw/openclaw-ansible/blob/main/docs/security.md)
- [Technical Details](https://github.com/openclaw/openclaw-ansible/blob/main/docs/architecture.md)
- [Troubleshooting Guide](https://github.com/openclaw/openclaw-ansible/blob/main/docs/troubleshooting.md)
## Related
- [moltbot-ansible](https://github.com/moltbot/moltbot-ansible) — full deployment guide
- [openclaw-ansible](https://github.com/openclaw/openclaw-ansible) — full deployment guide
- [Docker](/install/docker) — containerized gateway setup
- [Sandboxing](/gateway/sandboxing) — agent sandbox configuration
- [Multi-Agent Sandbox & Tools](/multi-agent-sandbox-tools) — per-agent isolation

View File

@@ -9,7 +9,7 @@ read_when:
Last updated: 2026-01-21
Moltbot ships three update channels:
OpenClaw ships three update channels:
- **stable**: npm dist-tag `latest`.
- **beta**: npm dist-tag `beta` (builds under test).
@@ -23,9 +23,9 @@ without changing the version number — dist-tags are the source of truth for np
Git checkout:
```bash
moltbot update --channel stable
moltbot update --channel beta
moltbot update --channel dev
openclaw update --channel stable
openclaw update --channel beta
openclaw update --channel dev
```
- `stable`/`beta` check out the latest matching tag (often the same tag).
@@ -34,17 +34,17 @@ moltbot update --channel dev
npm/pnpm global install:
```bash
moltbot update --channel stable
moltbot update --channel beta
moltbot update --channel dev
openclaw update --channel stable
openclaw update --channel beta
openclaw update --channel dev
```
This updates via the corresponding npm dist-tag (`latest`, `beta`, `dev`).
When you **explicitly** switch channels with `--channel`, Moltbot also aligns
When you **explicitly** switch channels with `--channel`, OpenClaw also aligns
the install method:
- `dev` ensures a git checkout (default `~/moltbot`, override with `CLAWDBOT_GIT_DIR`),
- `dev` ensures a git checkout (default `~/openclaw`, override with `OPENCLAW_GIT_DIR`),
updates it, and installs the global CLI from that checkout.
- `stable`/`beta` installs from npm using the matching dist-tag.
@@ -52,7 +52,7 @@ Tip: if you want stable + dev in parallel, keep two clones and point your gatewa
## Plugins and channels
When you switch channels with `moltbot update`, Moltbot also syncs plugin sources:
When you switch channels with `openclaw update`, OpenClaw also syncs plugin sources:
- `dev` prefers bundled plugins from the git checkout.
- `stable` and `beta` restore npm-installed plugin packages.

View File

@@ -1,5 +1,5 @@
---
summary: "Optional Docker-based setup and onboarding for Moltbot"
summary: "Optional Docker-based setup and onboarding for OpenClaw"
read_when:
- You want a containerized gateway instead of local installs
- You are validating the Docker flow
@@ -11,12 +11,12 @@ Docker is **optional**. Use it only if you want a containerized gateway or to va
## Is Docker right for me?
- **Yes**: you want an isolated, throwaway gateway environment or to run Moltbot on a host without local installs.
- **Yes**: you want an isolated, throwaway gateway environment or to run OpenClaw on a host without local installs.
- **No**: youre running on your own machine and just want the fastest dev loop. Use the normal install flow instead.
- **Sandboxing note**: agent sandboxing uses Docker too, but it does **not** require the full gateway to run in Docker. See [Sandboxing](/gateway/sandboxing).
This guide covers:
- Containerized Gateway (full Moltbot in Docker)
- Containerized Gateway (full OpenClaw in Docker)
- Per-session Agent Sandbox (host gateway + Docker-isolated agent tools)
Sandboxing details: [Sandboxing](/gateway/sandboxing)
@@ -44,93 +44,93 @@ This script:
- generates a gateway token and writes it to `.env`
Optional env vars:
- `CLAWDBOT_DOCKER_APT_PACKAGES` — install extra apt packages during build
- `CLAWDBOT_EXTRA_MOUNTS` — add extra host bind mounts
- `CLAWDBOT_HOME_VOLUME` — persist `/home/node` in a named volume
- `OPENCLAW_DOCKER_APT_PACKAGES` — install extra apt packages during build
- `OPENCLAW_EXTRA_MOUNTS` — add extra host bind mounts
- `OPENCLAW_HOME_VOLUME` — persist `/home/node` in a named volume
After it finishes:
- Open `http://127.0.0.1:18789/` in your browser.
- Paste the token into the Control UI (Settings → token).
It writes config/workspace on the host:
- `~/.clawdbot/`
- `~/clawd`
- `~/.openclaw/`
- `~/.openclaw/workspace`
Running on a VPS? See [Hetzner (Docker VPS)](/platforms/hetzner).
### Manual flow (compose)
```bash
docker build -t moltbot:local -f Dockerfile .
docker compose run --rm moltbot-cli onboard
docker compose up -d moltbot-gateway
docker build -t openclaw:local -f Dockerfile .
docker compose run --rm openclaw-cli onboard
docker compose up -d openclaw-gateway
```
### Extra mounts (optional)
If you want to mount additional host directories into the containers, set
`CLAWDBOT_EXTRA_MOUNTS` before running `docker-setup.sh`. This accepts a
`OPENCLAW_EXTRA_MOUNTS` before running `docker-setup.sh`. This accepts a
comma-separated list of Docker bind mounts and applies them to both
`moltbot-gateway` and `moltbot-cli` by generating `docker-compose.extra.yml`.
`openclaw-gateway` and `openclaw-cli` by generating `docker-compose.extra.yml`.
Example:
```bash
export CLAWDBOT_EXTRA_MOUNTS="$HOME/.codex:/home/node/.codex:ro,$HOME/github:/home/node/github:rw"
export OPENCLAW_EXTRA_MOUNTS="$HOME/.codex:/home/node/.codex:ro,$HOME/github:/home/node/github:rw"
./docker-setup.sh
```
Notes:
- Paths must be shared with Docker Desktop on macOS/Windows.
- If you edit `CLAWDBOT_EXTRA_MOUNTS`, rerun `docker-setup.sh` to regenerate the
- If you edit `OPENCLAW_EXTRA_MOUNTS`, rerun `docker-setup.sh` to regenerate the
extra compose file.
- `docker-compose.extra.yml` is generated. Dont hand-edit it.
### Persist the entire container home (optional)
If you want `/home/node` to persist across container recreation, set a named
volume via `CLAWDBOT_HOME_VOLUME`. This creates a Docker volume and mounts it at
volume via `OPENCLAW_HOME_VOLUME`. This creates a Docker volume and mounts it at
`/home/node`, while keeping the standard config/workspace bind mounts. Use a
named volume here (not a bind path); for bind mounts, use
`CLAWDBOT_EXTRA_MOUNTS`.
`OPENCLAW_EXTRA_MOUNTS`.
Example:
```bash
export CLAWDBOT_HOME_VOLUME="moltbot_home"
export OPENCLAW_HOME_VOLUME="openclaw_home"
./docker-setup.sh
```
You can combine this with extra mounts:
```bash
export CLAWDBOT_HOME_VOLUME="moltbot_home"
export CLAWDBOT_EXTRA_MOUNTS="$HOME/.codex:/home/node/.codex:ro,$HOME/github:/home/node/github:rw"
export OPENCLAW_HOME_VOLUME="openclaw_home"
export OPENCLAW_EXTRA_MOUNTS="$HOME/.codex:/home/node/.codex:ro,$HOME/github:/home/node/github:rw"
./docker-setup.sh
```
Notes:
- If you change `CLAWDBOT_HOME_VOLUME`, rerun `docker-setup.sh` to regenerate the
- If you change `OPENCLAW_HOME_VOLUME`, rerun `docker-setup.sh` to regenerate the
extra compose file.
- The named volume persists until removed with `docker volume rm <name>`.
### Install extra apt packages (optional)
If you need system packages inside the image (for example, build tools or media
libraries), set `CLAWDBOT_DOCKER_APT_PACKAGES` before running `docker-setup.sh`.
libraries), set `OPENCLAW_DOCKER_APT_PACKAGES` before running `docker-setup.sh`.
This installs the packages during the image build, so they persist even if the
container is deleted.
Example:
```bash
export CLAWDBOT_DOCKER_APT_PACKAGES="ffmpeg build-essential"
export OPENCLAW_DOCKER_APT_PACKAGES="ffmpeg build-essential"
./docker-setup.sh
```
Notes:
- This accepts a space-separated list of apt package names.
- If you change `CLAWDBOT_DOCKER_APT_PACKAGES`, rerun `docker-setup.sh` to rebuild
- If you change `OPENCLAW_DOCKER_APT_PACKAGES`, rerun `docker-setup.sh` to rebuild
the image.
### Faster rebuilds (recommended)
@@ -172,17 +172,17 @@ Use the CLI container to configure channels, then restart the gateway if needed.
WhatsApp (QR):
```bash
docker compose run --rm moltbot-cli channels login
docker compose run --rm openclaw-cli channels login
```
Telegram (bot token):
```bash
docker compose run --rm moltbot-cli channels add --channel telegram --token "<token>"
docker compose run --rm openclaw-cli channels add --channel telegram --token "<token>"
```
Discord (bot token):
```bash
docker compose run --rm moltbot-cli channels add --channel discord --token "<token>"
docker compose run --rm openclaw-cli channels add --channel discord --token "<token>"
```
Docs: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](/channels/discord)
@@ -190,7 +190,7 @@ Docs: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](
### Health check
```bash
docker compose exec moltbot-gateway node dist/index.js health --token "$CLAWDBOT_GATEWAY_TOKEN"
docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"
```
### E2E smoke test (Docker)
@@ -208,7 +208,7 @@ pnpm test:docker:qr
### Notes
- Gateway bind defaults to `lan` for container use.
- The gateway container is the source of truth for sessions (`~/.clawdbot/agents/<agentId>/sessions/`).
- The gateway container is the source of truth for sessions (`~/.openclaw/agents/<agentId>/sessions/`).
## Agent Sandbox (host gateway + Docker tools)
@@ -242,9 +242,9 @@ precedence, and troubleshooting.
### Default behavior
- Image: `moltbot-sandbox:bookworm-slim`
- Image: `openclaw-sandbox:bookworm-slim`
- One container per agent
- Agent workspace access: `workspaceAccess: "none"` (default) uses `~/.clawdbot/sandboxes`
- Agent workspace access: `workspaceAccess: "none"` (default) uses `~/.openclaw/sandboxes`
- `"ro"` keeps the sandbox workspace at `/workspace` and mounts the agent workspace read-only at `/agent` (disables `write`/`edit`/`apply_patch`)
- `"rw"` mounts the agent workspace read/write at `/workspace`
- Auto-prune: idle > 24h OR age > 7d
@@ -258,9 +258,9 @@ If you plan to install packages in `setupCommand`, note:
- Default `docker.network` is `"none"` (no egress).
- `readOnlyRoot: true` blocks package installs.
- `user` must be root for `apt-get` (omit `user` or set `user: "0:0"`).
Moltbot auto-recreates containers when `setupCommand` (or docker config) changes
OpenClaw auto-recreates containers when `setupCommand` (or docker config) changes
unless the container was **recently used** (within ~5 minutes). Hot containers
log a warning with the exact `moltbot sandbox recreate ...` command.
log a warning with the exact `openclaw sandbox recreate ...` command.
```json5
{
@@ -270,9 +270,9 @@ log a warning with the exact `moltbot sandbox recreate ...` command.
mode: "non-main", // off | non-main | all
scope: "agent", // session | agent | shared (agent is default)
workspaceAccess: "none", // none | ro | rw
workspaceRoot: "~/.clawdbot/sandboxes",
workspaceRoot: "~/.openclaw/sandboxes",
docker: {
image: "moltbot-sandbox:bookworm-slim",
image: "openclaw-sandbox:bookworm-slim",
workdir: "/workspace",
readOnlyRoot: true,
tmpfs: ["/tmp", "/var/tmp", "/run"],
@@ -290,7 +290,7 @@ log a warning with the exact `moltbot sandbox recreate ...` command.
nproc: 256
},
seccompProfile: "/path/to/seccomp.json",
apparmorProfile: "moltbot-sandbox",
apparmorProfile: "openclaw-sandbox",
dns: ["1.1.1.1", "8.8.8.8"],
extraHosts: ["internal.service:10.0.0.5"]
},
@@ -325,7 +325,7 @@ Multi-agent: override `agents.defaults.sandbox.{docker,browser,prune}.*` per age
scripts/sandbox-setup.sh
```
This builds `moltbot-sandbox:bookworm-slim` using `Dockerfile.sandbox`.
This builds `openclaw-sandbox:bookworm-slim` using `Dockerfile.sandbox`.
### Sandbox common image (optional)
If you want a sandbox image with common build tooling (Node, Go, Rust, etc.), build the common image:
@@ -334,11 +334,11 @@ If you want a sandbox image with common build tooling (Node, Go, Rust, etc.), bu
scripts/sandbox-common-setup.sh
```
This builds `moltbot-sandbox-common:bookworm-slim`. To use it:
This builds `openclaw-sandbox-common:bookworm-slim`. To use it:
```json5
{
agents: { defaults: { sandbox: { docker: { image: "moltbot-sandbox-common:bookworm-slim" } } } }
agents: { defaults: { sandbox: { docker: { image: "openclaw-sandbox-common:bookworm-slim" } } } }
}
```
@@ -350,7 +350,7 @@ To run the browser tool inside the sandbox, build the browser image:
scripts/sandbox-browser-setup.sh
```
This builds `moltbot-sandbox-browser:bookworm-slim` using
This builds `openclaw-sandbox-browser:bookworm-slim` using
`Dockerfile.sandbox-browser`. The container runs Chromium with CDP enabled and
an optional noVNC observer (headful via Xvfb).
@@ -379,7 +379,7 @@ Custom browser image:
{
agents: {
defaults: {
sandbox: { browser: { image: "my-moltbot-browser" } }
sandbox: { browser: { image: "my-openclaw-browser" } }
}
}
}
@@ -398,14 +398,14 @@ Prune rules (`agents.defaults.sandbox.prune`) apply to browser containers too.
Build your own image and point config to it:
```bash
docker build -t my-moltbot-sbx -f Dockerfile.sandbox .
docker build -t my-openclaw-sbx -f Dockerfile.sandbox .
```
```json5
{
agents: {
defaults: {
sandbox: { docker: { image: "my-moltbot-sbx" } }
sandbox: { docker: { image: "my-openclaw-sbx" } }
}
}
}
@@ -437,11 +437,11 @@ Example:
## Troubleshooting
- Image missing: build with [`scripts/sandbox-setup.sh`](https://github.com/moltbot/moltbot/blob/main/scripts/sandbox-setup.sh) or set `agents.defaults.sandbox.docker.image`.
- Image missing: build with [`scripts/sandbox-setup.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/sandbox-setup.sh) or set `agents.defaults.sandbox.docker.image`.
- Container not running: it will auto-create per session on demand.
- Permission errors in sandbox: set `docker.user` to a UID:GID that matches your
mounted workspace ownership (or chown the workspace folder).
- Custom tools not found: Moltbot runs commands with `sh -lc` (login shell), which
- Custom tools not found: OpenClaw runs commands with `sh -lc` (login shell), which
sources `/etc/profile` and may reset PATH. Set `docker.env.PATH` to prepend your
custom tool paths (e.g., `/custom/bin:/usr/local/share/npm-global/bin`), or add
a script under `/etc/profile.d/` in your Dockerfile.

View File

@@ -1,7 +1,7 @@
---
summary: "Install Moltbot (recommended installer, global install, or from source)"
summary: "Install OpenClaw (recommended installer, global install, or from source)"
read_when:
- Installing Moltbot
- Installing OpenClaw
- You want to install from GitHub
---
@@ -12,19 +12,19 @@ Use the installer unless you have a reason not to. It sets up the CLI and runs o
## Quick install (recommended)
```bash
curl -fsSL https://molt.bot/install.sh | bash
curl -fsSL https://openclaw.bot/install.sh | bash
```
Windows (PowerShell):
```powershell
iwr -useb https://molt.bot/install.ps1 | iex
iwr -useb https://openclaw.ai/install.ps1 | iex
```
Next step (if you skipped onboarding):
```bash
moltbot onboard --install-daemon
openclaw onboard --install-daemon
```
## System requirements
@@ -37,16 +37,16 @@ moltbot onboard --install-daemon
### 1) Installer script (recommended)
Installs `moltbot` globally via npm and runs onboarding.
Installs `openclaw` globally via npm and runs onboarding.
```bash
curl -fsSL https://molt.bot/install.sh | bash
curl -fsSL https://openclaw.bot/install.sh | bash
```
Installer flags:
```bash
curl -fsSL https://molt.bot/install.sh | bash -s -- --help
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --help
```
Details: [Installer internals](/install/installer).
@@ -54,7 +54,7 @@ Details: [Installer internals](/install/installer).
Non-interactive (skip onboarding):
```bash
curl -fsSL https://molt.bot/install.sh | bash -s -- --no-onboard
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --no-onboard
```
### 2) Global install (manual)
@@ -62,13 +62,13 @@ curl -fsSL https://molt.bot/install.sh | bash -s -- --no-onboard
If you already have Node:
```bash
npm install -g moltbot@latest
npm install -g openclaw@latest
```
If you have libvips installed globally (common on macOS via Homebrew) and `sharp` fails to install, force prebuilt binaries:
```bash
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g moltbot@latest
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g openclaw@latest
```
If you see `sharp: Please add node-gyp to your dependencies`, either install build tooling (macOS: Xcode CLT + `npm install -g node-gyp`) or use the `SHARP_IGNORE_GLOBAL_LIBVIPS=1` workaround above to skip the native build.
@@ -76,27 +76,27 @@ If you see `sharp: Please add node-gyp to your dependencies`, either install bui
Or:
```bash
pnpm add -g moltbot@latest
pnpm add -g openclaw@latest
```
Then:
```bash
moltbot onboard --install-daemon
openclaw onboard --install-daemon
```
### 3) From source (contributors/dev)
```bash
git clone https://github.com/moltbot/moltbot.git
cd moltbot
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
moltbot onboard --install-daemon
openclaw onboard --install-daemon
```
Tip: if you dont have a global install yet, run repo commands via `pnpm moltbot ...`.
Tip: if you dont have a global install yet, run repo commands via `pnpm openclaw ...`.
### 4) Other install options
@@ -107,32 +107,32 @@ Tip: if you dont have a global install yet, run repo commands via `pnpm moltb
## After install
- Run onboarding: `moltbot onboard --install-daemon`
- Quick check: `moltbot doctor`
- Check gateway health: `moltbot status` + `moltbot health`
- Open the dashboard: `moltbot dashboard`
- Run onboarding: `openclaw onboard --install-daemon`
- Quick check: `openclaw doctor`
- Check gateway health: `openclaw status` + `openclaw health`
- Open the dashboard: `openclaw dashboard`
## Install method: npm vs git (installer)
The installer supports two methods:
- `npm` (default): `npm install -g moltbot@latest`
- `npm` (default): `npm install -g openclaw@latest`
- `git`: clone/build from GitHub and run from a source checkout
### CLI flags
```bash
# Explicit npm
curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method npm
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --install-method npm
# Install from GitHub (source checkout)
curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --install-method git
```
Common flags:
- `--install-method npm|git`
- `--git-dir <path>` (default: `~/moltbot`)
- `--git-dir <path>` (default: `~/openclaw`)
- `--no-git-update` (skip `git pull` when using an existing checkout)
- `--no-prompt` (disable prompts; required in CI/automation)
- `--dry-run` (print what would happen; make no changes)
@@ -142,15 +142,15 @@ Common flags:
Equivalent env vars (useful for automation):
- `CLAWDBOT_INSTALL_METHOD=git|npm`
- `CLAWDBOT_GIT_DIR=...`
- `CLAWDBOT_GIT_UPDATE=0|1`
- `CLAWDBOT_NO_PROMPT=1`
- `CLAWDBOT_DRY_RUN=1`
- `CLAWDBOT_NO_ONBOARD=1`
- `OPENCLAW_INSTALL_METHOD=git|npm`
- `OPENCLAW_GIT_DIR=...`
- `OPENCLAW_GIT_UPDATE=0|1`
- `OPENCLAW_NO_PROMPT=1`
- `OPENCLAW_DRY_RUN=1`
- `OPENCLAW_NO_ONBOARD=1`
- `SHARP_IGNORE_GLOBAL_LIBVIPS=0|1` (default: `1`; avoids `sharp` building against system libvips)
## Troubleshooting: `moltbot` not found (PATH)
## Troubleshooting: `openclaw` not found (PATH)
Quick diagnosis:
@@ -161,7 +161,7 @@ npm prefix -g
echo "$PATH"
```
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** present inside `echo "$PATH"`, your shell cant find global npm binaries (including `moltbot`).
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** present inside `echo "$PATH"`, your shell cant find global npm binaries (including `openclaw`).
Fix: add it to your shell startup file (zsh: `~/.zshrc`, bash: `~/.bashrc`):

View File

@@ -1,32 +1,32 @@
---
summary: "How the installer scripts work (install.sh + install-cli.sh), flags, and automation"
read_when:
- You want to understand `molt.bot/install.sh`
- You want to understand `openclaw.bot/install.sh`
- You want to automate installs (CI / headless)
- You want to install from a GitHub checkout
---
# Installer internals
Moltbot ships two installer scripts (served from `molt.bot`):
OpenClaw ships two installer scripts (served from `openclaw.ai`):
- `https://molt.bot/install.sh` — “recommended” installer (global npm install by default; can also install from a GitHub checkout)
- `https://molt.bot/install-cli.sh` — non-root-friendly CLI installer (installs into a prefix with its own Node)
- `https://molt.bot/install.ps1` — Windows PowerShell installer (npm by default; optional git install)
- `https://openclaw.bot/install.sh` — “recommended” installer (global npm install by default; can also install from a GitHub checkout)
- `https://openclaw.bot/install-cli.sh` — non-root-friendly CLI installer (installs into a prefix with its own Node)
- `https://openclaw.ai/install.ps1` — Windows PowerShell installer (npm by default; optional git install)
To see the current flags/behavior, run:
```bash
curl -fsSL https://molt.bot/install.sh | bash -s -- --help
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --help
```
Windows (PowerShell) help:
```powershell
& ([scriptblock]::Create((iwr -useb https://molt.bot/install.ps1))) -?
& ([scriptblock]::Create((iwr -useb https://openclaw.ai/install.ps1))) -?
```
If the installer completes but `moltbot` is not found in a new terminal, its usually a Node/npm PATH issue. See: [Install](/install#nodejs--npm-path-sanity).
If the installer completes but `openclaw` is not found in a new terminal, its usually a Node/npm PATH issue. See: [Install](/install#nodejs--npm-path-sanity).
## install.sh (recommended)
@@ -35,27 +35,27 @@ What it does (high level):
- Detect OS (macOS / Linux / WSL).
- Ensure Node.js **22+** (macOS via Homebrew; Linux via NodeSource).
- Choose install method:
- `npm` (default): `npm install -g moltbot@latest`
- `npm` (default): `npm install -g openclaw@latest`
- `git`: clone/build a source checkout and install a wrapper script
- On Linux: avoid global npm permission errors by switching npms prefix to `~/.npm-global` when needed.
- If upgrading an existing install: runs `moltbot doctor --non-interactive` (best effort).
- For git installs: runs `moltbot doctor --non-interactive` after install/update (best effort).
- If upgrading an existing install: runs `openclaw doctor --non-interactive` (best effort).
- For git installs: runs `openclaw doctor --non-interactive` after install/update (best effort).
- Mitigates `sharp` native install gotchas by defaulting `SHARP_IGNORE_GLOBAL_LIBVIPS=1` (avoids building against system libvips).
If you *want* `sharp` to link against a globally-installed libvips (or youre debugging), set:
```bash
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL https://molt.bot/install.sh | bash
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL https://openclaw.bot/install.sh | bash
```
### Discoverability / “git install” prompt
If you run the installer while **already inside a Moltbot source checkout** (detected via `package.json` + `pnpm-workspace.yaml`), it prompts:
If you run the installer while **already inside a OpenClaw source checkout** (detected via `package.json` + `pnpm-workspace.yaml`), it prompts:
- update and use this checkout (`git`)
- or migrate to the global npm install (`npm`)
In non-interactive contexts (no TTY / `--no-prompt`), you must pass `--install-method git|npm` (or set `CLAWDBOT_INSTALL_METHOD`), otherwise the script exits with code `2`.
In non-interactive contexts (no TTY / `--no-prompt`), you must pass `--install-method git|npm` (or set `OPENCLAW_INSTALL_METHOD`), otherwise the script exits with code `2`.
### Why Git is needed
@@ -73,12 +73,12 @@ On some Linux setups (especially after installing Node via the system package ma
## install-cli.sh (non-root CLI installer)
This script installs `moltbot` into a prefix (default: `~/.clawdbot`) and also installs a dedicated Node runtime under that prefix, so it can work on machines where you dont want to touch the system Node/npm.
This script installs `openclaw` into a prefix (default: `~/.openclaw`) and also installs a dedicated Node runtime under that prefix, so it can work on machines where you dont want to touch the system Node/npm.
Help:
```bash
curl -fsSL https://molt.bot/install-cli.sh | bash -s -- --help
curl -fsSL https://openclaw.bot/install-cli.sh | bash -s -- --help
```
## install.ps1 (Windows PowerShell)
@@ -87,28 +87,28 @@ What it does (high level):
- Ensure Node.js **22+** (winget/Chocolatey/Scoop or manual).
- Choose install method:
- `npm` (default): `npm install -g moltbot@latest`
- `npm` (default): `npm install -g openclaw@latest`
- `git`: clone/build a source checkout and install a wrapper script
- Runs `moltbot doctor --non-interactive` on upgrades and git installs (best effort).
- Runs `openclaw doctor --non-interactive` on upgrades and git installs (best effort).
Examples:
```powershell
iwr -useb https://molt.bot/install.ps1 | iex
iwr -useb https://openclaw.ai/install.ps1 | iex
```
```powershell
iwr -useb https://molt.bot/install.ps1 | iex -InstallMethod git
iwr -useb https://openclaw.ai/install.ps1 | iex -InstallMethod git
```
```powershell
iwr -useb https://molt.bot/install.ps1 | iex -InstallMethod git -GitDir "C:\\moltbot"
iwr -useb https://openclaw.ai/install.ps1 | iex -InstallMethod git -GitDir "C:\\openclaw"
```
Environment variables:
- `CLAWDBOT_INSTALL_METHOD=git|npm`
- `CLAWDBOT_GIT_DIR=...`
- `OPENCLAW_INSTALL_METHOD=git|npm`
- `OPENCLAW_GIT_DIR=...`
Git requirement:
@@ -118,5 +118,5 @@ Git for Windows link (`https://git-scm.com/download/win`) and exit.
Common Windows issues:
- **npm error spawn git / ENOENT**: install Git for Windows and reopen PowerShell, then rerun the installer.
- **"moltbot" is not recognized**: your npm global bin folder is not on PATH. Most systems use
- **"openclaw" is not recognized**: your npm global bin folder is not on PATH. Most systems use
`%AppData%\\npm`. You can also run `npm config get prefix` and add `\\bin` to PATH, then reopen PowerShell.

View File

@@ -1,17 +1,17 @@
---
summary: "Move (migrate) a Moltbot install from one machine to another"
summary: "Move (migrate) a OpenClaw install from one machine to another"
read_when:
- You are moving Moltbot to a new laptop/server
- You are moving OpenClaw to a new laptop/server
- You want to preserve sessions, auth, and channel logins (WhatsApp, etc.)
---
# Migrating Moltbot to a new machine
# Migrating OpenClaw to a new machine
This guide migrates a Moltbot Gateway from one machine to another **without redoing onboarding**.
This guide migrates a OpenClaw Gateway from one machine to another **without redoing onboarding**.
The migration is simple conceptually:
- Copy the **state directory** (`$CLAWDBOT_STATE_DIR`, default: `~/.clawdbot/`) — this includes config, auth, sessions, and channel state.
- Copy your **workspace** (`~/clawd/` by default) — this includes your agent files (memory, prompts, etc.).
- Copy the **state directory** (`$OPENCLAW_STATE_DIR`, default: `~/.openclaw/`) — this includes config, auth, sessions, and channel state.
- Copy your **workspace** (`~/.openclaw/workspace/` by default) — this includes your agent files (memory, prompts, etc.).
But there are common footguns around **profiles**, **permissions**, and **partial copies**.
@@ -21,26 +21,26 @@ But there are common footguns around **profiles**, **permissions**, and **partia
Most installs use the default:
- **State dir:** `~/.clawdbot/`
- **State dir:** `~/.openclaw/`
But it may be different if you use:
- `--profile <name>` (often becomes `~/.clawdbot-<profile>/`)
- `CLAWDBOT_STATE_DIR=/some/path`
- `--profile <name>` (often becomes `~/.openclaw-<profile>/`)
- `OPENCLAW_STATE_DIR=/some/path`
If youre not sure, run on the **old** machine:
```bash
moltbot status
openclaw status
```
Look for mentions of `CLAWDBOT_STATE_DIR` / profile in the output. If you run multiple gateways, repeat for each profile.
Look for mentions of `OPENCLAW_STATE_DIR` / profile in the output. If you run multiple gateways, repeat for each profile.
### 2) Identify your workspace
Common defaults:
- `~/clawd/` (recommended workspace)
- `~/.openclaw/workspace/` (recommended workspace)
- a custom folder you created
Your workspace is where files like `MEMORY.md`, `USER.md`, and `memory/*.md` live.
@@ -49,7 +49,7 @@ Your workspace is where files like `MEMORY.md`, `USER.md`, and `memory/*.md` liv
If you copy **both** the state dir and workspace, you keep:
- Gateway configuration (`moltbot.json`)
- Gateway configuration (`openclaw.json`)
- Auth profiles / API keys / OAuth tokens
- Session history + agent state
- Channel state (e.g. WhatsApp login/session)
@@ -61,7 +61,7 @@ If you copy **only** the workspace (e.g., via Git), you do **not** preserve:
- credentials
- channel logins
Those live under `$CLAWDBOT_STATE_DIR`.
Those live under `$OPENCLAW_STATE_DIR`.
## Migration steps (recommended)
@@ -70,7 +70,7 @@ Those live under `$CLAWDBOT_STATE_DIR`.
On the **old** machine, stop the gateway first so files arent changing mid-copy:
```bash
moltbot gateway stop
openclaw gateway stop
```
(Optional but recommended) archive the state dir and workspace:
@@ -78,27 +78,27 @@ moltbot gateway stop
```bash
# Adjust paths if you use a profile or custom locations
cd ~
tar -czf moltbot-state.tgz .clawdbot
tar -czf openclaw-state.tgz .openclaw
tar -czf clawd-workspace.tgz clawd
tar -czf openclaw-workspace.tgz .openclaw/workspace
```
If you have multiple profiles/state dirs (e.g. `~/.clawdbot-main`, `~/.clawdbot-work`), archive each.
If you have multiple profiles/state dirs (e.g. `~/.openclaw-main`, `~/.openclaw-work`), archive each.
### Step 1 — Install Moltbot on the new machine
### Step 1 — Install OpenClaw on the new machine
On the **new** machine, install the CLI (and Node if needed):
- See: [Install](/install)
At this stage, its OK if onboarding creates a fresh `~/.clawdbot/` — you will overwrite it in the next step.
At this stage, its OK if onboarding creates a fresh `~/.openclaw/` — you will overwrite it in the next step.
### Step 2 — Copy the state dir + workspace to the new machine
Copy **both**:
- `$CLAWDBOT_STATE_DIR` (default `~/.clawdbot/`)
- your workspace (default `~/clawd/`)
- `$OPENCLAW_STATE_DIR` (default `~/.openclaw/`)
- your workspace (default `~/.openclaw/workspace/`)
Common approaches:
@@ -108,7 +108,7 @@ Common approaches:
After copying, ensure:
- Hidden directories were included (e.g. `.clawdbot/`)
- Hidden directories were included (e.g. `.openclaw/`)
- File ownership is correct for the user running the gateway
### Step 3 — Run Doctor (migrations + service repair)
@@ -116,7 +116,7 @@ After copying, ensure:
On the **new** machine:
```bash
moltbot doctor
openclaw doctor
```
Doctor is the “safe boring” command. It repairs services, applies config migrations, and warns about mismatches.
@@ -124,15 +124,15 @@ Doctor is the “safe boring” command. It repairs services, applies config mig
Then:
```bash
moltbot gateway restart
moltbot status
openclaw gateway restart
openclaw status
```
## Common footguns (and how to avoid them)
### Footgun: profile / state-dir mismatch
If you ran the old gateway with a profile (or `CLAWDBOT_STATE_DIR`), and the new gateway uses a different one, youll see symptoms like:
If you ran the old gateway with a profile (or `OPENCLAW_STATE_DIR`), and the new gateway uses a different one, youll see symptoms like:
- config changes not taking effect
- channels missing / logged out
@@ -141,17 +141,17 @@ If you ran the old gateway with a profile (or `CLAWDBOT_STATE_DIR`), and the new
Fix: run the gateway/service using the **same** profile/state dir you migrated, then rerun:
```bash
moltbot doctor
openclaw doctor
```
### Footgun: copying only `moltbot.json`
### Footgun: copying only `openclaw.json`
`moltbot.json` is not enough. Many providers store state under:
`openclaw.json` is not enough. Many providers store state under:
- `$CLAWDBOT_STATE_DIR/credentials/`
- `$CLAWDBOT_STATE_DIR/agents/<agentId>/...`
- `$OPENCLAW_STATE_DIR/credentials/`
- `$OPENCLAW_STATE_DIR/agents/<agentId>/...`
Always migrate the entire `$CLAWDBOT_STATE_DIR` folder.
Always migrate the entire `$OPENCLAW_STATE_DIR` folder.
### Footgun: permissions / ownership
@@ -168,7 +168,7 @@ If youre in remote mode, migrate the **gateway host**.
### Footgun: secrets in backups
`$CLAWDBOT_STATE_DIR` contains secrets (API keys, OAuth tokens, WhatsApp creds). Treat backups like production secrets:
`$OPENCLAW_STATE_DIR` contains secrets (API keys, OAuth tokens, WhatsApp creds). Treat backups like production secrets:
- store encrypted
- avoid sharing over insecure channels
@@ -178,7 +178,7 @@ If youre in remote mode, migrate the **gateway host**.
On the new machine, confirm:
- `moltbot status` shows the gateway running
- `openclaw status` shows the gateway running
- Your channels are still connected (e.g. WhatsApp doesnt require re-pair)
- The dashboard opens and shows existing sessions
- Your workspace files (memory, configs) are present
@@ -187,4 +187,4 @@ On the new machine, confirm:
- [Doctor](/gateway/doctor)
- [Gateway troubleshooting](/gateway/troubleshooting)
- [Where does Moltbot store its data?](/help/faq#where-does-moltbot-store-its-data)
- [Where does OpenClaw store its data?](/help/faq#where-does-openclaw-store-its-data)

View File

@@ -1,5 +1,5 @@
---
summary: "Install Moltbot declaratively with Nix"
summary: "Install OpenClaw declaratively with Nix"
read_when:
- You want reproducible, rollback-able installs
- You're already using Nix/NixOS/Home Manager
@@ -8,30 +8,30 @@ read_when:
# Nix Installation
The recommended way to run Moltbot with Nix is via **[nix-moltbot](https://github.com/moltbot/nix-moltbot)** — a batteries-included Home Manager module.
The recommended way to run OpenClaw with Nix is via **[nix-openclaw](https://github.com/openclaw/nix-openclaw)** — a batteries-included Home Manager module.
## Quick Start
Paste this to your AI agent (Claude, Cursor, etc.):
```text
I want to set up nix-moltbot on my Mac.
Repository: github:moltbot/nix-moltbot
I want to set up nix-openclaw on my Mac.
Repository: github:openclaw/nix-openclaw
What I need you to do:
1. Check if Determinate Nix is installed (if not, install it)
2. Create a local flake at ~/code/moltbot-local using templates/agent-first/flake.nix
2. Create a local flake at ~/code/openclaw-local using templates/agent-first/flake.nix
3. Help me create a Telegram bot (@BotFather) and get my chat ID (@userinfobot)
4. Set up secrets (bot token, Anthropic key) - plain files at ~/.secrets/ is fine
5. Fill in the template placeholders and run home-manager switch
6. Verify: launchd running, bot responds to messages
Reference the nix-moltbot README for module options.
Reference the nix-openclaw README for module options.
```
> **📦 Full guide: [github.com/moltbot/nix-moltbot](https://github.com/moltbot/nix-moltbot)**
> **📦 Full guide: [github.com/openclaw/nix-openclaw](https://github.com/openclaw/nix-openclaw)**
>
> The nix-moltbot repo is the source of truth for Nix installation. This page is just a quick overview.
> The nix-openclaw repo is the source of truth for Nix installation. This page is just a quick overview.
## What you get
@@ -44,28 +44,28 @@ Reference the nix-moltbot README for module options.
## Nix Mode Runtime Behavior
When `CLAWDBOT_NIX_MODE=1` is set (automatic with nix-moltbot):
When `OPENCLAW_NIX_MODE=1` is set (automatic with nix-openclaw):
Moltbot supports a **Nix mode** that makes configuration deterministic and disables auto-install flows.
OpenClaw supports a **Nix mode** that makes configuration deterministic and disables auto-install flows.
Enable it by exporting:
```bash
CLAWDBOT_NIX_MODE=1
OPENCLAW_NIX_MODE=1
```
On macOS, the GUI app does not automatically inherit shell env vars. You can
also enable Nix mode via defaults:
```bash
defaults write bot.molt.mac moltbot.nixMode -bool true
defaults write bot.molt.mac openclaw.nixMode -bool true
```
### Config + state paths
Moltbot reads JSON5 config from `CLAWDBOT_CONFIG_PATH` and stores mutable data in `CLAWDBOT_STATE_DIR`.
OpenClaw reads JSON5 config from `OPENCLAW_CONFIG_PATH` and stores mutable data in `OPENCLAW_STATE_DIR`.
- `CLAWDBOT_STATE_DIR` (default: `~/.clawdbot`)
- `CLAWDBOT_CONFIG_PATH` (default: `$CLAWDBOT_STATE_DIR/moltbot.json`)
- `OPENCLAW_STATE_DIR` (default: `~/.openclaw`)
- `OPENCLAW_CONFIG_PATH` (default: `$OPENCLAW_STATE_DIR/openclaw.json`)
When running under Nix, set these explicitly to Nix-managed locations so runtime state and config
stay out of the immutable store.
@@ -81,15 +81,15 @@ stay out of the immutable store.
The macOS packaging flow expects a stable Info.plist template at:
```
apps/macos/Sources/Moltbot/Resources/Info.plist
apps/macos/Sources/OpenClaw/Resources/Info.plist
```
[`scripts/package-mac-app.sh`](https://github.com/moltbot/moltbot/blob/main/scripts/package-mac-app.sh) copies this template into the app bundle and patches dynamic fields
[`scripts/package-mac-app.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-app.sh) copies this template into the app bundle and patches dynamic fields
(bundle ID, version/build, Git SHA, Sparkle keys). This keeps the plist deterministic for SwiftPM
packaging and Nix builds (which do not rely on a full Xcode toolchain).
## Related
- [nix-moltbot](https://github.com/moltbot/nix-moltbot) — full setup guide
- [nix-openclaw](https://github.com/openclaw/nix-openclaw) — full setup guide
- [Wizard](/start/wizard) — non-Nix CLI setup
- [Docker](/install/docker) — containerized setup

View File

@@ -2,16 +2,16 @@
title: "Node.js + npm (PATH sanity)"
summary: "Node.js + npm install sanity: versions, PATH, and global installs"
read_when:
- "You installed Moltbot but `moltbot` is “command not found”"
- "You installed OpenClaw but `openclaw` is “command not found”"
- "Youre setting up Node.js/npm on a new machine"
- "npm install -g ... fails with permissions or PATH issues"
---
# Node.js + npm (PATH sanity)
Moltbots runtime baseline is **Node 22+**.
OpenClaws runtime baseline is **Node 22+**.
If you can run `npm install -g moltbot@latest` but later see `moltbot: command not found`, its almost always a **PATH** issue: the directory where npm puts global binaries isnt on your shells PATH.
If you can run `npm install -g openclaw@latest` but later see `openclaw: command not found`, its almost always a **PATH** issue: the directory where npm puts global binaries isnt on your shells PATH.
## Quick diagnosis
@@ -24,7 +24,7 @@ npm prefix -g
echo "$PATH"
```
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** present inside `echo "$PATH"`, your shell cant find global npm binaries (including `moltbot`).
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** present inside `echo "$PATH"`, your shell cant find global npm binaries (including `openclaw`).
## Fix: put npms global bin dir on PATH

View File

@@ -1,14 +1,14 @@
---
summary: "Uninstall Moltbot completely (CLI, service, state, workspace)"
summary: "Uninstall OpenClaw completely (CLI, service, state, workspace)"
read_when:
- You want to remove Moltbot from a machine
- You want to remove OpenClaw from a machine
- The gateway service is still running after uninstall
---
# Uninstall
Two paths:
- **Easy path** if `moltbot` is still installed.
- **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)
@@ -16,14 +16,14 @@ Two paths:
Recommended: use the built-in uninstaller:
```bash
moltbot uninstall
openclaw uninstall
```
Non-interactive (automation / npx):
```bash
moltbot uninstall --all --yes --non-interactive
npx -y moltbot uninstall --all --yes --non-interactive
openclaw uninstall --all --yes --non-interactive
npx -y openclaw uninstall --all --yes --non-interactive
```
Manual steps (same result):
@@ -31,94 +31,94 @@ Manual steps (same result):
1) Stop the gateway service:
```bash
moltbot gateway stop
openclaw gateway stop
```
2) Uninstall the gateway service (launchd/systemd/schtasks):
```bash
moltbot gateway uninstall
openclaw gateway uninstall
```
3) Delete state + config:
```bash
rm -rf "${CLAWDBOT_STATE_DIR:-$HOME/.clawdbot}"
rm -rf "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}"
```
If you set `CLAWDBOT_CONFIG_PATH` to a custom location outside the state dir, delete that file too.
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 ~/clawd
rm -rf ~/.openclaw/workspace
```
5) Remove the CLI install (pick the one you used):
```bash
npm rm -g moltbot
pnpm remove -g moltbot
bun remove -g moltbot
npm rm -g openclaw
pnpm remove -g openclaw
bun remove -g openclaw
```
6) If you installed the macOS app:
```bash
rm -rf /Applications/Moltbot.app
rm -rf /Applications/OpenClaw.app
```
Notes:
- If you used profiles (`--profile` / `CLAWDBOT_PROFILE`), repeat step 3 for each state dir (defaults are `~/.clawdbot-<profile>`).
- If you used profiles (`--profile` / `OPENCLAW_PROFILE`), repeat step 3 for each state dir (defaults are `~/.openclaw-<profile>`).
- 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 `moltbot` is missing.
Use this if the gateway service keeps running but `openclaw` is missing.
### macOS (launchd)
Default label is `bot.molt.gateway` (or `bot.molt.<profile>`; legacy `com.clawdbot.*` may still exist):
Default label is `bot.molt.gateway` (or `bot.molt.<profile>`; 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.<profile>`. Remove any legacy `com.clawdbot.*` plists if present.
If you used a profile, replace the label and plist name with `bot.molt.<profile>`. Remove any legacy `com.openclaw.*` plists if present.
### Linux (systemd user unit)
Default unit name is `moltbot-gateway.service` (or `moltbot-gateway-<profile>.service`):
Default unit name is `openclaw-gateway.service` (or `openclaw-gateway-<profile>.service`):
```bash
systemctl --user disable --now moltbot-gateway.service
rm -f ~/.config/systemd/user/moltbot-gateway.service
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 `Moltbot Gateway` (or `Moltbot Gateway (<profile>)`).
Default task name is `OpenClaw Gateway` (or `OpenClaw Gateway (<profile>)`).
The task script lives under your state dir.
```powershell
schtasks /Delete /F /TN "Moltbot Gateway"
Remove-Item -Force "$env:USERPROFILE\.clawdbot\gateway.cmd"
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 `~\.clawdbot-<profile>\gateway.cmd`.
If you used a profile, delete the matching task name and `~\.openclaw-<profile>\gateway.cmd`.
## Normal install vs source checkout
### Normal install (install.sh / npm / pnpm / bun)
If you used `https://molt.bot/install.sh` or `install.ps1`, the CLI was installed with `npm install -g moltbot@latest`.
Remove it with `npm rm -g moltbot` (or `pnpm remove -g` / `bun remove -g` if you installed that way).
If you used `https://openclaw.bot/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` + `moltbot ...` / `bun run moltbot ...`):
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.

View File

@@ -1,62 +1,62 @@
---
summary: "Updating Moltbot safely (global install or source), plus rollback strategy"
summary: "Updating OpenClaw safely (global install or source), plus rollback strategy"
read_when:
- Updating Moltbot
- Updating OpenClaw
- Something breaks after an update
---
# Updating
Moltbot is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart (or use `moltbot update`, which restarts) → verify.
OpenClaw is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart (or use `openclaw update`, which restarts) → verify.
## Recommended: re-run the website installer (upgrade in place)
The **preferred** update path is to re-run the installer from the website. It
detects existing installs, upgrades in place, and runs `moltbot doctor` when
detects existing installs, upgrades in place, and runs `openclaw doctor` when
needed.
```bash
curl -fsSL https://molt.bot/install.sh | bash
curl -fsSL https://openclaw.bot/install.sh | bash
```
Notes:
- Add `--no-onboard` if you dont want the onboarding wizard to run again.
- For **source installs**, use:
```bash
curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git --no-onboard
curl -fsSL https://openclaw.bot/install.sh | bash -s -- --install-method git --no-onboard
```
The installer will `git pull --rebase` **only** if the repo is clean.
- For **global installs**, the script uses `npm install -g moltbot@latest` under the hood.
- Legacy note: `moltbot` remains available as a compatibility shim.
- For **global installs**, the script uses `npm install -g openclaw@latest` under the hood.
- Legacy note: `openclaw` remains available as a compatibility shim.
## Before you update
- Know how you installed: **global** (npm/pnpm) vs **from source** (git clone).
- Know how your Gateway is running: **foreground terminal** vs **supervised service** (launchd/systemd).
- Snapshot your tailoring:
- Config: `~/.clawdbot/moltbot.json`
- Credentials: `~/.clawdbot/credentials/`
- Workspace: `~/clawd`
- Config: `~/.openclaw/openclaw.json`
- Credentials: `~/.openclaw/credentials/`
- Workspace: `~/.openclaw/workspace`
## Update (global install)
Global install (pick one):
```bash
npm i -g moltbot@latest
npm i -g openclaw@latest
```
```bash
pnpm add -g moltbot@latest
pnpm add -g openclaw@latest
```
We do **not** recommend Bun for the Gateway runtime (WhatsApp/Telegram bugs).
To switch update channels (git + npm installs):
```bash
moltbot update --channel beta
moltbot update --channel dev
moltbot update --channel stable
openclaw update --channel beta
openclaw update --channel dev
openclaw update --channel stable
```
Use `--tag <dist-tag|version>` for a one-off install tag/version.
@@ -68,36 +68,36 @@ Note: on npm installs, the gateway logs an update hint on startup (checks the cu
Then:
```bash
moltbot doctor
moltbot gateway restart
moltbot health
openclaw doctor
openclaw gateway restart
openclaw health
```
Notes:
- If your Gateway runs as a service, `moltbot gateway restart` is preferred over killing PIDs.
- If your Gateway runs as a service, `openclaw gateway restart` is preferred over killing PIDs.
- If youre pinned to a specific version, see “Rollback / pinning” below.
## Update (`moltbot update`)
## Update (`openclaw update`)
For **source installs** (git checkout), prefer:
```bash
moltbot update
openclaw update
```
It runs a safe-ish update flow:
- Requires a clean worktree.
- Switches to the selected channel (tag or branch).
- Fetches + rebases against the configured upstream (dev channel).
- Installs deps, builds, builds the Control UI, and runs `moltbot doctor`.
- Installs deps, builds, builds the Control UI, and runs `openclaw doctor`.
- Restarts the gateway by default (use `--no-restart` to skip).
If you installed via **npm/pnpm** (no git metadata), `moltbot update` will try to update via your package manager. If it cant detect the install, use “Update (global install)” instead.
If you installed via **npm/pnpm** (no git metadata), `openclaw update` will try to update via your package manager. If it cant detect the install, use “Update (global install)” instead.
## Update (Control UI / RPC)
The Control UI has **Update & Restart** (RPC: `update.run`). It:
1) Runs the same source-update flow as `moltbot update` (git checkout only).
1) Runs the same source-update flow as `openclaw update` (git checkout only).
2) Writes a restart sentinel with a structured report (stdout/stderr tail).
3) Restarts the gateway and pings the last active session with the report.
@@ -110,7 +110,7 @@ From the repo checkout:
Preferred:
```bash
moltbot update
openclaw update
```
Manual (equivalent-ish):
@@ -120,27 +120,27 @@ git pull
pnpm install
pnpm build
pnpm ui:build # auto-installs UI deps on first run
moltbot doctor
moltbot health
openclaw doctor
openclaw health
```
Notes:
- `pnpm build` matters when you run the packaged `moltbot` binary ([`moltbot.mjs`](https://github.com/moltbot/moltbot/blob/main/moltbot.mjs)) or use Node to run `dist/`.
- If you run from a repo checkout without a global install, use `pnpm moltbot ...` for CLI commands.
- If you run directly from TypeScript (`pnpm moltbot ...`), a rebuild is usually unnecessary, but **config migrations still apply** → run doctor.
- Switching between global and git installs is easy: install the other flavor, then run `moltbot doctor` so the gateway service entrypoint is rewritten to the current install.
- `pnpm build` matters when you run the packaged `openclaw` binary ([`openclaw.mjs`](https://github.com/openclaw/openclaw/blob/main/openclaw.mjs)) or use Node to run `dist/`.
- If you run from a repo checkout without a global install, use `pnpm openclaw ...` for CLI commands.
- If you run directly from TypeScript (`pnpm openclaw ...`), a rebuild is usually unnecessary, but **config migrations still apply** → run doctor.
- Switching between global and git installs is easy: install the other flavor, then run `openclaw doctor` so the gateway service entrypoint is rewritten to the current install.
## Always Run: `moltbot doctor`
## Always Run: `openclaw doctor`
Doctor is the “safe update” command. Its intentionally boring: repair + migrate + warn.
Note: if youre on a **source install** (git checkout), `moltbot doctor` will offer to run `moltbot update` first.
Note: if youre on a **source install** (git checkout), `openclaw doctor` will offer to run `openclaw update` first.
Typical things it does:
- Migrate deprecated config keys / legacy config file locations.
- Audit DM policies and warn on risky “open” settings.
- Check Gateway health and can offer to restart.
- Detect and migrate older gateway services (launchd/systemd; legacy schtasks) to current Moltbot services.
- Detect and migrate older gateway services (launchd/systemd; legacy schtasks) to current OpenClaw services.
- On Linux, ensure systemd user lingering (so the Gateway survives logout).
Details: [Doctor](/gateway/doctor)
@@ -150,18 +150,18 @@ Details: [Doctor](/gateway/doctor)
CLI (works regardless of OS):
```bash
moltbot gateway status
moltbot gateway stop
moltbot gateway restart
moltbot gateway --port 18789
moltbot logs --follow
openclaw gateway status
openclaw gateway stop
openclaw gateway restart
openclaw gateway --port 18789
openclaw logs --follow
```
If youre supervised:
- macOS launchd (app-bundled LaunchAgent): `launchctl kickstart -k gui/$UID/bot.molt.gateway` (use `bot.molt.<profile>`; legacy `com.clawdbot.*` still works)
- Linux systemd user service: `systemctl --user restart moltbot-gateway[-<profile>].service`
- Windows (WSL2): `systemctl --user restart moltbot-gateway[-<profile>].service`
- `launchctl`/`systemctl` only work if the service is installed; otherwise run `moltbot gateway install`.
- macOS launchd (app-bundled LaunchAgent): `launchctl kickstart -k gui/$UID/bot.molt.gateway` (use `bot.molt.<profile>`; legacy `com.openclaw.*` still works)
- Linux systemd user service: `systemctl --user restart openclaw-gateway[-<profile>].service`
- Windows (WSL2): `systemctl --user restart openclaw-gateway[-<profile>].service`
- `launchctl`/`systemctl` only work if the service is installed; otherwise run `openclaw gateway install`.
Runbook + exact service labels: [Gateway runbook](/gateway)
@@ -172,20 +172,20 @@ Runbook + exact service labels: [Gateway runbook](/gateway)
Install a known-good version (replace `<version>` with the last working one):
```bash
npm i -g moltbot@<version>
npm i -g openclaw@<version>
```
```bash
pnpm add -g moltbot@<version>
pnpm add -g openclaw@<version>
```
Tip: to see the current published version, run `npm view moltbot version`.
Tip: to see the current published version, run `npm view openclaw version`.
Then restart + re-run doctor:
```bash
moltbot doctor
moltbot gateway restart
openclaw doctor
openclaw gateway restart
```
### Pin (source) by date
@@ -202,7 +202,7 @@ Then reinstall deps + restart:
```bash
pnpm install
pnpm build
moltbot gateway restart
openclaw gateway restart
```
If you want to go back to latest later:
@@ -214,6 +214,6 @@ git pull
## If youre stuck
- Run `moltbot doctor` again and read the output carefully (it often tells you the fix).
- Run `openclaw doctor` again and read the output carefully (it often tells you the fix).
- Check: [Troubleshooting](/gateway/troubleshooting)
- Ask in Discord: https://channels.discord.gg/clawd