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

@@ -6,7 +6,7 @@ read_when:
# Audio / Voice Notes — 2026-01-17
## What works
- **Media understanding (audio)**: If audio understanding is enabled (or autodetected), Moltbot:
- **Media understanding (audio)**: If audio understanding is enabled (or autodetected), OpenClaw:
1) Locates the first audio attachment (local path or URL) and downloads it if needed.
2) Enforces `maxBytes` before sending to each model entry.
3) Runs the first eligible model entry in order (provider or CLI).
@@ -17,7 +17,7 @@ read_when:
## Auto-detection (default)
If you **dont configure models** and `tools.media.audio.enabled` is **not** set to `false`,
Moltbot auto-detects in this order and stops at the first working option:
OpenClaw auto-detects in this order and stops at the first working option:
1) **Local CLIs** (if installed)
- `sherpa-onnx-offline` (requires `SHERPA_ONNX_MODEL_DIR` with encoder/decoder/joiner/tokens)

View File

@@ -7,7 +7,7 @@ read_when:
# Camera capture (agent)
Moltbot supports **camera capture** for agent workflows:
OpenClaw supports **camera capture** for agent workflows:
- **iOS node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
- **Android node** (paired via Gateway): capture a **photo** (`jpg`) or **short video clip** (`mp4`, with optional audio) via `node.invoke`.
@@ -67,10 +67,10 @@ The easiest way to get attachments is via the CLI helper, which writes decoded m
Examples:
```bash
moltbot nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
moltbot nodes camera snap --node <id> --facing front
moltbot nodes camera clip --node <id> --duration 3000
moltbot nodes camera clip --node <id> --no-audio
openclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
```
Notes:
@@ -108,30 +108,30 @@ Photos are recompressed to keep the base64 payload under 5 MB.
The macOS companion app exposes a checkbox:
- **Settings → General → Allow Camera** (`moltbot.cameraEnabled`)
- **Settings → General → Allow Camera** (`openclaw.cameraEnabled`)
- Default: **off**
- When off: camera requests return “Camera disabled by user”.
### CLI helper (node invoke)
Use the main `moltbot` CLI to invoke camera commands on the macOS node.
Use the main `openclaw` CLI to invoke camera commands on the macOS node.
Examples:
```bash
moltbot nodes camera list --node <id> # list camera ids
moltbot nodes camera snap --node <id> # prints MEDIA:<path>
moltbot nodes camera snap --node <id> --max-width 1280
moltbot nodes camera snap --node <id> --delay-ms 2000
moltbot nodes camera snap --node <id> --device-id <id>
moltbot nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
moltbot nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
moltbot nodes camera clip --node <id> --device-id <id>
moltbot nodes camera clip --node <id> --no-audio
openclaw nodes camera list --node <id> # list camera ids
openclaw nodes camera snap --node <id> # prints MEDIA:<path>
openclaw nodes camera snap --node <id> --max-width 1280
openclaw nodes camera snap --node <id> --delay-ms 2000
openclaw nodes camera snap --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
openclaw nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
openclaw nodes camera clip --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --no-audio
```
Notes:
- `moltbot nodes camera snap` defaults to `maxWidth=1600` unless overridden.
- `openclaw nodes camera snap` defaults to `maxWidth=1600` unless overridden.
- On macOS, `camera.snap` waits `delayMs` (default 2000ms) after warm-up/exposure settle before capturing.
- Photo payloads are recompressed to keep base64 under 5 MB.
@@ -145,7 +145,7 @@ Notes:
For *screen* video (not camera), use the macOS companion:
```bash
moltbot nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
```
Notes:

View File

@@ -8,12 +8,12 @@ read_when:
The WhatsApp channel runs via **Baileys Web**. This document captures the current media handling rules for send, gateway, and agent replies.
## Goals
- Send media with optional captions via `moltbot message send --media`.
- Send media with optional captions via `openclaw message send --media`.
- Allow auto-replies from the web inbox to include media alongside text.
- Keep per-type limits sane and predictable.
## CLI Surface
- `moltbot message send --media <path-or-url> [--message <caption>]`
- `openclaw message send --media <path-or-url> [--message <caption>]`
- `--media` optional; caption can be empty for media-only sends.
- `--dry-run` prints the resolved payload; `--json` emits `{ channel, to, messageId, mediaUrl, caption }`.
@@ -30,11 +30,11 @@ The WhatsApp channel runs via **Baileys Web**. This document captures the curren
## Auto-Reply Pipeline
- `getReplyFromConfig` returns `{ text?, mediaUrl?, mediaUrls? }`.
- When media is present, the web sender resolves local paths or URLs using the same pipeline as `moltbot message send`.
- When media is present, the web sender resolves local paths or URLs using the same pipeline as `openclaw message send`.
- Multiple media entries are sent sequentially if provided.
## Inbound Media to Commands (Pi)
- When inbound web messages include media, Moltbot downloads to a temp file and exposes templating variables:
- When inbound web messages include media, OpenClaw downloads to a temp file and exposes templating variables:
- `{{MediaUrl}}` pseudo-URL for the inbound media.
- `{{MediaPath}}` local temp path written before running the command.
- When a per-session Docker sandbox is enabled, inbound media is copied into the sandbox workspace and `MediaPath`/`MediaUrl` are rewritten to a relative path like `media/inbound/<filename>`.

