refactor: rename clawdbot to moltbot with legacy compat

This commit is contained in:
Peter Steinberger
2026-01-27 12:19:58 +00:00
parent 83460df96f
commit 6d16a658e5
1839 changed files with 11250 additions and 11199 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), Clawdbot:
- **Media understanding (audio)**: If audio understanding is enabled (or autodetected), Moltbot:
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`,
Clawdbot auto-detects in this order and stops at the first working option:
Moltbot 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)
Clawdbot supports **camera capture** for agent workflows:
Moltbot 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
clawdbot nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
clawdbot nodes camera snap --node <id> --facing front
clawdbot nodes camera clip --node <id> --duration 3000
clawdbot nodes camera clip --node <id> --no-audio
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
```
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** (`clawdbot.cameraEnabled`)
- **Settings → General → Allow Camera** (`moltbot.cameraEnabled`)
- Default: **off**
- When off: camera requests return “Camera disabled by user”.
### CLI helper (node invoke)
Use the main `clawdbot` CLI to invoke camera commands on the macOS node.
Use the main `moltbot` CLI to invoke camera commands on the macOS node.
Examples:
```bash
clawdbot nodes camera list --node <id> # list camera ids
clawdbot nodes camera snap --node <id> # prints MEDIA:<path>
clawdbot nodes camera snap --node <id> --max-width 1280
clawdbot nodes camera snap --node <id> --delay-ms 2000
clawdbot nodes camera snap --node <id> --device-id <id>
clawdbot nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
clawdbot nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
clawdbot nodes camera clip --node <id> --device-id <id>
clawdbot nodes camera clip --node <id> --no-audio
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
```
Notes:
- `clawdbot nodes camera snap` defaults to `maxWidth=1600` unless overridden.
- `moltbot 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
clawdbot nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
moltbot 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 `clawdbot message send --media`.
- Send media with optional captions via `moltbot message send --media`.
- Allow auto-replies from the web inbox to include media alongside text.
- Keep per-type limits sane and predictable.
## CLI Surface
- `clawdbot message send --media <path-or-url> [--message <caption>]`
- `moltbot 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 `clawdbot message send`.
- When media is present, the web sender resolves local paths or URLs using the same pipeline as `moltbot message send`.
- Multiple media entries are sent sequentially if provided.
## Inbound Media to Commands (Pi)
- When inbound web messages include media, Clawdbot downloads to a temp file and exposes templating variables:
- When inbound web messages include media, Moltbot 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 `clawdbot 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 `moltbot 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
clawdbot devices list
clawdbot devices approve <requestId>
clawdbot devices reject <requestId>
clawdbot nodes status
clawdbot nodes describe --node <idOrNameOrIp>
moltbot devices list
moltbot devices approve <requestId>
moltbot devices reject <requestId>
moltbot nodes status
moltbot nodes describe --node <idOrNameOrIp>
```
Notes:
- `nodes status` marks a node as **paired** when its device pairing role includes `node`.
- `node.pair.*` (CLI: `clawdbot nodes pending/approve/reject`) is a separate gateway-owned
- `node.pair.*` (CLI: `moltbot 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)
@@ -54,14 +54,14 @@ forwards `exec` calls to the **node host** when `host=node` is selected.
On the node machine:
```bash
clawdbot node run --host <gateway-host> --port 18789 --display-name "Build Node"
moltbot node run --host <gateway-host> --port 18789 --display-name "Build Node"
```
### Start a node host (service)
```bash
clawdbot node install --host <gateway-host> --port 18789 --display-name "Build Node"
clawdbot node restart
moltbot node install --host <gateway-host> --port 18789 --display-name "Build Node"
moltbot node restart
```
### Pair + name
@@ -69,22 +69,22 @@ clawdbot node restart
On the gateway host:
```bash
clawdbot nodes pending
clawdbot nodes approve <requestId>
clawdbot nodes list
moltbot nodes pending
moltbot nodes approve <requestId>
moltbot nodes list
```
Naming options:
- `--display-name` on `clawdbot node run` / `clawdbot node install` (persists in `~/.clawdbot/node.json` on the node).
- `clawdbot nodes rename --node <id|name|ip> --name "Build Node"` (gateway override).
- `--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).
### Allowlist the commands
Exec approvals are **per node host**. Add allowlist entries from the gateway:
```bash
clawdbot approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
clawdbot approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
moltbot approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
moltbot approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
```
Approvals live on the node host at `~/.clawdbot/exec-approvals.json`.
@@ -94,9 +94,9 @@ Approvals live on the node host at `~/.clawdbot/exec-approvals.json`.
Configure defaults (gateway config):
```bash
clawdbot config set tools.exec.host node
clawdbot config set tools.exec.security allowlist
clawdbot config set tools.exec.node "<id-or-name>"
moltbot config set tools.exec.host node
moltbot config set tools.exec.security allowlist
moltbot config set tools.exec.node "<id-or-name>"
```
Or per session:
@@ -118,7 +118,7 @@ Related:
Low-level (raw RPC):
```bash
clawdbot nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
moltbot 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
clawdbot nodes canvas snapshot --node <idOrNameOrIp> --format png
clawdbot nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
moltbot nodes canvas snapshot --node <idOrNameOrIp> --format png
moltbot nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
```
### Canvas controls
```bash
clawdbot nodes canvas present --node <idOrNameOrIp> --target https://example.com
clawdbot nodes canvas hide --node <idOrNameOrIp>
clawdbot nodes canvas navigate https://example.com --node <idOrNameOrIp>
clawdbot nodes canvas eval --node <idOrNameOrIp> --js "document.title"
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"
```
Notes:
@@ -150,9 +150,9 @@ Notes:
### A2UI (Canvas)
```bash
clawdbot nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
clawdbot nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
clawdbot nodes canvas a2ui reset --node <idOrNameOrIp>
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>
```
Notes:
@@ -163,16 +163,16 @@ Notes:
Photos (`jpg`):
```bash
clawdbot nodes camera list --node <idOrNameOrIp>
clawdbot nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
clawdbot nodes camera snap --node <idOrNameOrIp> --facing front
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
```
Video clips (`mp4`):
```bash
clawdbot nodes camera clip --node <idOrNameOrIp> --duration 10s
clawdbot nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
moltbot nodes camera clip --node <idOrNameOrIp> --duration 10s
moltbot nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
```
Notes:
@@ -185,8 +185,8 @@ Notes:
Nodes expose `screen.record` (mp4). Example:
```bash
clawdbot nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
clawdbot nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
moltbot nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
moltbot 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
clawdbot nodes location get --node <idOrNameOrIp>
clawdbot nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
moltbot nodes location get --node <idOrNameOrIp>
moltbot 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
clawdbot nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from Clawdbot"}'
moltbot nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from Moltbot"}'
```
Notes:
@@ -234,8 +234,8 @@ The headless node host exposes `system.run`, `system.which`, and `system.execApp
Examples:
```bash
clawdbot nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
clawdbot nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
moltbot nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
moltbot nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
```
Notes:
@@ -256,21 +256,21 @@ This sets the default node for `exec host=node` (and can be overridden per agent
Global default:
```bash
clawdbot config set tools.exec.node "node-id-or-name"
moltbot config set tools.exec.node "node-id-or-name"
```
Per-agent override:
```bash
clawdbot config get agents.list
clawdbot config set agents.list[0].tools.exec.node "node-id-or-name"
moltbot config get agents.list
moltbot config set agents.list[0].tools.exec.node "node-id-or-name"
```
Unset to allow any node:
```bash
clawdbot config unset tools.exec.node
clawdbot config unset agents.list[0].tools.exec.node
moltbot config unset tools.exec.node
moltbot config unset agents.list[0].tools.exec.node
```
## Permissions map
@@ -279,14 +279,14 @@ Nodes may include a `permissions` map in `node.list` / `node.describe`, keyed by
## Headless node host (cross-platform)
Clawdbot can run a **headless node host** (no UI) that connects to the Gateway
Moltbot 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
clawdbot node run --host <gateway-host> --port 18789
moltbot node run --host <gateway-host> --port 18789
```
Notes:
@@ -301,5 +301,5 @@ Notes:
## Mac node mode
- The macOS menubar app connects to the Gateway WS server as a node (so `clawdbot nodes …` works against this Mac).
- The macOS menubar app connects to the Gateway WS server as a node (so `moltbot 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: `clawdbot nodes location get --node <id>`.
- CLI: `moltbot 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 Clawdbot is open.”
- While Using: “Only when Moltbot 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
Clawdbot 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.
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.
## 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, Clawdbot tries the
- If `<capability>.enabled: true` but no models are configured, Moltbot 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, Clawdbot auto-detects in this order and **stops at the first
configured models, Moltbot 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, Clawdbot can infer defaults:
lists, Moltbot can infer defaults:
- `openai`, `anthropic`, `minimax`: **image**
- `google` (Gemini API): **image + audio + video**
- `groq`: **audio**
@@ -149,7 +149,7 @@ lists, Clawdbot 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 (Clawdbot integrations)
## Provider support matrix (Moltbot 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/clawdbot.json`)
## Config (`~/.clawdbot/moltbot.json`)
```json5
{
"talk": {

View File

@@ -6,7 +6,7 @@ read_when:
---
# Voice Wake (Global Wake Words)
Clawdbot treats **wake words as a single global list** owned by the **Gateway**.
Moltbot 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.