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,13 +6,13 @@ read_when:
---
# Auth monitoring
Moltbot exposes OAuth expiry health via `moltbot models status`. Use that for
OpenClaw exposes OAuth expiry health via `openclaw models status`. Use that for
automation and alerting; scripts are optional extras for phone workflows.
## Preferred: CLI check (portable)
```bash
moltbot models status --check
openclaw models status --check
```
Exit codes:
@@ -27,15 +27,15 @@ This works in cron/systemd and requires no extra scripts.
These live under `scripts/` and are **optional**. They assume SSH access to the
gateway host and are tuned for systemd + Termux.
- `scripts/claude-auth-status.sh` now uses `moltbot models status --json` as the
- `scripts/claude-auth-status.sh` now uses `openclaw models status --json` as the
source of truth (falling back to direct file reads if the CLI is unavailable),
so keep `moltbot` on `PATH` for timers.
so keep `openclaw` on `PATH` for timers.
- `scripts/auth-monitor.sh`: cron/systemd timer target; sends alerts (ntfy or phone).
- `scripts/systemd/moltbot-auth-monitor.{service,timer}`: systemd user timer.
- `scripts/claude-auth-status.sh`: Claude Code + Moltbot auth checker (full/json/simple).
- `scripts/systemd/openclaw-auth-monitor.{service,timer}`: systemd user timer.
- `scripts/claude-auth-status.sh`: Claude Code + OpenClaw auth checker (full/json/simple).
- `scripts/mobile-reauth.sh`: guided reauth flow over SSH.
- `scripts/termux-quick-auth.sh`: onetap widget status + open auth URL.
- `scripts/termux-auth-widget.sh`: full guided widget flow.
- `scripts/termux-sync-widget.sh`: sync Claude Code creds → Moltbot.
- `scripts/termux-sync-widget.sh`: sync Claude Code creds → OpenClaw.
If you dont need phone automation or systemd timers, skip these scripts.

View File

