refactor: rename to openclaw
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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**: you’re 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. Don’t 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.
|
||||
|
||||
@@ -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 don’t have a global install yet, run repo commands via `pnpm moltbot ...`.
|
||||
Tip: if you don’t have a global install yet, run repo commands via `pnpm openclaw ...`.
|
||||
|
||||
### 4) Other install options
|
||||
|
||||
@@ -107,32 +107,32 @@ Tip: if you don’t 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 can’t 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 can’t find global npm binaries (including `openclaw`).
|
||||
|
||||
Fix: add it to your shell startup file (zsh: `~/.zshrc`, bash: `~/.bashrc`):
|
||||
|
||||
|
||||
@@ -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, it’s 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, it’s 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 npm’s 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 you’re 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 don’t 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 don’t 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.
|
||||
|
||||
@@ -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 you’re 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 aren’t 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, it’s OK if onboarding creates a fresh `~/.clawdbot/` — you will overwrite it in the next step.
|
||||
At this stage, it’s 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, you’ll see symptoms like:
|
||||
If you ran the old gateway with a profile (or `OPENCLAW_STATE_DIR`), and the new gateway uses a different one, you’ll 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 you’re 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 you’re 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 doesn’t 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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”"
|
||||
- "You’re setting up Node.js/npm on a new machine"
|
||||
- "npm install -g ... fails with permissions or PATH issues"
|
||||
---
|
||||
|
||||
# Node.js + npm (PATH sanity)
|
||||
|
||||
Moltbot’s runtime baseline is **Node 22+**.
|
||||
OpenClaw’s runtime baseline is **Node 22+**.
|
||||
|
||||
If you can run `npm install -g moltbot@latest` but later see `moltbot: command not found`, it’s almost always a **PATH** issue: the directory where npm puts global binaries isn’t on your shell’s PATH.
|
||||
If you can run `npm install -g openclaw@latest` but later see `openclaw: command not found`, it’s almost always a **PATH** issue: the directory where npm puts global binaries isn’t on your shell’s 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 can’t 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 can’t find global npm binaries (including `openclaw`).
|
||||
|
||||
## Fix: put npm’s global bin dir on PATH
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 don’t 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 you’re 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 can’t 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 can’t 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. It’s intentionally boring: repair + migrate + warn.
|
||||
|
||||
Note: if you’re on a **source install** (git checkout), `moltbot doctor` will offer to run `moltbot update` first.
|
||||
Note: if you’re 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 you’re 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 you’re 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
|
||||
|
||||
Reference in New Issue
Block a user