View File

@@ -12,7 +12,7 @@ A **node** is a companion device (macOS/iOS/Android/headless) that connects to t
Legacy transport: [Bridge protocol](/gateway/bridge-protocol) (TCP JSONL; deprecated/removed for current nodes).
macOS can also run in **node mode**: the menubar app connects to the Gateways WS server and exposes its local canvas/camera commands as a node (so `moltbot nodes …` works against this Mac).
macOS can also run in **node mode**: the menubar app connects to the Gateways WS server and exposes its local canvas/camera commands as a node (so `openclaw nodes …` works against this Mac).
Notes:
- Nodes are **peripherals**, not gateways. They dont run the gateway service.
@@ -26,16 +26,16 @@ creates a device pairing request for `role: node`. Approve via the devices CLI (
Quick CLI:
```bash
moltbot devices list
moltbot devices approve <requestId>
moltbot devices reject <requestId>
moltbot nodes status
moltbot nodes describe --node <idOrNameOrIp>
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>
```
Notes:
- `nodes status` marks a node as **paired** when its device pairing role includes `node`.
- `node.pair.*` (CLI: `moltbot nodes pending/approve/reject`) is a separate gateway-owned
- `node.pair.*` (CLI: `openclaw nodes pending/approve/reject`) is a separate gateway-owned
node pairing store; it does **not** gate the WS `connect` handshake.
## Remote node host (system.run)
@@ -47,21 +47,21 @@ forwards `exec` calls to the **node host** when `host=node` is selected.
### What runs where
- **Gateway host**: receives messages, runs the model, routes tool calls.
- **Node host**: executes `system.run`/`system.which` on the node machine.
- **Approvals**: enforced on the node host via `~/.clawdbot/exec-approvals.json`.
- **Approvals**: enforced on the node host via `~/.openclaw/exec-approvals.json`.
### Start a node host (foreground)
On the node machine:
```bash
moltbot node run --host <gateway-host> --port 18789 --display-name "Build Node"
openclaw node run --host <gateway-host> --port 18789 --display-name "Build Node"
```
### Start a node host (service)
```bash
moltbot node install --host <gateway-host> --port 18789 --display-name "Build Node"
moltbot node restart
openclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"
openclaw node restart
```
### Pair + name
@@ -69,34 +69,34 @@ moltbot node restart
On the gateway host:
```bash
moltbot nodes pending
moltbot nodes approve <requestId>
moltbot nodes list
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes list
```
Naming options:
- `--display-name` on `moltbot node run` / `moltbot node install` (persists in `~/.clawdbot/node.json` on the node).
- `moltbot nodes rename --node <id|name|ip> --name "Build Node"` (gateway override).
- `--display-name` on `openclaw node run` / `openclaw node install` (persists in `~/.openclaw/node.json` on the node).
- `openclaw nodes rename --node <id|name|ip> --name "Build Node"` (gateway override).
### Allowlist the commands
Exec approvals are **per node host**. Add allowlist entries from the gateway:
```bash
moltbot approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
moltbot approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
```
Approvals live on the node host at `~/.clawdbot/exec-approvals.json`.
Approvals live on the node host at `~/.openclaw/exec-approvals.json`.
### Point exec at the node
Configure defaults (gateway config):
```bash
moltbot config set tools.exec.host node
moltbot config set tools.exec.security allowlist
moltbot config set tools.exec.node "<id-or-name>"
openclaw config set tools.exec.host node
openclaw config set tools.exec.security allowlist
openclaw config set tools.exec.node "<id-or-name>"
```
Or per session:
@@ -118,7 +118,7 @@ Related:
Low-level (raw RPC):
```bash
moltbot nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
openclaw nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
```
Higher-level helpers exist for the common “give the agent a MEDIA attachment” workflows.
@@ -130,17 +130,17 @@ If the node is showing the Canvas (WebView), `canvas.snapshot` returns `{ format
CLI helper (writes to a temp file and prints `MEDIA:<path>`):
```bash
moltbot nodes canvas snapshot --node <idOrNameOrIp> --format png
moltbot nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format png
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
```
### Canvas controls
```bash
moltbot nodes canvas present --node <idOrNameOrIp> --target https://example.com
moltbot nodes canvas hide --node <idOrNameOrIp>
moltbot nodes canvas navigate https://example.com --node <idOrNameOrIp>
moltbot nodes canvas eval --node <idOrNameOrIp> --js "document.title"
openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
openclaw nodes canvas hide --node <idOrNameOrIp>
openclaw nodes canvas navigate https://example.com --node <idOrNameOrIp>
openclaw nodes canvas eval --node <idOrNameOrIp> --js "document.title"
```
Notes:
@@ -150,9 +150,9 @@ Notes:
### A2UI (Canvas)
```bash
moltbot nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
moltbot nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
moltbot nodes canvas a2ui reset --node <idOrNameOrIp>
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
openclaw nodes canvas a2ui reset --node <idOrNameOrIp>
```
Notes:
@@ -163,16 +163,16 @@ Notes:
Photos (`jpg`):
```bash
moltbot nodes camera list --node <idOrNameOrIp>
moltbot nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
moltbot nodes camera snap --node <idOrNameOrIp> --facing front
openclaw nodes camera list --node <idOrNameOrIp>
openclaw nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
openclaw nodes camera snap --node <idOrNameOrIp> --facing front
```
Video clips (`mp4`):
```bash
moltbot nodes camera clip --node <idOrNameOrIp> --duration 10s
moltbot nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
openclaw nodes camera clip --node <idOrNameOrIp> --duration 10s
openclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
```
Notes:
@@ -185,8 +185,8 @@ Notes:
Nodes expose `screen.record` (mp4). Example:
```bash
moltbot nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
moltbot nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
```
Notes:
@@ -203,8 +203,8 @@ Nodes expose `location.get` when Location is enabled in settings.
CLI helper:
```bash
moltbot nodes location get --node <idOrNameOrIp>
moltbot nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
openclaw nodes location get --node <idOrNameOrIp>
openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
```
Notes:
@@ -219,7 +219,7 @@ Android nodes can expose `sms.send` when the user grants **SMS** permission and
Low-level invoke:
```bash
moltbot nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from Moltbot"}'
openclaw nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}'
```
Notes:
@@ -234,8 +234,8 @@ The headless node host exposes `system.run`, `system.which`, and `system.execApp
Examples:
```bash
moltbot nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
moltbot nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
openclaw nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
openclaw nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
```
Notes:
@@ -246,7 +246,7 @@ Notes:
- macOS nodes drop `PATH` overrides; headless node hosts only accept `PATH` when it prepends the node host PATH.
- On macOS node mode, `system.run` is gated by exec approvals in the macOS app (Settings → Exec approvals).
Ask/allowlist/full behave the same as the headless node host; denied prompts return `SYSTEM_RUN_DENIED`.
- On headless node host, `system.run` is gated by exec approvals (`~/.clawdbot/exec-approvals.json`).
- On headless node host, `system.run` is gated by exec approvals (`~/.openclaw/exec-approvals.json`).
## Exec node binding
@@ -256,21 +256,21 @@ This sets the default node for `exec host=node` (and can be overridden per agent
Global default:
```bash
moltbot config set tools.exec.node "node-id-or-name"
openclaw config set tools.exec.node "node-id-or-name"
```
Per-agent override:
```bash
moltbot config get agents.list
moltbot config set agents.list[0].tools.exec.node "node-id-or-name"
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
```
Unset to allow any node:
```bash
moltbot config unset tools.exec.node
moltbot config unset agents.list[0].tools.exec.node
openclaw config unset tools.exec.node
openclaw config unset agents.list[0].tools.exec.node
```
## Permissions map
@@ -279,27 +279,27 @@ Nodes may include a `permissions` map in `node.list` / `node.describe`, keyed by
## Headless node host (cross-platform)
Moltbot can run a **headless node host** (no UI) that connects to the Gateway
OpenClaw can run a **headless node host** (no UI) that connects to the Gateway
WebSocket and exposes `system.run` / `system.which`. This is useful on Linux/Windows
or for running a minimal node alongside a server.
Start it:
```bash
moltbot node run --host <gateway-host> --port 18789
openclaw node run --host <gateway-host> --port 18789
```
Notes:
- Pairing is still required (the Gateway will show a node approval prompt).
- The node host stores its node id, token, display name, and gateway connection info in `~/.clawdbot/node.json`.
- Exec approvals are enforced locally via `~/.clawdbot/exec-approvals.json`
- The node host stores its node id, token, display name, and gateway connection info in `~/.openclaw/node.json`.
- Exec approvals are enforced locally via `~/.openclaw/exec-approvals.json`
(see [Exec approvals](/tools/exec-approvals)).
- On macOS, the headless node host prefers the companion app exec host when reachable and falls
back to local execution if the app is unavailable. Set `CLAWDBOT_NODE_EXEC_HOST=app` to require
the app, or `CLAWDBOT_NODE_EXEC_FALLBACK=0` to disable fallback.
back to local execution if the app is unavailable. Set `OPENCLAW_NODE_EXEC_HOST=app` to require
the app, or `OPENCLAW_NODE_EXEC_FALLBACK=0` to disable fallback.
- Add `--tls` / `--tls-fingerprint` when the Gateway WS uses TLS.
## Mac node mode
- The macOS menubar app connects to the Gateway WS server as a node (so `moltbot nodes …` works against this Mac).
- The macOS menubar app connects to the Gateway WS server as a node (so `openclaw nodes …` works against this Mac).
- In remote mode, the app opens an SSH tunnel for the Gateway port and connects to `localhost`.

View File

@@ -85,11 +85,11 @@ Notes:
## Model/tooling integration
- Tool surface: `nodes` tool adds `location_get` action (node required).
- CLI: `moltbot nodes location get --node <id>`.
- CLI: `openclaw nodes location get --node <id>`.
- Agent guidelines: only call when user enabled location and understands the scope.
## UX copy (suggested)
- Off: “Location sharing is disabled.”
- While Using: “Only when Moltbot is open.”
- While Using: “Only when OpenClaw is open.”
- Always: “Allow background location. Requires system permission.”
- Precise: “Use precise GPS location. Toggle off to share approximate location.”

View File

@@ -6,7 +6,7 @@ read_when:
---
# Media Understanding (Inbound) — 2026-01-17
Moltbot can **summarize inbound media** (image/audio/video) before the reply pipeline runs. It autodetects when local tools or provider keys are available, and can be disabled or customized. If understanding is off, models still receive the original files/URLs as usual.
OpenClaw can **summarize inbound media** (image/audio/video) before the reply pipeline runs. It autodetects when local tools or provider keys are available, and can be disabled or customized. If understanding is off, models still receive the original files/URLs as usual.
## Goals
- Optional: predigest inbound media into short text for faster routing + better command parsing.
@@ -106,12 +106,12 @@ Rules:
- If media exceeds `maxBytes`, that model is skipped and the **next model is tried**.
- If the model returns more than `maxChars`, output is trimmed.
- `prompt` defaults to simple “Describe the {media}.” plus the `maxChars` guidance (image/video only).
- If `<capability>.enabled: true` but no models are configured, Moltbot tries the
- If `<capability>.enabled: true` but no models are configured, OpenClaw tries the
**active reply model** when its provider supports the capability.
### Auto-detect media understanding (default)
If `tools.media.<capability>.enabled` is **not** set to `false` and you havent
configured models, Moltbot auto-detects in this order and **stops at the first
configured models, OpenClaw auto-detects in this order and **stops at the first
working option**:
1) **Local CLIs** (audio only; if installed)
@@ -140,7 +140,7 @@ Note: Binary detection is best-effort across macOS/Linux/Windows; ensure the CLI
## Capabilities (optional)
If you set `capabilities`, the entry only runs for those media types. For shared
lists, Moltbot can infer defaults:
lists, OpenClaw can infer defaults:
- `openai`, `anthropic`, `minimax`: **image**
- `google` (Gemini API): **image + audio + video**
- `groq`: **audio**
@@ -149,7 +149,7 @@ lists, Moltbot can infer defaults:
For CLI entries, **set `capabilities` explicitly** to avoid surprising matches.
If you omit `capabilities`, the entry is eligible for the list it appears in.
## Provider support matrix (Moltbot integrations)
## Provider support matrix (OpenClaw integrations)
| Capability | Provider integration | Notes |
|------------|----------------------|-------|
| Image | OpenAI / Anthropic / Google / others via `pi-ai` | Any image-capable model in the registry works. |

View File

@@ -40,7 +40,7 @@ Supported keys:
- `seed`, `normalize`, `lang`, `output_format`, `latency_tier`
- `once`
## Config (`~/.clawdbot/moltbot.json`)
## Config (`~/.openclaw/openclaw.json`)
```json5
{
"talk": {

View File

@@ -6,7 +6,7 @@ read_when:
---
# Voice Wake (Global Wake Words)
Moltbot treats **wake words as a single global list** owned by the **Gateway**.
OpenClaw treats **wake words as a single global list** owned by the **Gateway**.
- There are **no per-node custom wake words**.
- **Any node/app UI may edit** the list; changes are persisted by the Gateway and broadcast to everyone.
@@ -16,12 +16,12 @@ Moltbot treats **wake words as a single global list** owned by the **Gateway**.
Wake words are stored on the gateway machine at:
- `~/.clawdbot/settings/voicewake.json`
- `~/.openclaw/settings/voicewake.json`
Shape:
```json
{ "triggers": ["clawd", "claude", "computer"], "updatedAtMs": 1730000000000 }
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }
```
## Protocol