@@ -17,7 +17,7 @@ cron is the mechanism.
## TL;DR
- Cron runs **inside the Gateway** (not inside the model).
- Jobs persist under `~/.clawdbot/cron/` so restarts dont lose schedules.
- Jobs persist under `~/.openclaw/cron/` so restarts dont lose schedules.
- Two execution styles:
- **Main session**: enqueue a system event, then run on the next heartbeat.
- **Isolated**: run a dedicated agent turn in `cron:<jobId>`, optionally deliver output.
@@ -151,8 +151,8 @@ Prefixed targets like `telegram:...` / `telegram:group:...` are also accepted:
- `telegram:group:-1001234567890:topic:123`
## Storage & history
- Job store: `~/.clawdbot/cron/jobs.json` (Gateway-managed JSON).
- Run history: `~/.clawdbot/cron/runs/<jobId>.jsonl` (JSONL, auto-pruned).
- Job store: `~/.openclaw/cron/jobs.json` (Gateway-managed JSON).
- Run history: `~/.openclaw/cron/runs/<jobId>.jsonl` (JSONL, auto-pruned).
- Override store path: `cron.store` in config.
## Configuration
@@ -161,7 +161,7 @@ Prefixed targets like `telegram:...` / `telegram:group:...` are also accepted:
{
cron: {
enabled: true, // default true
store: "~/.clawdbot/cron/jobs.json",
store: "~/.openclaw/cron/jobs.json",
maxConcurrentRuns: 1 // default 1
}
}
@@ -169,13 +169,13 @@ Prefixed targets like `telegram:...` / `telegram:group:...` are also accepted:
Disable cron entirely:
- `cron.enabled: false` (config)
- `CLAWDBOT_SKIP_CRON=1` (env)
- `OPENCLAW_SKIP_CRON=1` (env)
## CLI quickstart
One-shot reminder (UTC ISO, auto-delete after success):
```bash
moltbot cron add \
openclaw cron add \
--name "Send reminder" \
--at "2026-01-12T18:00:00Z" \
--session main \
@@ -186,7 +186,7 @@ moltbot cron add \
One-shot reminder (main session, wake immediately):
```bash
moltbot cron add \
openclaw cron add \
--name "Calendar check" \
--at "20m" \
--session main \
@@ -196,7 +196,7 @@ moltbot cron add \
Recurring isolated job (deliver to WhatsApp):
```bash
moltbot cron add \
openclaw cron add \
--name "Morning status" \
--cron "0 7 * * *" \
--tz "America/Los_Angeles" \
@@ -209,7 +209,7 @@ moltbot cron add \
Recurring isolated job (deliver to a Telegram topic):
```bash
moltbot cron add \
openclaw cron add \
--name "Nightly summary (topic)" \
--cron "0 22 * * *" \
--tz "America/Los_Angeles" \
@@ -222,7 +222,7 @@ moltbot cron add \
Isolated job with model and thinking override:
```bash
moltbot cron add \
openclaw cron add \
--name "Deep analysis" \
--cron "0 6 * * 1" \
--tz "America/Los_Angeles" \
@@ -237,22 +237,22 @@ moltbot cron add \
Agent selection (multi-agent setups):
```bash
# Pin a job to agent "ops" (falls back to default if that agent is missing)
moltbot cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --message "Check ops queue" --agent ops
openclaw cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --message "Check ops queue" --agent ops
# Switch or clear the agent on an existing job
moltbot cron edit <jobId> --agent ops
moltbot cron edit <jobId> --clear-agent
openclaw cron edit <jobId> --agent ops
openclaw cron edit <jobId> --clear-agent
```
```
Manual run (debug):
```bash
moltbot cron run <jobId> --force
openclaw cron run <jobId> --force
```
Edit an existing job (patch fields):
```bash
moltbot cron edit <jobId> \
openclaw cron edit <jobId> \
--message "Updated prompt" \
--model "opus" \
--thinking low
@@ -260,23 +260,23 @@ moltbot cron edit <jobId> \
Run history:
```bash
moltbot cron runs --id <jobId> --limit 50
openclaw cron runs --id <jobId> --limit 50
```
Immediate system event without creating a job:
```bash
moltbot system event --mode now --text "Next heartbeat: check battery."
openclaw system event --mode now --text "Next heartbeat: check battery."
```
## Gateway API surface
- `cron.list`, `cron.status`, `cron.add`, `cron.update`, `cron.remove`
- `cron.run` (force or due), `cron.runs`
For immediate system events without a job, use [`moltbot system event`](/cli/system).
For immediate system events without a job, use [`openclaw system event`](/cli/system).
## Troubleshooting
### “Nothing runs”
- Check cron is enabled: `cron.enabled` and `CLAWDBOT_SKIP_CRON`.
- Check cron is enabled: `cron.enabled` and `OPENCLAW_SKIP_CRON`.
- Check the Gateway is running continuously (cron runs inside the Gateway process).
- For `cron` schedules: confirm timezone (`--tz`) vs the host timezone.

View File

@@ -95,7 +95,7 @@ Cron jobs run at **exact times** and can run in isolated sessions without affect
### Cron example: Daily morning briefing
```bash
moltbot cron add \
openclaw cron add \
--name "Morning briefing" \
--cron "0 7 * * *" \
--tz "America/New_York" \
@@ -112,7 +112,7 @@ This runs at exactly 7:00 AM New York time, uses Opus for quality, and delivers
### Cron example: One-shot reminder
```bash
moltbot cron add \
openclaw cron add \
--name "Meeting reminder" \
--at "20m" \
--session main \
@@ -168,13 +168,13 @@ The most efficient setup uses **both**:
**Cron jobs** (precise timing):
```bash
# Daily morning briefing at 7am
moltbot cron add --name "Morning brief" --cron "0 7 * * *" --session isolated --message "..." --deliver
openclaw cron add --name "Morning brief" --cron "0 7 * * *" --session isolated --message "..." --deliver
# Weekly project review on Mondays at 9am
moltbot cron add --name "Weekly review" --cron "0 9 * * 1" --session isolated --message "..." --model opus
openclaw cron add --name "Weekly review" --cron "0 9 * * 1" --session isolated --message "..." --model opus
# One-shot reminder
moltbot cron add --name "Call back" --at "2h" --session main --system-event "Call back the client" --wake now
openclaw cron add --name "Call back" --at "2h" --session main --system-event "Call back the client" --wake now
```
@@ -226,7 +226,7 @@ Use `--session main` with `--system-event` when you want:
- No separate isolated run
```bash
moltbot cron add \
openclaw cron add \
--name "Check project" \
--every "4h" \
--session main \
@@ -243,7 +243,7 @@ Use `--session isolated` when you want:
- History that doesn't clutter main session
```bash
moltbot cron add \
openclaw cron add \
--name "Deep analysis" \
--cron "0 6 * * 0" \
--session isolated \

View File

@@ -1,19 +1,19 @@
---
summary: "Gmail Pub/Sub push wired into Moltbot webhooks via gogcli"
summary: "Gmail Pub/Sub push wired into OpenClaw webhooks via gogcli"
read_when:
- Wiring Gmail inbox triggers to Moltbot
- Wiring Gmail inbox triggers to OpenClaw
- Setting up Pub/Sub push for agent wake
---
# Gmail Pub/Sub -> Moltbot
# Gmail Pub/Sub -> OpenClaw
Goal: Gmail watch -> Pub/Sub push -> `gog gmail watch serve` -> Moltbot webhook.
Goal: Gmail watch -> Pub/Sub push -> `gog gmail watch serve` -> OpenClaw webhook.
## Prereqs
- `gcloud` installed and logged in ([install guide](https://docs.cloud.google.com/sdk/docs/install-sdk)).
- `gog` (gogcli) installed and authorized for the Gmail account ([gogcli.sh](https://gogcli.sh/)).
- Moltbot hooks enabled (see [Webhooks](/automation/webhook)).
- OpenClaw hooks enabled (see [Webhooks](/automation/webhook)).
- `tailscale` logged in ([tailscale.com](https://tailscale.com/)). Supported setup uses Tailscale Funnel for the public HTTPS endpoint.
Other tunnel services can work, but are DIY/unsupported and require manual wiring.
Right now, Tailscale is what we support.
@@ -24,7 +24,7 @@ Example hook config (enable Gmail preset mapping):
{
hooks: {
enabled: true,
token: "CLAWDBOT_HOOK_TOKEN",
token: "OPENCLAW_HOOK_TOKEN",
path: "/hooks",
presets: ["gmail"]
}
@@ -38,7 +38,7 @@ that sets `deliver` + optional `channel`/`to`:
{
hooks: {
enabled: true,
token: "CLAWDBOT_HOOK_TOKEN",
token: "OPENCLAW_HOOK_TOKEN",
presets: ["gmail"],
mappings: [
{
@@ -91,19 +91,19 @@ under `hooks.transformsDir` (see [Webhooks](/automation/webhook)).
## Wizard (recommended)
Use the Moltbot helper to wire everything together (installs deps on macOS via brew):
Use the OpenClaw helper to wire everything together (installs deps on macOS via brew):
```bash
moltbot webhooks gmail setup \
--account moltbot@gmail.com
openclaw webhooks gmail setup \
--account openclaw@gmail.com
```
Defaults:
- Uses Tailscale Funnel for the public push endpoint.
- Writes `hooks.gmail` config for `moltbot webhooks gmail run`.
- Writes `hooks.gmail` config for `openclaw webhooks gmail run`.
- Enables the Gmail hook preset (`hooks.presets: ["gmail"]`).
Path note: when `tailscale.mode` is enabled, Moltbot automatically sets
Path note: when `tailscale.mode` is enabled, OpenClaw automatically sets
`hooks.gmail.serve.path` to `/` and keeps the public path at
`hooks.gmail.tailscale.path` (default `/gmail-pubsub`) because Tailscale
strips the set-path prefix before proxying.
@@ -119,14 +119,14 @@ via Homebrew; on Linux install them manually first.
Gateway auto-start (recommended):
- When `hooks.enabled=true` and `hooks.gmail.account` is set, the Gateway starts
`gog gmail watch serve` on boot and auto-renews the watch.
- Set `CLAWDBOT_SKIP_GMAIL_WATCHER=1` to opt out (useful if you run the daemon yourself).
- Set `OPENCLAW_SKIP_GMAIL_WATCHER=1` to opt out (useful if you run the daemon yourself).
- Do not run the manual daemon at the same time, or you will hit
`listen tcp 127.0.0.1:8788: bind: address already in use`.
Manual daemon (starts `gog gmail watch serve` + auto-renew):
```bash
moltbot webhooks gmail run
openclaw webhooks gmail run
```
## One-time setup
@@ -164,7 +164,7 @@ gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
```bash
gog gmail watch start \
--account moltbot@gmail.com \
--account openclaw@gmail.com \
--label INBOX \
--topic projects/<project-id>/topics/gog-gmail-watch
```
@@ -177,23 +177,23 @@ Local example (shared token auth):
```bash
gog gmail watch serve \
--account moltbot@gmail.com \
--account openclaw@gmail.com \
--bind 127.0.0.1 \
--port 8788 \
--path /gmail-pubsub \
--token <shared> \
--hook-url http://127.0.0.1:18789/hooks/gmail \
--hook-token CLAWDBOT_HOOK_TOKEN \
--hook-token OPENCLAW_HOOK_TOKEN \
--include-body \
--max-bytes 20000
```
Notes:
- `--token` protects the push endpoint (`x-gog-token` or `?token=`).
- `--hook-url` points to Moltbot `/hooks/gmail` (mapped; isolated run + summary to main).
- `--include-body` and `--max-bytes` control the body snippet sent to Moltbot.
- `--hook-url` points to OpenClaw `/hooks/gmail` (mapped; isolated run + summary to main).
- `--include-body` and `--max-bytes` control the body snippet sent to OpenClaw.
Recommended: `moltbot webhooks gmail run` wraps the same flow and auto-renews the watch.
Recommended: `openclaw webhooks gmail run` wraps the same flow and auto-renews the watch.
## Expose the handler (advanced, unsupported)
@@ -224,8 +224,8 @@ Send a message to the watched inbox:
```bash
gog gmail send \
--account moltbot@gmail.com \
--to moltbot@gmail.com \
--account openclaw@gmail.com \
--to openclaw@gmail.com \
--subject "watch test" \
--body "ping"
```
@@ -233,8 +233,8 @@ gog gmail send \
Check watch state and history:
```bash
gog gmail watch status --account moltbot@gmail.com
gog gmail history --account moltbot@gmail.com --since <historyId>
gog gmail watch status --account openclaw@gmail.com
gog gmail history --account openclaw@gmail.com --since <historyId>
```
## Troubleshooting
@@ -246,7 +246,7 @@ gog gmail history --account moltbot@gmail.com --since <historyId>
## Cleanup
```bash
gog gmail watch stop --account moltbot@gmail.com
gog gmail watch stop --account openclaw@gmail.com
gcloud pubsub subscriptions delete gog-gmail-watch-push
gcloud pubsub topics delete gog-gmail-watch
```

View File

@@ -16,19 +16,19 @@ read_when:
```bash
# WhatsApp
moltbot message poll --target +15555550123 \
openclaw message poll --target +15555550123 \
--poll-question "Lunch today?" --poll-option "Yes" --poll-option "No" --poll-option "Maybe"
moltbot message poll --target 123456789@g.us \
openclaw message poll --target 123456789@g.us \
--poll-question "Meeting time?" --poll-option "10am" --poll-option "2pm" --poll-option "4pm" --poll-multi
# Discord
moltbot message poll --channel discord --target channel:123456789 \
openclaw message poll --channel discord --target channel:123456789 \
--poll-question "Snack?" --poll-option "Pizza" --poll-option "Sushi"
moltbot message poll --channel discord --target channel:123456789 \
openclaw message poll --channel discord --target channel:123456789 \
--poll-question "Plan?" --poll-option "A" --poll-option "B" --poll-duration-hours 48
# MS Teams
moltbot message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
openclaw message poll --channel msteams --target conversation:19:abc@thread.tacv2 \
--poll-question "Lunch?" --poll-option "Pizza" --poll-option "Sushi"
```
@@ -53,11 +53,11 @@ Params:
## Channel differences
- WhatsApp: 2-12 options, `maxSelections` must be within option count, ignores `durationHours`.
- Discord: 2-10 options, `durationHours` clamped to 1-768 hours (default 24). `maxSelections > 1` enables multi-select; Discord does not support a strict selection count.
- MS Teams: Adaptive Card polls (Moltbot-managed). No native poll API; `durationHours` is ignored.
- MS Teams: Adaptive Card polls (OpenClaw-managed). No native poll API; `durationHours` is ignored.
## Agent tool (Message)
Use the `message` tool with `poll` action (`to`, `pollQuestion`, `pollOption`, optional `pollMulti`, `pollDurationHours`, `channel`).
Note: Discord has no “pick exactly N” mode; `pollMulti` maps to multi-select.
Teams polls are rendered as Adaptive Cards and require the gateway to stay online
to record votes in `~/.clawdbot/msteams-polls.json`.
to record votes in `~/.openclaw/msteams-polls.json`.

View File

@@ -2,7 +2,7 @@
summary: "Webhook ingress for wake and isolated agent runs"
read_when:
- Adding or changing webhook endpoints
- Wiring external systems into Moltbot
- Wiring external systems into OpenClaw
---
# Webhooks
@@ -29,7 +29,7 @@ Notes:
Every request must include the hook token. Prefer headers:
- `Authorization: Bearer <token>` (recommended)
- `x-moltbot-token: <token>`
- `x-openclaw-token: <token>`
- `?token=<token>` (deprecated; logs a warning and will be removed in a future major release)
## Endpoints
@@ -98,7 +98,7 @@ Mapping options (summary):
(`channel` defaults to `last` and falls back to WhatsApp).
- `allowUnsafeExternalContent: true` disables the external content safety wrapper for that hook
(dangerous; only for trusted internal sources).
- `moltbot webhooks gmail setup` writes `hooks.gmail` config for `moltbot webhooks gmail run`.
- `openclaw webhooks gmail setup` writes `hooks.gmail` config for `openclaw webhooks gmail run`.
See [Gmail Pub/Sub](/automation/gmail-pubsub) for the full Gmail watch flow.
## Responses
@@ -120,7 +120,7 @@ curl -X POST http://127.0.0.1:18789/hooks/wake \
```bash
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'x-moltbot-token: SECRET' \
-H 'x-openclaw-token: SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","wakeMode":"next-heartbeat"}'
```
@@ -131,7 +131,7 @@ Add `model` to the agent payload (or mapping) to override the model for that run
```bash
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'x-moltbot-token: SECRET' \
-H 'x-openclaw-token: SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.2-mini"}'
```