From 83460df96f5076c005ad3e456f0a3e484fb37cdd Mon Sep 17 00:00:00 2001
From: Peter Steinberger
Date: Tue, 27 Jan 2026 11:27:41 +0000
Subject: [PATCH] chore: update molt.bot domains
---
AGENTS.md | 10 +-
CHANGELOG.md | 190 +++++++-------
README.md | 235 +++++++++---------
SECURITY.md | 2 +-
appcast.xml | 26 +-
.../macos/Sources/Clawdbot/CLIInstaller.swift | 2 +-
assets/chrome-extension/options.html | 2 +-
docker-setup.sh | 2 +-
docs/CNAME | 2 +-
docs/channels/googlechat.md | 2 +-
docs/cli/browser.md | 2 +-
docs/cli/hooks.md | 2 +-
docs/concepts/markdown-formatting.md | 4 +-
docs/gateway/security/index.md | 2 +-
docs/gateway/troubleshooting.md | 4 +-
docs/help/faq.md | 28 +--
docs/help/troubleshooting.md | 10 +-
docs/hooks.md | 2 +-
docs/install/index.md | 14 +-
docs/install/installer.md | 24 +-
docs/install/uninstall.md | 2 +-
docs/install/updating.md | 87 +++----
docs/platforms/digitalocean.md | 2 +-
docs/platforms/oracle.md | 2 +-
docs/platforms/raspberry-pi.md | 2 +-
docs/reference/RELEASING.md | 2 +-
docs/start/getting-started.md | 4 +-
extensions/lobster/src/lobster-tool.test.ts | 20 ++
extensions/lobster/src/lobster-tool.ts | 26 +-
extensions/mattermost/src/onboarding.ts | 2 +-
extensions/tlon/README.md | 2 +-
extensions/twitch/README.md | 2 +-
extensions/voice-call/README.md | 4 +-
extensions/voice-call/src/cli.ts | 2 +-
extensions/voice-call/src/core-bridge.ts | 14 +-
extensions/zalo/src/onboarding.ts | 2 +-
extensions/zalouser/src/channel.ts | 2 +-
extensions/zalouser/src/onboarding.ts | 4 +-
pnpm-lock.yaml | 20 +-
pnpm-workspace.yaml | 1 +
scripts/docker/install-sh-e2e/run.sh | 2 +-
scripts/docker/install-sh-nonroot/run.sh | 2 +-
scripts/docker/install-sh-smoke/run.sh | 2 +-
scripts/test-install-sh-docker.sh | 4 +-
scripts/test-install-sh-e2e-docker.sh | 2 +-
src/agents/clawdbot-gateway-tool.test.ts | 2 +-
src/agents/system-prompt.ts | 2 +-
src/agents/tools/web-search.ts | 10 +-
src/auto-reply/reply/bash-command.ts | 2 +-
src/canvas-host/a2ui/.bundle.hash | 2 +-
src/channels/plugins/catalog.test.ts | 2 +-
src/channels/plugins/onboarding/telegram.ts | 4 +-
src/channels/registry.test.ts | 2 +-
src/channels/registry.ts | 2 +-
src/cli/acp-cli.ts | 4 +-
src/cli/banner.ts | 4 +-
src/cli/browser-cli-extension.ts | 4 +-
src/cli/browser-cli.ts | 2 +-
src/cli/channels-cli.ts | 2 +-
src/cli/command-format.ts | 15 +-
src/cli/config-cli.ts | 2 +-
src/cli/cron-cli/register.ts | 2 +-
src/cli/daemon-cli/register.ts | 2 +-
src/cli/daemon-cli/status.print.ts | 2 +-
src/cli/directory-cli.ts | 2 +-
src/cli/dns-cli.ts | 2 +-
src/cli/docs-cli.ts | 2 +-
src/cli/exec-approvals-cli.ts | 4 +-
src/cli/gateway-cli/register.ts | 2 +-
src/cli/hooks-cli.test.ts | 2 +-
src/cli/hooks-cli.ts | 2 +-
src/cli/logs-cli.ts | 2 +-
src/cli/memory-cli.ts | 2 +-
src/cli/models-cli.ts | 2 +-
src/cli/node-cli/register.ts | 2 +-
src/cli/nodes-camera.test.ts | 4 +-
src/cli/nodes-camera.ts | 5 +-
src/cli/nodes-canvas.ts | 5 +-
src/cli/nodes-cli/register.ts | 2 +-
src/cli/pairing-cli.ts | 2 +-
src/cli/plugins-cli.ts | 4 +-
src/cli/profile.test.ts | 20 +-
src/cli/program.nodes-media.test.ts | 4 +-
src/cli/program/help.ts | 9 +-
src/cli/program/preaction.ts | 6 +-
src/cli/program/register.agent.ts | 4 +-
src/cli/program/register.configure.ts | 2 +-
src/cli/program/register.maintenance.ts | 8 +-
src/cli/program/register.message.ts | 2 +-
src/cli/program/register.onboard.ts | 2 +-
src/cli/program/register.setup.ts | 2 +-
.../register.status-health-sessions.ts | 6 +-
src/cli/sandbox-cli.ts | 2 +-
src/cli/security-cli.ts | 2 +-
src/cli/skills-cli.ts | 2 +-
src/cli/system-cli.ts | 2 +-
src/cli/tui-cli.ts | 2 +-
src/cli/update-cli.ts | 52 ++--
src/cli/webhooks-cli.ts | 2 +-
src/commands/agents.commands.add.ts | 2 +-
src/commands/auth-choice.apply.openai.ts | 2 +-
....adds-non-default-telegram-account.test.ts | 2 +-
src/commands/configure.gateway.ts | 4 +-
src/commands/configure.wizard.ts | 16 +-
src/commands/daemon-install-helpers.test.ts | 2 +-
src/commands/docs.ts | 6 +-
src/commands/onboard-helpers.ts | 4 +-
src/commands/onboard-hooks.test.ts | 2 +-
src/commands/onboard-hooks.ts | 2 +-
src/commands/onboard-non-interactive/local.ts | 2 +-
.../onboard-non-interactive/remote.ts | 2 +-
src/commands/onboard-remote.ts | 4 +-
src/commands/onboard-skills.ts | 2 +-
src/commands/onboard.ts | 4 +-
src/commands/sandbox-explain.test.ts | 2 +-
src/commands/sandbox-explain.ts | 4 +-
src/commands/status-all/diagnosis.ts | 2 +-
src/commands/status.command.ts | 4 +-
src/commands/status.test.ts | 2 +
src/hooks/bundled/README.md | 6 +-
src/hooks/bundled/boot-md/HOOK.md | 2 +-
src/hooks/bundled/command-logger/HOOK.md | 2 +-
src/hooks/bundled/session-memory/HOOK.md | 2 +-
src/hooks/bundled/soul-evil/HOOK.md | 2 +-
src/hooks/bundled/soul-evil/README.md | 2 +-
src/hooks/frontmatter.test.ts | 2 +-
src/infra/clawdbot-root.ts | 4 +-
src/infra/update-runner.ts | 25 +-
src/pairing/pairing-messages.test.ts | 5 +-
src/plugins/loader.ts | 9 +-
...s-media-file-path-no-file-download.test.ts | 3 +-
src/terminal/links.ts | 2 +-
src/wizard/onboarding.finalize.ts | 16 +-
src/wizard/onboarding.gateway-config.ts | 4 +-
src/wizard/onboarding.ts | 4 +-
ui/src/ui/app-render.ts | 2 +-
ui/src/ui/views/overview.ts | 8 +-
137 files changed, 653 insertions(+), 538 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index ac85a00d8..c35e996c7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -8,7 +8,7 @@
- Docs: `docs/` (images, queue, Pi config). Built output lives in `dist/`.
- Plugins/extensions: live under `extensions/*` (workspace packages). Keep plugin-only deps in the extension `package.json`; do not add them to the root `package.json` unless core uses them.
- Plugins: install runs `npm install --omit=dev` in plugin dir; runtime deps must live in `dependencies`. Avoid `workspace:*` in `dependencies` (npm install breaks); put `clawdbot` in `devDependencies` or `peerDependencies` instead (runtime resolves `clawdbot/plugin-sdk` via jiti alias).
-- Installers served from `https://clawd.bot/*`: live in the sibling repo `../clawd.bot` (`public/install.sh`, `public/install-cli.sh`, `public/install.ps1`).
+- Installers served from `https://molt.bot/*`: live in the sibling repo `../molt.bot` (`public/install.sh`, `public/install-cli.sh`, `public/install.ps1`).
- Messaging channels: always consider **all** built-in + extension channels when refactoring shared logic (routing, allowlists, pairing, command gating, onboarding, docs).
- Core channel docs: `docs/channels/`
- Core channel code: `src/telegram`, `src/discord`, `src/slack`, `src/signal`, `src/imessage`, `src/web` (WhatsApp web), `src/channels`, `src/routing`
@@ -16,13 +16,13 @@
- When adding channels/extensions/apps/docs, review `.github/labeler.yml` for label coverage.
## Docs Linking (Mintlify)
-- Docs are hosted on Mintlify (docs.clawd.bot).
+- Docs are hosted on Mintlify (docs.molt.bot).
- Internal doc links in `docs/**/*.md`: root-relative, no `.md`/`.mdx` (example: `[Config](/configuration)`).
- Section cross-references: use anchors on root-relative paths (example: `[Hooks](/configuration#hooks)`).
- Doc headings and anchors: avoid em dashes and apostrophes in headings because they break Mintlify anchor links.
-- When Peter asks for links, reply with full `https://docs.clawd.bot/...` URLs (not root-relative).
-- When you touch docs, end the reply with the `https://docs.clawd.bot/...` URLs you referenced.
-- README (GitHub): keep absolute docs URLs (`https://docs.clawd.bot/...`) so links work on GitHub.
+- When Peter asks for links, reply with full `https://docs.molt.bot/...` URLs (not root-relative).
+- When you touch docs, end the reply with the `https://docs.molt.bot/...` URLs you referenced.
+- README (GitHub): keep absolute docs URLs (`https://docs.molt.bot/...`) so links work on GitHub.
- Docs content must be generic: no personal device names/hostnames/paths; use placeholders like `user@gateway-host` and “gateway host”.
## exe.dev VM ops (general)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 447e77846..f8f951133 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Changelog
-Docs: https://docs.clawd.bot
+Docs: https://docs.molt.bot
## 2026.1.26
Status: unreleased.
@@ -113,27 +113,27 @@ Status: unreleased.
## 2026.1.24
### Highlights
-- Providers: Ollama discovery + docs; Venice guide upgrades + cross-links. (#1606) Thanks @abhaymundhara. https://docs.clawd.bot/providers/ollama https://docs.clawd.bot/providers/venice
+- Providers: Ollama discovery + docs; Venice guide upgrades + cross-links. (#1606) Thanks @abhaymundhara. https://docs.molt.bot/providers/ollama https://docs.molt.bot/providers/venice
- Channels: LINE plugin (Messaging API) with rich replies + quick replies. (#1630) Thanks @plum-dawg.
-- TTS: Edge fallback (keyless) + `/tts` auto modes. (#1668, #1667) Thanks @steipete, @sebslight. https://docs.clawd.bot/tts
-- Exec approvals: approve in-chat via `/approve` across all channels (including plugins). (#1621) Thanks @czekaj. https://docs.clawd.bot/tools/exec-approvals https://docs.clawd.bot/tools/slash-commands
-- Telegram: DM topics as separate sessions + outbound link preview toggle. (#1597, #1700) Thanks @rohannagpal, @zerone0x. https://docs.clawd.bot/channels/telegram
+- TTS: Edge fallback (keyless) + `/tts` auto modes. (#1668, #1667) Thanks @steipete, @sebslight. https://docs.molt.bot/tts
+- Exec approvals: approve in-chat via `/approve` across all channels (including plugins). (#1621) Thanks @czekaj. https://docs.molt.bot/tools/exec-approvals https://docs.molt.bot/tools/slash-commands
+- Telegram: DM topics as separate sessions + outbound link preview toggle. (#1597, #1700) Thanks @rohannagpal, @zerone0x. https://docs.molt.bot/channels/telegram
### Changes
- Channels: add LINE plugin (Messaging API) with rich replies, quick replies, and plugin HTTP registry. (#1630) Thanks @plum-dawg.
-- TTS: add Edge TTS provider fallback, defaulting to keyless Edge with MP3 retry on format failures. (#1668) Thanks @steipete. https://docs.clawd.bot/tts
-- TTS: add auto mode enum (off/always/inbound/tagged) with per-session `/tts` override. (#1667) Thanks @sebslight. https://docs.clawd.bot/tts
+- TTS: add Edge TTS provider fallback, defaulting to keyless Edge with MP3 retry on format failures. (#1668) Thanks @steipete. https://docs.molt.bot/tts
+- TTS: add auto mode enum (off/always/inbound/tagged) with per-session `/tts` override. (#1667) Thanks @sebslight. https://docs.molt.bot/tts
- Telegram: treat DM topics as separate sessions and keep DM history limits stable with thread suffixes. (#1597) Thanks @rohannagpal.
-- Telegram: add `channels.telegram.linkPreview` to toggle outbound link previews. (#1700) Thanks @zerone0x. https://docs.clawd.bot/channels/telegram
-- Web search: add Brave freshness filter parameter for time-scoped results. (#1688) Thanks @JonUleis. https://docs.clawd.bot/tools/web
+- Telegram: add `channels.telegram.linkPreview` to toggle outbound link previews. (#1700) Thanks @zerone0x. https://docs.molt.bot/channels/telegram
+- Web search: add Brave freshness filter parameter for time-scoped results. (#1688) Thanks @JonUleis. https://docs.molt.bot/tools/web
- UI: refresh Control UI dashboard design system (colors, icons, typography). (#1745, #1786) Thanks @EnzeD, @mousberg.
-- Exec approvals: forward approval prompts to chat with `/approve` for all channels (including plugins). (#1621) Thanks @czekaj. https://docs.clawd.bot/tools/exec-approvals https://docs.clawd.bot/tools/slash-commands
+- Exec approvals: forward approval prompts to chat with `/approve` for all channels (including plugins). (#1621) Thanks @czekaj. https://docs.molt.bot/tools/exec-approvals https://docs.molt.bot/tools/slash-commands
- Gateway: expose config.patch in the gateway tool with safe partial updates + restart sentinel. (#1653) Thanks @Glucksberg.
-- Diagnostics: add diagnostic flags for targeted debug logs (config + env override). https://docs.clawd.bot/diagnostics/flags
+- Diagnostics: add diagnostic flags for targeted debug logs (config + env override). https://docs.molt.bot/diagnostics/flags
- Docs: expand FAQ (migration, scheduling, concurrency, model recommendations, OpenAI subscription auth, Pi sizing, hackable install, docs SSL workaround).
- Docs: add verbose installer troubleshooting guidance.
- Docs: add macOS VM guide with local/hosted options + VPS/nodes guidance. (#1693) Thanks @f-trycua.
-- Docs: add Bedrock EC2 instance role setup + IAM steps. (#1625) Thanks @sergical. https://docs.clawd.bot/bedrock
+- Docs: add Bedrock EC2 instance role setup + IAM steps. (#1625) Thanks @sergical. https://docs.molt.bot/bedrock
- Docs: update Fly.io guide notes.
- Dev: add prek pre-commit hooks + dependabot config for weekly updates. (#1720) Thanks @dguido.
@@ -144,11 +144,11 @@ Status: unreleased.
- Web UI: hide internal `message_id` hints in chat bubbles.
- Gateway: allow Control UI token-only auth to skip device pairing even when device identity is present (`gateway.controlUi.allowInsecureAuth`). (#1679) Thanks @steipete.
- Matrix: decrypt E2EE media attachments with preflight size guard. (#1744) Thanks @araa47.
-- BlueBubbles: route phone-number targets to DMs, avoid leaking routing IDs, and auto-create missing DMs (Private API required). (#1751) Thanks @tyler6204. https://docs.clawd.bot/channels/bluebubbles
+- BlueBubbles: route phone-number targets to DMs, avoid leaking routing IDs, and auto-create missing DMs (Private API required). (#1751) Thanks @tyler6204. https://docs.molt.bot/channels/bluebubbles
- BlueBubbles: keep part-index GUIDs in reply tags when short IDs are missing.
- iMessage: normalize chat_id/chat_guid/chat_identifier prefixes case-insensitively and keep service-prefixed handles stable. (#1708) Thanks @aaronn.
- Signal: repair reaction sends (group/UUID targets + CLI author flags). (#1651) Thanks @vilkasdev.
-- Signal: add configurable signal-cli startup timeout + external daemon mode docs. (#1677) https://docs.clawd.bot/channels/signal
+- Signal: add configurable signal-cli startup timeout + external daemon mode docs. (#1677) https://docs.molt.bot/channels/signal
- Telegram: set fetch duplex="half" for uploads on Node 22 to avoid sendPhoto failures. (#1684) Thanks @commdata2338.
- Telegram: use wrapped fetch for long-polling on Node to normalize AbortSignal handling. (#1639)
- Telegram: honor per-account proxy for outbound API calls. (#1774) Thanks @radek-paclt.
@@ -186,25 +186,25 @@ Status: unreleased.
## 2026.1.23
### Highlights
-- TTS: move Telegram TTS into core + enable model-driven TTS tags by default for expressive audio replies. (#1559) Thanks @Glucksberg. https://docs.clawd.bot/tts
-- Gateway: add `/tools/invoke` HTTP endpoint for direct tool calls (auth + tool policy enforced). (#1575) Thanks @vignesh07. https://docs.clawd.bot/gateway/tools-invoke-http-api
-- Heartbeat: per-channel visibility controls (OK/alerts/indicator). (#1452) Thanks @dlauer. https://docs.clawd.bot/gateway/heartbeat
-- Deploy: add Fly.io deployment support + guide. (#1570) https://docs.clawd.bot/platforms/fly
-- Channels: add Tlon/Urbit channel plugin (DMs, group mentions, thread replies). (#1544) Thanks @wca4a. https://docs.clawd.bot/channels/tlon
+- TTS: move Telegram TTS into core + enable model-driven TTS tags by default for expressive audio replies. (#1559) Thanks @Glucksberg. https://docs.molt.bot/tts
+- Gateway: add `/tools/invoke` HTTP endpoint for direct tool calls (auth + tool policy enforced). (#1575) Thanks @vignesh07. https://docs.molt.bot/gateway/tools-invoke-http-api
+- Heartbeat: per-channel visibility controls (OK/alerts/indicator). (#1452) Thanks @dlauer. https://docs.molt.bot/gateway/heartbeat
+- Deploy: add Fly.io deployment support + guide. (#1570) https://docs.molt.bot/platforms/fly
+- Channels: add Tlon/Urbit channel plugin (DMs, group mentions, thread replies). (#1544) Thanks @wca4a. https://docs.molt.bot/channels/tlon
### Changes
-- Channels: allow per-group tool allow/deny policies across built-in + plugin channels. (#1546) Thanks @adam91holt. https://docs.clawd.bot/multi-agent-sandbox-tools
-- Agents: add Bedrock auto-discovery defaults + config overrides. (#1553) Thanks @fal3. https://docs.clawd.bot/bedrock
-- CLI: add `clawdbot system` for system events + heartbeat controls; remove standalone `wake`. (commit 71203829d) https://docs.clawd.bot/cli/system
-- CLI: add live auth probes to `clawdbot models status` for per-profile verification. (commit 40181afde) https://docs.clawd.bot/cli/models
+- Channels: allow per-group tool allow/deny policies across built-in + plugin channels. (#1546) Thanks @adam91holt. https://docs.molt.bot/multi-agent-sandbox-tools
+- Agents: add Bedrock auto-discovery defaults + config overrides. (#1553) Thanks @fal3. https://docs.molt.bot/bedrock
+- CLI: add `clawdbot system` for system events + heartbeat controls; remove standalone `wake`. (commit 71203829d) https://docs.molt.bot/cli/system
+- CLI: add live auth probes to `clawdbot models status` for per-profile verification. (commit 40181afde) https://docs.molt.bot/cli/models
- CLI: restart the gateway by default after `clawdbot update`; add `--no-restart` to skip it. (commit 2c85b1b40)
- Browser: add node-host proxy auto-routing for remote gateways (configurable per gateway/node). (commit c3cb26f7c)
-- Plugins: add optional `llm-task` JSON-only tool for workflows. (#1498) Thanks @vignesh07. https://docs.clawd.bot/tools/llm-task
+- Plugins: add optional `llm-task` JSON-only tool for workflows. (#1498) Thanks @vignesh07. https://docs.molt.bot/tools/llm-task
- Markdown: add per-channel table conversion (bullets for Signal/WhatsApp, code blocks elsewhere). (#1495) Thanks @odysseus0.
- Agents: keep system prompt time zone-only and move current time to `session_status` for better cache hits. (commit 66eec295b)
- Agents: remove redundant bash tool alias from tool registration/display. (#1571) Thanks @Takhoffman.
-- Docs: add cron vs heartbeat decision guide (with Lobster workflow notes). (#1533) Thanks @JustYannicc. https://docs.clawd.bot/automation/cron-vs-heartbeat
-- Docs: clarify HEARTBEAT.md empty file skips heartbeats, missing file still runs. (#1535) Thanks @JustYannicc. https://docs.clawd.bot/gateway/heartbeat
+- Docs: add cron vs heartbeat decision guide (with Lobster workflow notes). (#1533) Thanks @JustYannicc. https://docs.molt.bot/automation/cron-vs-heartbeat
+- Docs: clarify HEARTBEAT.md empty file skips heartbeats, missing file still runs. (#1535) Thanks @JustYannicc. https://docs.molt.bot/gateway/heartbeat
### Fixes
- Sessions: accept non-UUID sessionIds for history/send/status while preserving agent scoping. (#1518)
@@ -282,14 +282,14 @@ Status: unreleased.
## 2026.1.21-2
### Fixes
-- Control UI: ignore bootstrap identity placeholder text for avatar values and fall back to the default avatar. https://docs.clawd.bot/cli/agents https://docs.clawd.bot/web/control-ui
+- Control UI: ignore bootstrap identity placeholder text for avatar values and fall back to the default avatar. https://docs.molt.bot/cli/agents https://docs.molt.bot/web/control-ui
- Slack: remove deprecated `filetype` field from `files.uploadV2` to eliminate API warnings. (#1447)
## 2026.1.21
### Changes
-- Highlight: Lobster optional plugin tool for typed workflows + approval gates. https://docs.clawd.bot/tools/lobster
-- Lobster: allow workflow file args via `argsJson` in the plugin tool. https://docs.clawd.bot/tools/lobster
+- Highlight: Lobster optional plugin tool for typed workflows + approval gates. https://docs.molt.bot/tools/lobster
+- Lobster: allow workflow file args via `argsJson` in the plugin tool. https://docs.molt.bot/tools/lobster
- Heartbeat: allow running heartbeats in an explicit session key. (#1256) Thanks @zknicker.
- CLI: default exec approvals to the local host, add gateway/node targeting flags, and show target details in allowlist output.
- CLI: exec approvals mutations render tables instead of raw JSON.
@@ -301,16 +301,16 @@ Status: unreleased.
- Sessions: add per-channel reset overrides via `session.resetByChannel`. (#1353) Thanks @cash-echo-bot.
- Agents: add identity avatar config support and Control UI avatar rendering. (#1329, #1424) Thanks @dlauer.
- UI: show per-session assistant identity in the Control UI. (#1420) Thanks @robbyczgw-cla.
-- CLI: add `clawdbot update wizard` for interactive channel selection and restart prompts. https://docs.clawd.bot/cli/update
+- CLI: add `clawdbot update wizard` for interactive channel selection and restart prompts. https://docs.molt.bot/cli/update
- Signal: add typing indicators and DM read receipts via signal-cli.
- MSTeams: add file uploads, adaptive cards, and attachment handling improvements. (#1410) Thanks @Evizero.
- Onboarding: remove the run setup-token auth option (paste setup-token or reuse CLI creds instead).
-- Docs: add troubleshooting entry for gateway.mode blocking gateway start. https://docs.clawd.bot/gateway/troubleshooting
+- Docs: add troubleshooting entry for gateway.mode blocking gateway start. https://docs.molt.bot/gateway/troubleshooting
- Docs: add /model allowlist troubleshooting note. (#1405)
- Docs: add per-message Gmail search example for gog. (#1220) Thanks @mbelinky.
### Breaking
-- **BREAKING:** Control UI now rejects insecure HTTP without device identity by default. Use HTTPS (Tailscale Serve) or set `gateway.controlUi.allowInsecureAuth: true` to allow token-only auth. https://docs.clawd.bot/web/control-ui#insecure-http
+- **BREAKING:** Control UI now rejects insecure HTTP without device identity by default. Use HTTPS (Tailscale Serve) or set `gateway.controlUi.allowInsecureAuth: true` to allow token-only auth. https://docs.molt.bot/web/control-ui#insecure-http
- **BREAKING:** Envelope and system event timestamps now default to host-local time (was UTC) so agents don’t have to constantly convert.
### Fixes
@@ -336,68 +336,68 @@ Status: unreleased.
## 2026.1.20
### Changes
-- Control UI: add copy-as-markdown with error feedback. (#1345) https://docs.clawd.bot/web/control-ui
-- Control UI: drop the legacy list view. (#1345) https://docs.clawd.bot/web/control-ui
-- TUI: add syntax highlighting for code blocks. (#1200) https://docs.clawd.bot/tui
-- TUI: session picker shows derived titles, fuzzy search, relative times, and last message preview. (#1271) https://docs.clawd.bot/tui
-- TUI: add a searchable model picker for quicker model selection. (#1198) https://docs.clawd.bot/tui
-- TUI: add input history (up/down) for submitted messages. (#1348) https://docs.clawd.bot/tui
-- ACP: add `clawdbot acp` for IDE integrations. https://docs.clawd.bot/cli/acp
-- ACP: add `clawdbot acp client` interactive harness for debugging. https://docs.clawd.bot/cli/acp
-- Skills: add download installs with OS-filtered options. https://docs.clawd.bot/tools/skills
-- Skills: add the local sherpa-onnx-tts skill. https://docs.clawd.bot/tools/skills
-- Memory: add hybrid BM25 + vector search (FTS5) with weighted merging and fallback. https://docs.clawd.bot/concepts/memory
-- Memory: add SQLite embedding cache to speed up reindexing and frequent updates. https://docs.clawd.bot/concepts/memory
-- Memory: add OpenAI batch indexing for embeddings when configured. https://docs.clawd.bot/concepts/memory
-- Memory: enable OpenAI batch indexing by default for OpenAI embeddings. https://docs.clawd.bot/concepts/memory
-- Memory: allow parallel OpenAI batch indexing jobs (default concurrency: 2). https://docs.clawd.bot/concepts/memory
-- Memory: render progress immediately, color batch statuses in verbose logs, and poll OpenAI batch status every 2s by default. https://docs.clawd.bot/concepts/memory
-- Memory: add `--verbose` logging for memory status + batch indexing details. https://docs.clawd.bot/concepts/memory
-- Memory: add native Gemini embeddings provider for memory search. (#1151) https://docs.clawd.bot/concepts/memory
-- Browser: allow config defaults for efficient snapshots in the tool/CLI. (#1336) https://docs.clawd.bot/tools/browser
-- Nostr: add the Nostr channel plugin with profile management + onboarding defaults. (#1323) https://docs.clawd.bot/channels/nostr
-- Matrix: migrate to matrix-bot-sdk with E2EE support, location handling, and group allowlist upgrades. (#1298) https://docs.clawd.bot/channels/matrix
-- Slack: add HTTP webhook mode via Bolt HTTP receiver. (#1143) https://docs.clawd.bot/channels/slack
-- Telegram: enrich forwarded-message context with normalized origin details + legacy fallback. (#1090) https://docs.clawd.bot/channels/telegram
+- Control UI: add copy-as-markdown with error feedback. (#1345) https://docs.molt.bot/web/control-ui
+- Control UI: drop the legacy list view. (#1345) https://docs.molt.bot/web/control-ui
+- TUI: add syntax highlighting for code blocks. (#1200) https://docs.molt.bot/tui
+- TUI: session picker shows derived titles, fuzzy search, relative times, and last message preview. (#1271) https://docs.molt.bot/tui
+- TUI: add a searchable model picker for quicker model selection. (#1198) https://docs.molt.bot/tui
+- TUI: add input history (up/down) for submitted messages. (#1348) https://docs.molt.bot/tui
+- ACP: add `clawdbot acp` for IDE integrations. https://docs.molt.bot/cli/acp
+- ACP: add `clawdbot acp client` interactive harness for debugging. https://docs.molt.bot/cli/acp
+- Skills: add download installs with OS-filtered options. https://docs.molt.bot/tools/skills
+- Skills: add the local sherpa-onnx-tts skill. https://docs.molt.bot/tools/skills
+- Memory: add hybrid BM25 + vector search (FTS5) with weighted merging and fallback. https://docs.molt.bot/concepts/memory
+- Memory: add SQLite embedding cache to speed up reindexing and frequent updates. https://docs.molt.bot/concepts/memory
+- Memory: add OpenAI batch indexing for embeddings when configured. https://docs.molt.bot/concepts/memory
+- Memory: enable OpenAI batch indexing by default for OpenAI embeddings. https://docs.molt.bot/concepts/memory
+- Memory: allow parallel OpenAI batch indexing jobs (default concurrency: 2). https://docs.molt.bot/concepts/memory
+- Memory: render progress immediately, color batch statuses in verbose logs, and poll OpenAI batch status every 2s by default. https://docs.molt.bot/concepts/memory
+- Memory: add `--verbose` logging for memory status + batch indexing details. https://docs.molt.bot/concepts/memory
+- Memory: add native Gemini embeddings provider for memory search. (#1151) https://docs.molt.bot/concepts/memory
+- Browser: allow config defaults for efficient snapshots in the tool/CLI. (#1336) https://docs.molt.bot/tools/browser
+- Nostr: add the Nostr channel plugin with profile management + onboarding defaults. (#1323) https://docs.molt.bot/channels/nostr
+- Matrix: migrate to matrix-bot-sdk with E2EE support, location handling, and group allowlist upgrades. (#1298) https://docs.molt.bot/channels/matrix
+- Slack: add HTTP webhook mode via Bolt HTTP receiver. (#1143) https://docs.molt.bot/channels/slack
+- Telegram: enrich forwarded-message context with normalized origin details + legacy fallback. (#1090) https://docs.molt.bot/channels/telegram
- Discord: fall back to `/skill` when native command limits are exceeded. (#1287)
- Discord: expose `/skill` globally. (#1287)
-- Zalouser: add channel dock metadata, config schema, setup wiring, probe, and status issues. (#1219) https://docs.clawd.bot/plugins/zalouser
-- Plugins: require manifest-embedded config schemas with preflight validation warnings. (#1272) https://docs.clawd.bot/plugins/manifest
-- Plugins: move channel catalog metadata into plugin manifests. (#1290) https://docs.clawd.bot/plugins/manifest
-- Plugins: align Nextcloud Talk policy helpers with core patterns. (#1290) https://docs.clawd.bot/plugins/manifest
-- Plugins/UI: let channel plugin metadata drive UI labels/icons and cron channel options. (#1306) https://docs.clawd.bot/web/control-ui
-- Agents/UI: add agent avatar support in identity config, IDENTITY.md, and the Control UI. (#1329) https://docs.clawd.bot/gateway/configuration
-- Plugins: add plugin slots with a dedicated memory slot selector. https://docs.clawd.bot/plugins/agent-tools
-- Plugins: ship the bundled BlueBubbles channel plugin (disabled by default). https://docs.clawd.bot/channels/bluebubbles
+- Zalouser: add channel dock metadata, config schema, setup wiring, probe, and status issues. (#1219) https://docs.molt.bot/plugins/zalouser
+- Plugins: require manifest-embedded config schemas with preflight validation warnings. (#1272) https://docs.molt.bot/plugins/manifest
+- Plugins: move channel catalog metadata into plugin manifests. (#1290) https://docs.molt.bot/plugins/manifest
+- Plugins: align Nextcloud Talk policy helpers with core patterns. (#1290) https://docs.molt.bot/plugins/manifest
+- Plugins/UI: let channel plugin metadata drive UI labels/icons and cron channel options. (#1306) https://docs.molt.bot/web/control-ui
+- Agents/UI: add agent avatar support in identity config, IDENTITY.md, and the Control UI. (#1329) https://docs.molt.bot/gateway/configuration
+- Plugins: add plugin slots with a dedicated memory slot selector. https://docs.molt.bot/plugins/agent-tools
+- Plugins: ship the bundled BlueBubbles channel plugin (disabled by default). https://docs.molt.bot/channels/bluebubbles
- Plugins: migrate bundled messaging extensions to the plugin SDK and resolve plugin-sdk imports in the loader.
-- Plugins: migrate the Zalo plugin to the shared plugin SDK runtime. https://docs.clawd.bot/channels/zalo
-- Plugins: migrate the Zalo Personal plugin to the shared plugin SDK runtime. https://docs.clawd.bot/plugins/zalouser
-- Plugins: allow optional agent tools with explicit allowlists and add the plugin tool authoring guide. https://docs.clawd.bot/plugins/agent-tools
+- Plugins: migrate the Zalo plugin to the shared plugin SDK runtime. https://docs.molt.bot/channels/zalo
+- Plugins: migrate the Zalo Personal plugin to the shared plugin SDK runtime. https://docs.molt.bot/plugins/zalouser
+- Plugins: allow optional agent tools with explicit allowlists and add the plugin tool authoring guide. https://docs.molt.bot/plugins/agent-tools
- Plugins: auto-enable bundled channel/provider plugins when configuration is present.
- Plugins: sync plugin sources on channel switches and update npm-installed plugins during `clawdbot update`.
- Plugins: share npm plugin update logic between `clawdbot update` and `clawdbot plugins update`.
- Gateway/API: add `/v1/responses` (OpenResponses) with item-based input + semantic streaming events. (#1229)
- Gateway/API: expand `/v1/responses` to support file/image inputs, tool_choice, usage, and output limits. (#1229)
-- Usage: add `/usage cost` summaries and macOS menu cost charts. https://docs.clawd.bot/reference/api-usage-costs
-- Security: warn when <=300B models run without sandboxing while web tools are enabled. https://docs.clawd.bot/cli/security
-- Exec: add host/security/ask routing for gateway + node exec. https://docs.clawd.bot/tools/exec
-- Exec: add `/exec` directive for per-session exec defaults (host/security/ask/node). https://docs.clawd.bot/tools/exec
-- Exec approvals: migrate approvals to `~/.clawdbot/exec-approvals.json` with per-agent allowlists + skill auto-allow toggle, and add approvals UI + node exec lifecycle events. https://docs.clawd.bot/tools/exec-approvals
-- Nodes: add headless node host (`clawdbot node start`) for `system.run`/`system.which`. https://docs.clawd.bot/cli/node
-- Nodes: add node daemon service install/status/start/stop/restart. https://docs.clawd.bot/cli/node
+- Usage: add `/usage cost` summaries and macOS menu cost charts. https://docs.molt.bot/reference/api-usage-costs
+- Security: warn when <=300B models run without sandboxing while web tools are enabled. https://docs.molt.bot/cli/security
+- Exec: add host/security/ask routing for gateway + node exec. https://docs.molt.bot/tools/exec
+- Exec: add `/exec` directive for per-session exec defaults (host/security/ask/node). https://docs.molt.bot/tools/exec
+- Exec approvals: migrate approvals to `~/.clawdbot/exec-approvals.json` with per-agent allowlists + skill auto-allow toggle, and add approvals UI + node exec lifecycle events. https://docs.molt.bot/tools/exec-approvals
+- Nodes: add headless node host (`clawdbot node start`) for `system.run`/`system.which`. https://docs.molt.bot/cli/node
+- Nodes: add node daemon service install/status/start/stop/restart. https://docs.molt.bot/cli/node
- Bridge: add `skills.bins` RPC to support node host auto-allow skill bins.
-- Sessions: add daily reset policy with per-type overrides and idle windows (default 4am local), preserving legacy idle-only configs. (#1146) https://docs.clawd.bot/concepts/session
-- Sessions: allow `sessions_spawn` to override thinking level for sub-agent runs. https://docs.clawd.bot/tools/subagents
-- Channels: unify thread/topic allowlist matching + command/mention gating helpers across core providers. https://docs.clawd.bot/concepts/groups
-- Models: add Qwen Portal OAuth provider support. (#1120) https://docs.clawd.bot/providers/qwen
-- Onboarding: add allowlist prompts and username-to-id resolution across core and extension channels. https://docs.clawd.bot/start/onboarding
-- Docs: clarify allowlist input types and onboarding behavior for messaging channels. https://docs.clawd.bot/start/onboarding
-- Docs: refresh Android node discovery docs for the Gateway WS service type. https://docs.clawd.bot/platforms/android
-- Docs: surface Amazon Bedrock in provider lists and clarify Bedrock auth env vars. (#1289) https://docs.clawd.bot/bedrock
-- Docs: clarify WhatsApp voice notes. https://docs.clawd.bot/channels/whatsapp
-- Docs: clarify Windows WSL portproxy LAN access notes. https://docs.clawd.bot/platforms/windows
-- Docs: refresh bird skill install metadata and usage notes. (#1302) https://docs.clawd.bot/tools/browser-login
+- Sessions: add daily reset policy with per-type overrides and idle windows (default 4am local), preserving legacy idle-only configs. (#1146) https://docs.molt.bot/concepts/session
+- Sessions: allow `sessions_spawn` to override thinking level for sub-agent runs. https://docs.molt.bot/tools/subagents
+- Channels: unify thread/topic allowlist matching + command/mention gating helpers across core providers. https://docs.molt.bot/concepts/groups
+- Models: add Qwen Portal OAuth provider support. (#1120) https://docs.molt.bot/providers/qwen
+- Onboarding: add allowlist prompts and username-to-id resolution across core and extension channels. https://docs.molt.bot/start/onboarding
+- Docs: clarify allowlist input types and onboarding behavior for messaging channels. https://docs.molt.bot/start/onboarding
+- Docs: refresh Android node discovery docs for the Gateway WS service type. https://docs.molt.bot/platforms/android
+- Docs: surface Amazon Bedrock in provider lists and clarify Bedrock auth env vars. (#1289) https://docs.molt.bot/bedrock
+- Docs: clarify WhatsApp voice notes. https://docs.molt.bot/channels/whatsapp
+- Docs: clarify Windows WSL portproxy LAN access notes. https://docs.molt.bot/platforms/windows
+- Docs: refresh bird skill install metadata and usage notes. (#1302) https://docs.molt.bot/tools/browser-login
- Agents: add local docs path resolution and include docs/mirror/source/community pointers in the system prompt.
- Agents: clarify node_modules read-only guidance in agent instructions.
- Config: stamp last-touched metadata on write and warn if the config is newer than the running build.
@@ -522,19 +522,19 @@ Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @Nic
## 2026.1.16-1
### Highlights
-- Hooks: add hooks system with bundled hooks, CLI tooling, and docs. (#1028) — thanks @ThomsenDrake. https://docs.clawd.bot/hooks
-- Media: add inbound media understanding (image/audio/video) with provider + CLI fallbacks. https://docs.clawd.bot/nodes/media-understanding
-- Plugins: add Zalo Personal plugin (`@clawdbot/zalouser`) and unify channel directory for plugins. (#1032) — thanks @suminhthanh. https://docs.clawd.bot/plugins/zalouser
-- Models: add Vercel AI Gateway auth choice + onboarding updates. (#1016) — thanks @timolins. https://docs.clawd.bot/providers/vercel-ai-gateway
-- Sessions: add `session.identityLinks` for cross-platform DM session li nking. (#1033) — thanks @thewilloftheshadow. https://docs.clawd.bot/concepts/session
-- Web search: add `country`/`language` parameters (schema + Brave API) and docs. (#1046) — thanks @YuriNachos. https://docs.clawd.bot/tools/web
+- Hooks: add hooks system with bundled hooks, CLI tooling, and docs. (#1028) — thanks @ThomsenDrake. https://docs.molt.bot/hooks
+- Media: add inbound media understanding (image/audio/video) with provider + CLI fallbacks. https://docs.molt.bot/nodes/media-understanding
+- Plugins: add Zalo Personal plugin (`@clawdbot/zalouser`) and unify channel directory for plugins. (#1032) — thanks @suminhthanh. https://docs.molt.bot/plugins/zalouser
+- Models: add Vercel AI Gateway auth choice + onboarding updates. (#1016) — thanks @timolins. https://docs.molt.bot/providers/vercel-ai-gateway
+- Sessions: add `session.identityLinks` for cross-platform DM session li nking. (#1033) — thanks @thewilloftheshadow. https://docs.molt.bot/concepts/session
+- Web search: add `country`/`language` parameters (schema + Brave API) and docs. (#1046) — thanks @YuriNachos. https://docs.molt.bot/tools/web
### Breaking
- **BREAKING:** `clawdbot message` and message tool now require `target` (dropping `to`/`channelId` for destinations). (#1034) — thanks @tobalsan.
- **BREAKING:** Channel auth now prefers config over env for Discord/Telegram/Matrix (env is fallback only). (#1040) — thanks @thewilloftheshadow.
- **BREAKING:** Drop legacy `chatType: "room"` support; use `chatType: "channel"`.
- **BREAKING:** remove legacy provider-specific target resolution fallbacks; target resolution is centralized with plugin hints + directory lookups.
-- **BREAKING:** `clawdbot hooks` is now `clawdbot webhooks`; hooks live under `clawdbot hooks`. https://docs.clawd.bot/cli/webhooks
+- **BREAKING:** `clawdbot hooks` is now `clawdbot webhooks`; hooks live under `clawdbot hooks`. https://docs.molt.bot/cli/webhooks
- **BREAKING:** `clawdbot plugins install ` now copies into `~/.clawdbot/extensions` (use `--link` to keep path-based loading).
### Changes
@@ -545,7 +545,7 @@ Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @Nic
- Tools: send Chrome-like headers by default for `web_fetch` to improve extraction on bot-sensitive sites.
- Tools: Firecrawl fallback now uses bot-circumvention + cache by default; remove basic HTML fallback when extraction fails.
- Tools: default `exec` exit notifications and auto-migrate legacy `tools.bash` to `tools.exec`.
-- Tools: add `exec` PTY support for interactive sessions. https://docs.clawd.bot/tools/exec
+- Tools: add `exec` PTY support for interactive sessions. https://docs.molt.bot/tools/exec
- Tools: add tmux-style `process send-keys` and bracketed paste helpers for PTY sessions.
- Tools: add `process submit` helper to send CR for PTY sessions.
- Tools: respond to PTY cursor position queries to unblock interactive TUIs.
@@ -600,7 +600,7 @@ Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @Nic
- Sessions: hard-stop `sessions.delete` cleanup.
- Channels: treat replies to the bot as implicit mentions across supported channels.
- Channels: normalize object-format capabilities in channel capability parsing.
-- Security: default-deny slash/control commands unless a channel computed `CommandAuthorized` (fixes accidental “open” behavior), and ensure WhatsApp + Zalo plugin channels gate inline `/…` tokens correctly. https://docs.clawd.bot/gateway/security
+- Security: default-deny slash/control commands unless a channel computed `CommandAuthorized` (fixes accidental “open” behavior), and ensure WhatsApp + Zalo plugin channels gate inline `/…` tokens correctly. https://docs.molt.bot/gateway/security
- Security: redact sensitive text in gateway WS logs.
- Tools: cap pending `exec` process output to avoid unbounded buffers.
- CLI: speed up `clawdbot sandbox-explain` by avoiding heavy plugin imports when normalizing channel ids.
@@ -906,7 +906,7 @@ Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @Nic
- Agents: add pre-compaction memory flush config (`agents.defaults.compaction.*`) with a soft threshold + system prompt.
- Config: add `$include` directive for modular config files. (#731) — thanks @pasogott.
- Build: set pnpm minimum release age to 2880 minutes (2 days). (#718) — thanks @dan-dr.
-- macOS: prompt to install the global `clawdbot` CLI when missing in local mode; install via `clawd.bot/install-cli.sh` (no onboarding) and use external launchd/CLI instead of the embedded gateway runtime.
+- macOS: prompt to install the global `clawdbot` CLI when missing in local mode; install via `molt.bot/install-cli.sh` (no onboarding) and use external launchd/CLI instead of the embedded gateway runtime.
- Docs: add gog calendar event color IDs from `gog calendar colors`. (#715) — thanks @mjrussell.
- Cron/CLI: add `--model` flag to cron add/edit commands. (#711) — thanks @mjrussell.
- Cron/CLI: trim model overrides on cron edits and document main-session guidance. (#711) — thanks @mjrussell.
@@ -920,7 +920,7 @@ Thanks @AlexMikhalev, @CoreyH, @John-Rood, @KrauseFx, @MaudeBot, @Nachx639, @Nic
### Installer
- Postinstall: replace `git apply` with builtin JS patcher (works npm/pnpm/bun; no git dependency) plus regression tests.
- Postinstall: skip pnpm patch fallback when the new patcher is active.
-- Installer tests: add root+non-root docker smokes, CI workflow to fetch clawd.bot scripts and run install sh/cli with onboarding skipped.
+- Installer tests: add root+non-root docker smokes, CI workflow to fetch molt.bot scripts and run install sh/cli with onboarding skipped.
- Installer UX: support `CLAWDBOT_NO_ONBOARD=1` for non-interactive installs; fix npm prefix on Linux and auto-install git.
- Installer UX: add `install.sh --help` with flags/env and git install hint.
- Installer UX: add `--install-method git|npm` and auto-detect source checkouts (prompt to update git checkout vs migrate to npm).
diff --git a/README.md b/README.md
index a3f0b11d1..9f1f93193 100644
--- a/README.md
+++ b/README.md
@@ -21,55 +21,56 @@ It answers you on the channels you already use (WhatsApp, Telegram, Slack, Disco
If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.
-[Website](https://clawdbot.com) · [Docs](https://docs.clawd.bot) · [Getting Started](https://docs.clawd.bot/start/getting-started) · [Updating](https://docs.clawd.bot/install/updating) · [Showcase](https://docs.clawd.bot/start/showcase) · [FAQ](https://docs.clawd.bot/start/faq) · [Wizard](https://docs.clawd.bot/start/wizard) · [Nix](https://github.com/clawdbot/nix-clawdbot) · [Docker](https://docs.clawd.bot/install/docker) · [Discord](https://discord.gg/clawd)
+[Website](https://molt.bot) · [Docs](https://docs.molt.bot) · [Getting Started](https://docs.molt.bot/start/getting-started) · [Updating](https://docs.molt.bot/install/updating) · [Showcase](https://docs.molt.bot/start/showcase) · [FAQ](https://docs.molt.bot/start/faq) · [Wizard](https://docs.molt.bot/start/wizard) · [Nix](https://github.com/clawdbot/nix-clawdbot) · [Docker](https://docs.molt.bot/install/docker) · [Discord](https://discord.gg/clawd)
Preferred setup: run the onboarding wizard (`clawdbot onboard`). It walks through gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on **macOS, Linux, and Windows (via WSL2; strongly recommended)**.
Works with npm, pnpm, or bun.
-New install? Start here: [Getting started](https://docs.clawd.bot/start/getting-started)
+New install? Start here: [Getting started](https://docs.molt.bot/start/getting-started)
**Subscriptions (OAuth):**
- **[Anthropic](https://www.anthropic.com/)** (Claude Pro/Max)
- **[OpenAI](https://openai.com/)** (ChatGPT/Codex)
-Model note: while any model is supported, I strongly recommend **Anthropic Pro/Max (100/200) + Opus 4.5** for long‑context strength and better prompt‑injection resistance. See [Onboarding](https://docs.clawd.bot/start/onboarding).
+Model note: while any model is supported, I strongly recommend **Anthropic Pro/Max (100/200) + Opus 4.5** for long‑context strength and better prompt‑injection resistance. See [Onboarding](https://docs.molt.bot/start/onboarding).
## Models (selection + auth)
-- Models config + CLI: [Models](https://docs.clawd.bot/concepts/models)
-- Auth profile rotation (OAuth vs API keys) + fallbacks: [Model failover](https://docs.clawd.bot/concepts/model-failover)
+- Models config + CLI: [Models](https://docs.molt.bot/concepts/models)
+- Auth profile rotation (OAuth vs API keys) + fallbacks: [Model failover](https://docs.molt.bot/concepts/model-failover)
## Install (recommended)
Runtime: **Node ≥22**.
```bash
-npm install -g clawdbot@latest
-# or: pnpm add -g clawdbot@latest
+npm install -g moltbot@latest
+# or: pnpm add -g moltbot@latest
-clawdbot onboard --install-daemon
+moltbot onboard --install-daemon
```
The wizard installs the Gateway daemon (launchd/systemd user service) so it stays running.
+Legacy note: `clawdbot` remains available as a compatibility shim.
## Quick start (TL;DR)
Runtime: **Node ≥22**.
-Full beginner guide (auth, pairing, channels): [Getting started](https://docs.clawd.bot/start/getting-started)
+Full beginner guide (auth, pairing, channels): [Getting started](https://docs.molt.bot/start/getting-started)
```bash
-clawdbot onboard --install-daemon
+moltbot onboard --install-daemon
-clawdbot gateway --port 18789 --verbose
+moltbot gateway --port 18789 --verbose
# Send a message
-clawdbot message send --to +1234567890 --message "Hello from Clawdbot"
+moltbot message send --to +1234567890 --message "Hello from Moltbot"
# Talk to the assistant (optionally deliver back to any connected channel: WhatsApp/Telegram/Slack/Discord/Google Chat/Signal/iMessage/BlueBubbles/Microsoft Teams/Matrix/Zalo/Zalo Personal/WebChat)
-clawdbot agent --message "Ship checklist" --thinking high
+moltbot agent --message "Ship checklist" --thinking high
```
-Upgrading? [Updating guide](https://docs.clawd.bot/install/updating) (and run `clawdbot doctor`).
+Upgrading? [Updating guide](https://docs.molt.bot/install/updating) (and run `moltbot doctor`).
## Development channels
@@ -78,7 +79,7 @@ Upgrading? [Updating guide](https://docs.clawd.bot/install/updating) (and run `c
- **dev**: moving head of `main`, npm dist-tag `dev` (when published).
Switch channels (git + npm): `clawdbot update --channel stable|beta|dev`.
-Details: [Development channels](https://docs.clawd.bot/install/development-channels).
+Details: [Development channels](https://docs.molt.bot/install/development-channels).
## From source (development)
@@ -92,19 +93,19 @@ pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
-pnpm clawdbot onboard --install-daemon
+pnpm moltbot onboard --install-daemon
# Dev loop (auto-reload on TS changes)
pnpm gateway:watch
```
-Note: `pnpm clawdbot ...` runs TypeScript directly (via `tsx`). `pnpm build` produces `dist/` for running via Node / the packaged `clawdbot` binary.
+Note: `pnpm moltbot ...` runs TypeScript directly (via `tsx`). `pnpm build` produces `dist/` for running via Node / the packaged `moltbot` binary.
## Security defaults (DM access)
Clawdbot connects to real messaging surfaces. Treat inbound DMs as **untrusted input**.
-Full security guide: [Security](https://docs.clawd.bot/gateway/security)
+Full security guide: [Security](https://docs.molt.bot/gateway/security)
Default behavior on Telegram/WhatsApp/Signal/iMessage/Microsoft Teams/Discord/Google Chat/Slack:
- **DM pairing** (`dmPolicy="pairing"` / `channels.discord.dm.policy="pairing"` / `channels.slack.dm.policy="pairing"`): unknown senders receive a short pairing code and the bot does not process their message.
@@ -115,14 +116,14 @@ Run `clawdbot doctor` to surface risky/misconfigured DM policies.
## Highlights
-- **[Local-first Gateway](https://docs.clawd.bot/gateway)** — single control plane for sessions, channels, tools, and events.
-- **[Multi-channel inbox](https://docs.clawd.bot/channels)** — WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, BlueBubbles, Microsoft Teams, Matrix, Zalo, Zalo Personal, WebChat, macOS, iOS/Android.
-- **[Multi-agent routing](https://docs.clawd.bot/gateway/configuration)** — route inbound channels/accounts/peers to isolated agents (workspaces + per-agent sessions).
-- **[Voice Wake](https://docs.clawd.bot/nodes/voicewake) + [Talk Mode](https://docs.clawd.bot/nodes/talk)** — always-on speech for macOS/iOS/Android with ElevenLabs.
-- **[Live Canvas](https://docs.clawd.bot/platforms/mac/canvas)** — agent-driven visual workspace with [A2UI](https://docs.clawd.bot/platforms/mac/canvas#canvas-a2ui).
-- **[First-class tools](https://docs.clawd.bot/tools)** — browser, canvas, nodes, cron, sessions, and Discord/Slack actions.
-- **[Companion apps](https://docs.clawd.bot/platforms/macos)** — macOS menu bar app + iOS/Android [nodes](https://docs.clawd.bot/nodes).
-- **[Onboarding](https://docs.clawd.bot/start/wizard) + [skills](https://docs.clawd.bot/tools/skills)** — wizard-driven setup with bundled/managed/workspace skills.
+- **[Local-first Gateway](https://docs.molt.bot/gateway)** — single control plane for sessions, channels, tools, and events.
+- **[Multi-channel inbox](https://docs.molt.bot/channels)** — WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, BlueBubbles, Microsoft Teams, Matrix, Zalo, Zalo Personal, WebChat, macOS, iOS/Android.
+- **[Multi-agent routing](https://docs.molt.bot/gateway/configuration)** — route inbound channels/accounts/peers to isolated agents (workspaces + per-agent sessions).
+- **[Voice Wake](https://docs.molt.bot/nodes/voicewake) + [Talk Mode](https://docs.molt.bot/nodes/talk)** — always-on speech for macOS/iOS/Android with ElevenLabs.
+- **[Live Canvas](https://docs.molt.bot/platforms/mac/canvas)** — agent-driven visual workspace with [A2UI](https://docs.molt.bot/platforms/mac/canvas#canvas-a2ui).
+- **[First-class tools](https://docs.molt.bot/tools)** — browser, canvas, nodes, cron, sessions, and Discord/Slack actions.
+- **[Companion apps](https://docs.molt.bot/platforms/macos)** — macOS menu bar app + iOS/Android [nodes](https://docs.molt.bot/nodes).
+- **[Onboarding](https://docs.molt.bot/start/wizard) + [skills](https://docs.molt.bot/tools/skills)** — wizard-driven setup with bundled/managed/workspace skills.
## Star History
@@ -131,40 +132,40 @@ Run `clawdbot doctor` to surface risky/misconfigured DM policies.
## Everything we built so far
### Core platform
-- [Gateway WS control plane](https://docs.clawd.bot/gateway) with sessions, presence, config, cron, webhooks, [Control UI](https://docs.clawd.bot/web), and [Canvas host](https://docs.clawd.bot/platforms/mac/canvas#canvas-a2ui).
-- [CLI surface](https://docs.clawd.bot/tools/agent-send): gateway, agent, send, [wizard](https://docs.clawd.bot/start/wizard), and [doctor](https://docs.clawd.bot/gateway/doctor).
-- [Pi agent runtime](https://docs.clawd.bot/concepts/agent) in RPC mode with tool streaming and block streaming.
-- [Session model](https://docs.clawd.bot/concepts/session): `main` for direct chats, group isolation, activation modes, queue modes, reply-back. Group rules: [Groups](https://docs.clawd.bot/concepts/groups).
-- [Media pipeline](https://docs.clawd.bot/nodes/images): images/audio/video, transcription hooks, size caps, temp file lifecycle. Audio details: [Audio](https://docs.clawd.bot/nodes/audio).
+- [Gateway WS control plane](https://docs.molt.bot/gateway) with sessions, presence, config, cron, webhooks, [Control UI](https://docs.molt.bot/web), and [Canvas host](https://docs.molt.bot/platforms/mac/canvas#canvas-a2ui).
+- [CLI surface](https://docs.molt.bot/tools/agent-send): gateway, agent, send, [wizard](https://docs.molt.bot/start/wizard), and [doctor](https://docs.molt.bot/gateway/doctor).
+- [Pi agent runtime](https://docs.molt.bot/concepts/agent) in RPC mode with tool streaming and block streaming.
+- [Session model](https://docs.molt.bot/concepts/session): `main` for direct chats, group isolation, activation modes, queue modes, reply-back. Group rules: [Groups](https://docs.molt.bot/concepts/groups).
+- [Media pipeline](https://docs.molt.bot/nodes/images): images/audio/video, transcription hooks, size caps, temp file lifecycle. Audio details: [Audio](https://docs.molt.bot/nodes/audio).
### Channels
-- [Channels](https://docs.clawd.bot/channels): [WhatsApp](https://docs.clawd.bot/channels/whatsapp) (Baileys), [Telegram](https://docs.clawd.bot/channels/telegram) (grammY), [Slack](https://docs.clawd.bot/channels/slack) (Bolt), [Discord](https://docs.clawd.bot/channels/discord) (discord.js), [Google Chat](https://docs.clawd.bot/channels/googlechat) (Chat API), [Signal](https://docs.clawd.bot/channels/signal) (signal-cli), [iMessage](https://docs.clawd.bot/channels/imessage) (imsg), [BlueBubbles](https://docs.clawd.bot/channels/bluebubbles) (extension), [Microsoft Teams](https://docs.clawd.bot/channels/msteams) (extension), [Matrix](https://docs.clawd.bot/channels/matrix) (extension), [Zalo](https://docs.clawd.bot/channels/zalo) (extension), [Zalo Personal](https://docs.clawd.bot/channels/zalouser) (extension), [WebChat](https://docs.clawd.bot/web/webchat).
-- [Group routing](https://docs.clawd.bot/concepts/group-messages): mention gating, reply tags, per-channel chunking and routing. Channel rules: [Channels](https://docs.clawd.bot/channels).
+- [Channels](https://docs.molt.bot/channels): [WhatsApp](https://docs.molt.bot/channels/whatsapp) (Baileys), [Telegram](https://docs.molt.bot/channels/telegram) (grammY), [Slack](https://docs.molt.bot/channels/slack) (Bolt), [Discord](https://docs.molt.bot/channels/discord) (discord.js), [Google Chat](https://docs.molt.bot/channels/googlechat) (Chat API), [Signal](https://docs.molt.bot/channels/signal) (signal-cli), [iMessage](https://docs.molt.bot/channels/imessage) (imsg), [BlueBubbles](https://docs.molt.bot/channels/bluebubbles) (extension), [Microsoft Teams](https://docs.molt.bot/channels/msteams) (extension), [Matrix](https://docs.molt.bot/channels/matrix) (extension), [Zalo](https://docs.molt.bot/channels/zalo) (extension), [Zalo Personal](https://docs.molt.bot/channels/zalouser) (extension), [WebChat](https://docs.molt.bot/web/webchat).
+- [Group routing](https://docs.molt.bot/concepts/group-messages): mention gating, reply tags, per-channel chunking and routing. Channel rules: [Channels](https://docs.molt.bot/channels).
### Apps + nodes
-- [macOS app](https://docs.clawd.bot/platforms/macos): menu bar control plane, [Voice Wake](https://docs.clawd.bot/nodes/voicewake)/PTT, [Talk Mode](https://docs.clawd.bot/nodes/talk) overlay, [WebChat](https://docs.clawd.bot/web/webchat), debug tools, [remote gateway](https://docs.clawd.bot/gateway/remote) control.
-- [iOS node](https://docs.clawd.bot/platforms/ios): [Canvas](https://docs.clawd.bot/platforms/mac/canvas), [Voice Wake](https://docs.clawd.bot/nodes/voicewake), [Talk Mode](https://docs.clawd.bot/nodes/talk), camera, screen recording, Bonjour pairing.
-- [Android node](https://docs.clawd.bot/platforms/android): [Canvas](https://docs.clawd.bot/platforms/mac/canvas), [Talk Mode](https://docs.clawd.bot/nodes/talk), camera, screen recording, optional SMS.
-- [macOS node mode](https://docs.clawd.bot/nodes): system.run/notify + canvas/camera exposure.
+- [macOS app](https://docs.molt.bot/platforms/macos): menu bar control plane, [Voice Wake](https://docs.molt.bot/nodes/voicewake)/PTT, [Talk Mode](https://docs.molt.bot/nodes/talk) overlay, [WebChat](https://docs.molt.bot/web/webchat), debug tools, [remote gateway](https://docs.molt.bot/gateway/remote) control.
+- [iOS node](https://docs.molt.bot/platforms/ios): [Canvas](https://docs.molt.bot/platforms/mac/canvas), [Voice Wake](https://docs.molt.bot/nodes/voicewake), [Talk Mode](https://docs.molt.bot/nodes/talk), camera, screen recording, Bonjour pairing.
+- [Android node](https://docs.molt.bot/platforms/android): [Canvas](https://docs.molt.bot/platforms/mac/canvas), [Talk Mode](https://docs.molt.bot/nodes/talk), camera, screen recording, optional SMS.
+- [macOS node mode](https://docs.molt.bot/nodes): system.run/notify + canvas/camera exposure.
### Tools + automation
-- [Browser control](https://docs.clawd.bot/tools/browser): dedicated clawd Chrome/Chromium, snapshots, actions, uploads, profiles.
-- [Canvas](https://docs.clawd.bot/platforms/mac/canvas): [A2UI](https://docs.clawd.bot/platforms/mac/canvas#canvas-a2ui) push/reset, eval, snapshot.
-- [Nodes](https://docs.clawd.bot/nodes): camera snap/clip, screen record, [location.get](https://docs.clawd.bot/nodes/location-command), notifications.
-- [Cron + wakeups](https://docs.clawd.bot/automation/cron-jobs); [webhooks](https://docs.clawd.bot/automation/webhook); [Gmail Pub/Sub](https://docs.clawd.bot/automation/gmail-pubsub).
-- [Skills platform](https://docs.clawd.bot/tools/skills): bundled, managed, and workspace skills with install gating + UI.
+- [Browser control](https://docs.molt.bot/tools/browser): dedicated clawd Chrome/Chromium, snapshots, actions, uploads, profiles.
+- [Canvas](https://docs.molt.bot/platforms/mac/canvas): [A2UI](https://docs.molt.bot/platforms/mac/canvas#canvas-a2ui) push/reset, eval, snapshot.
+- [Nodes](https://docs.molt.bot/nodes): camera snap/clip, screen record, [location.get](https://docs.molt.bot/nodes/location-command), notifications.
+- [Cron + wakeups](https://docs.molt.bot/automation/cron-jobs); [webhooks](https://docs.molt.bot/automation/webhook); [Gmail Pub/Sub](https://docs.molt.bot/automation/gmail-pubsub).
+- [Skills platform](https://docs.molt.bot/tools/skills): bundled, managed, and workspace skills with install gating + UI.
### Runtime + safety
-- [Channel routing](https://docs.clawd.bot/concepts/channel-routing), [retry policy](https://docs.clawd.bot/concepts/retry), and [streaming/chunking](https://docs.clawd.bot/concepts/streaming).
-- [Presence](https://docs.clawd.bot/concepts/presence), [typing indicators](https://docs.clawd.bot/concepts/typing-indicators), and [usage tracking](https://docs.clawd.bot/concepts/usage-tracking).
-- [Models](https://docs.clawd.bot/concepts/models), [model failover](https://docs.clawd.bot/concepts/model-failover), and [session pruning](https://docs.clawd.bot/concepts/session-pruning).
-- [Security](https://docs.clawd.bot/gateway/security) and [troubleshooting](https://docs.clawd.bot/channels/troubleshooting).
+- [Channel routing](https://docs.molt.bot/concepts/channel-routing), [retry policy](https://docs.molt.bot/concepts/retry), and [streaming/chunking](https://docs.molt.bot/concepts/streaming).
+- [Presence](https://docs.molt.bot/concepts/presence), [typing indicators](https://docs.molt.bot/concepts/typing-indicators), and [usage tracking](https://docs.molt.bot/concepts/usage-tracking).
+- [Models](https://docs.molt.bot/concepts/models), [model failover](https://docs.molt.bot/concepts/model-failover), and [session pruning](https://docs.molt.bot/concepts/session-pruning).
+- [Security](https://docs.molt.bot/gateway/security) and [troubleshooting](https://docs.molt.bot/channels/troubleshooting).
### Ops + packaging
-- [Control UI](https://docs.clawd.bot/web) + [WebChat](https://docs.clawd.bot/web/webchat) served directly from the Gateway.
-- [Tailscale Serve/Funnel](https://docs.clawd.bot/gateway/tailscale) or [SSH tunnels](https://docs.clawd.bot/gateway/remote) with token/password auth.
-- [Nix mode](https://docs.clawd.bot/install/nix) for declarative config; [Docker](https://docs.clawd.bot/install/docker)-based installs.
-- [Doctor](https://docs.clawd.bot/gateway/doctor) migrations, [logging](https://docs.clawd.bot/logging).
+- [Control UI](https://docs.molt.bot/web) + [WebChat](https://docs.molt.bot/web/webchat) served directly from the Gateway.
+- [Tailscale Serve/Funnel](https://docs.molt.bot/gateway/tailscale) or [SSH tunnels](https://docs.molt.bot/gateway/remote) with token/password auth.
+- [Nix mode](https://docs.molt.bot/install/nix) for declarative config; [Docker](https://docs.molt.bot/install/docker)-based installs.
+- [Doctor](https://docs.molt.bot/gateway/doctor) migrations, [logging](https://docs.molt.bot/logging).
## How it works (short)
@@ -187,12 +188,12 @@ WhatsApp / Telegram / Slack / Discord / Google Chat / Signal / iMessage / BlueBu
## Key subsystems
-- **[Gateway WebSocket network](https://docs.clawd.bot/concepts/architecture)** — single WS control plane for clients, tools, and events (plus ops: [Gateway runbook](https://docs.clawd.bot/gateway)).
-- **[Tailscale exposure](https://docs.clawd.bot/gateway/tailscale)** — Serve/Funnel for the Gateway dashboard + WS (remote access: [Remote](https://docs.clawd.bot/gateway/remote)).
-- **[Browser control](https://docs.clawd.bot/tools/browser)** — clawd‑managed Chrome/Chromium with CDP control.
-- **[Canvas + A2UI](https://docs.clawd.bot/platforms/mac/canvas)** — agent‑driven visual workspace (A2UI host: [Canvas/A2UI](https://docs.clawd.bot/platforms/mac/canvas#canvas-a2ui)).
-- **[Voice Wake](https://docs.clawd.bot/nodes/voicewake) + [Talk Mode](https://docs.clawd.bot/nodes/talk)** — always‑on speech and continuous conversation.
-- **[Nodes](https://docs.clawd.bot/nodes)** — Canvas, camera snap/clip, screen record, `location.get`, notifications, plus macOS‑only `system.run`/`system.notify`.
+- **[Gateway WebSocket network](https://docs.molt.bot/concepts/architecture)** — single WS control plane for clients, tools, and events (plus ops: [Gateway runbook](https://docs.molt.bot/gateway)).
+- **[Tailscale exposure](https://docs.molt.bot/gateway/tailscale)** — Serve/Funnel for the Gateway dashboard + WS (remote access: [Remote](https://docs.molt.bot/gateway/remote)).
+- **[Browser control](https://docs.molt.bot/tools/browser)** — clawd‑managed Chrome/Chromium with CDP control.
+- **[Canvas + A2UI](https://docs.molt.bot/platforms/mac/canvas)** — agent‑driven visual workspace (A2UI host: [Canvas/A2UI](https://docs.molt.bot/platforms/mac/canvas#canvas-a2ui)).
+- **[Voice Wake](https://docs.molt.bot/nodes/voicewake) + [Talk Mode](https://docs.molt.bot/nodes/talk)** — always‑on speech and continuous conversation.
+- **[Nodes](https://docs.molt.bot/nodes)** — Canvas, camera snap/clip, screen record, `location.get`, notifications, plus macOS‑only `system.run`/`system.notify`.
## Tailscale access (Gateway dashboard)
@@ -208,7 +209,7 @@ Notes:
- Funnel refuses to start unless `gateway.auth.mode: "password"` is set.
- Optional: `gateway.tailscale.resetOnExit` to undo Serve/Funnel on shutdown.
-Details: [Tailscale guide](https://docs.clawd.bot/gateway/tailscale) · [Web surfaces](https://docs.clawd.bot/web)
+Details: [Tailscale guide](https://docs.molt.bot/gateway/tailscale) · [Web surfaces](https://docs.molt.bot/web)
## Remote Gateway (Linux is great)
@@ -218,7 +219,7 @@ It’s perfectly fine to run the Gateway on a small Linux instance. Clients (mac
- **Device nodes** run device‑local actions (`system.run`, camera, screen recording, notifications) via `node.invoke`.
In short: exec runs where the Gateway lives; device actions run where the device lives.
-Details: [Remote access](https://docs.clawd.bot/gateway/remote) · [Nodes](https://docs.clawd.bot/nodes) · [Security](https://docs.clawd.bot/gateway/security)
+Details: [Remote access](https://docs.molt.bot/gateway/remote) · [Nodes](https://docs.molt.bot/nodes) · [Security](https://docs.molt.bot/gateway/security)
## macOS permissions via the Gateway protocol
@@ -233,7 +234,7 @@ Elevated bash (host permissions) is separate from macOS TCC:
- Use `/elevated on|off` to toggle per‑session elevated access when enabled + allowlisted.
- Gateway persists the per‑session toggle via `sessions.patch` (WS method) alongside `thinkingLevel`, `verboseLevel`, `model`, `sendPolicy`, and `groupActivation`.
-Details: [Nodes](https://docs.clawd.bot/nodes) · [macOS app](https://docs.clawd.bot/platforms/macos) · [Gateway protocol](https://docs.clawd.bot/concepts/architecture)
+Details: [Nodes](https://docs.molt.bot/nodes) · [macOS app](https://docs.molt.bot/platforms/macos) · [Gateway protocol](https://docs.molt.bot/concepts/architecture)
## Agent to Agent (sessions_* tools)
@@ -242,7 +243,7 @@ Details: [Nodes](https://docs.clawd.bot/nodes) · [macOS app](https://docs.clawd
- `sessions_history` — fetch transcript logs for a session.
- `sessions_send` — message another session; optional reply‑back ping‑pong + announce step (`REPLY_SKIP`, `ANNOUNCE_SKIP`).
-Details: [Session tools](https://docs.clawd.bot/concepts/session-tool)
+Details: [Session tools](https://docs.molt.bot/concepts/session-tool)
## Skills registry (ClawdHub)
@@ -284,13 +285,13 @@ Note: signed builds required for macOS permissions to stick across rebuilds (see
- Voice trigger forwarding + Canvas surface.
- Controlled via `clawdbot nodes …`.
-Runbook: [iOS connect](https://docs.clawd.bot/platforms/ios).
+Runbook: [iOS connect](https://docs.molt.bot/platforms/ios).
### Android node (optional)
- Pairs via the same Bridge + pairing flow as iOS.
- Exposes Canvas, Camera, and Screen capture commands.
-- Runbook: [Android connect](https://docs.clawd.bot/platforms/android).
+- Runbook: [Android connect](https://docs.molt.bot/platforms/android).
## Agent workspace + skills
@@ -310,7 +311,7 @@ Minimal `~/.clawdbot/clawdbot.json` (model + defaults):
}
```
-[Full configuration reference (all keys + examples).](https://docs.clawd.bot/gateway/configuration)
+[Full configuration reference (all keys + examples).](https://docs.molt.bot/gateway/configuration)
## Security model (important)
@@ -318,15 +319,15 @@ Minimal `~/.clawdbot/clawdbot.json` (model + defaults):
- **Group/channel safety:** set `agents.defaults.sandbox.mode: "non-main"` to run **non‑main sessions** (groups/channels) inside per‑session Docker sandboxes; bash then runs in Docker for those sessions.
- **Sandbox defaults:** allowlist `bash`, `process`, `read`, `write`, `edit`, `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`; denylist `browser`, `canvas`, `nodes`, `cron`, `discord`, `gateway`.
-Details: [Security guide](https://docs.clawd.bot/gateway/security) · [Docker + sandboxing](https://docs.clawd.bot/install/docker) · [Sandbox config](https://docs.clawd.bot/gateway/configuration)
+Details: [Security guide](https://docs.molt.bot/gateway/security) · [Docker + sandboxing](https://docs.molt.bot/install/docker) · [Sandbox config](https://docs.molt.bot/gateway/configuration)
-### [WhatsApp](https://docs.clawd.bot/channels/whatsapp)
+### [WhatsApp](https://docs.molt.bot/channels/whatsapp)
- Link the device: `pnpm clawdbot channels login` (stores creds in `~/.clawdbot/credentials`).
- Allowlist who can talk to the assistant via `channels.whatsapp.allowFrom`.
- If `channels.whatsapp.groups` is set, it becomes a group allowlist; include `"*"` to allow all.
-### [Telegram](https://docs.clawd.bot/channels/telegram)
+### [Telegram](https://docs.molt.bot/channels/telegram)
- Set `TELEGRAM_BOT_TOKEN` or `channels.telegram.botToken` (env wins).
- Optional: set `channels.telegram.groups` (with `channels.telegram.groups."*".requireMention`); when set, it is a group allowlist (include `"*"` to allow all). Also `channels.telegram.allowFrom` or `channels.telegram.webhookUrl` as needed.
@@ -341,11 +342,11 @@ Details: [Security guide](https://docs.clawd.bot/gateway/security) · [Docker +
}
```
-### [Slack](https://docs.clawd.bot/channels/slack)
+### [Slack](https://docs.molt.bot/channels/slack)
- Set `SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` (or `channels.slack.botToken` + `channels.slack.appToken`).
-### [Discord](https://docs.clawd.bot/channels/discord)
+### [Discord](https://docs.molt.bot/channels/discord)
- Set `DISCORD_BOT_TOKEN` or `channels.discord.token` (env wins).
- Optional: set `commands.native`, `commands.text`, or `commands.useAccessGroups`, plus `channels.discord.dm.allowFrom`, `channels.discord.guilds`, or `channels.discord.mediaMaxMb` as needed.
@@ -360,21 +361,21 @@ Details: [Security guide](https://docs.clawd.bot/gateway/security) · [Docker +
}
```
-### [Signal](https://docs.clawd.bot/channels/signal)
+### [Signal](https://docs.molt.bot/channels/signal)
- Requires `signal-cli` and a `channels.signal` config section.
-### [iMessage](https://docs.clawd.bot/channels/imessage)
+### [iMessage](https://docs.molt.bot/channels/imessage)
- macOS only; Messages must be signed in.
- If `channels.imessage.groups` is set, it becomes a group allowlist; include `"*"` to allow all.
-### [Microsoft Teams](https://docs.clawd.bot/channels/msteams)
+### [Microsoft Teams](https://docs.molt.bot/channels/msteams)
- Configure a Teams app + Bot Framework, then add a `msteams` config section.
- Allowlist who can talk via `msteams.allowFrom`; group access via `msteams.groupAllowFrom` or `msteams.groupPolicy: "open"`.
-### [WebChat](https://docs.clawd.bot/web/webchat)
+### [WebChat](https://docs.molt.bot/web/webchat)
- Uses the Gateway WebSocket; no separate WebChat port/config.
@@ -392,69 +393,69 @@ Browser control (optional):
## Docs
Use these when you’re past the onboarding flow and want the deeper reference.
-- [Start with the docs index for navigation and “what’s where.”](https://docs.clawd.bot)
-- [Read the architecture overview for the gateway + protocol model.](https://docs.clawd.bot/concepts/architecture)
-- [Use the full configuration reference when you need every key and example.](https://docs.clawd.bot/gateway/configuration)
-- [Run the Gateway by the book with the operational runbook.](https://docs.clawd.bot/gateway)
-- [Learn how the Control UI/Web surfaces work and how to expose them safely.](https://docs.clawd.bot/web)
-- [Understand remote access over SSH tunnels or tailnets.](https://docs.clawd.bot/gateway/remote)
-- [Follow the onboarding wizard flow for a guided setup.](https://docs.clawd.bot/start/wizard)
-- [Wire external triggers via the webhook surface.](https://docs.clawd.bot/automation/webhook)
-- [Set up Gmail Pub/Sub triggers.](https://docs.clawd.bot/automation/gmail-pubsub)
-- [Learn the macOS menu bar companion details.](https://docs.clawd.bot/platforms/mac/menu-bar)
-- [Platform guides: Windows (WSL2)](https://docs.clawd.bot/platforms/windows), [Linux](https://docs.clawd.bot/platforms/linux), [macOS](https://docs.clawd.bot/platforms/macos), [iOS](https://docs.clawd.bot/platforms/ios), [Android](https://docs.clawd.bot/platforms/android)
-- [Debug common failures with the troubleshooting guide.](https://docs.clawd.bot/channels/troubleshooting)
-- [Review security guidance before exposing anything.](https://docs.clawd.bot/gateway/security)
+- [Start with the docs index for navigation and “what’s where.”](https://docs.molt.bot)
+- [Read the architecture overview for the gateway + protocol model.](https://docs.molt.bot/concepts/architecture)
+- [Use the full configuration reference when you need every key and example.](https://docs.molt.bot/gateway/configuration)
+- [Run the Gateway by the book with the operational runbook.](https://docs.molt.bot/gateway)
+- [Learn how the Control UI/Web surfaces work and how to expose them safely.](https://docs.molt.bot/web)
+- [Understand remote access over SSH tunnels or tailnets.](https://docs.molt.bot/gateway/remote)
+- [Follow the onboarding wizard flow for a guided setup.](https://docs.molt.bot/start/wizard)
+- [Wire external triggers via the webhook surface.](https://docs.molt.bot/automation/webhook)
+- [Set up Gmail Pub/Sub triggers.](https://docs.molt.bot/automation/gmail-pubsub)
+- [Learn the macOS menu bar companion details.](https://docs.molt.bot/platforms/mac/menu-bar)
+- [Platform guides: Windows (WSL2)](https://docs.molt.bot/platforms/windows), [Linux](https://docs.molt.bot/platforms/linux), [macOS](https://docs.molt.bot/platforms/macos), [iOS](https://docs.molt.bot/platforms/ios), [Android](https://docs.molt.bot/platforms/android)
+- [Debug common failures with the troubleshooting guide.](https://docs.molt.bot/channels/troubleshooting)
+- [Review security guidance before exposing anything.](https://docs.molt.bot/gateway/security)
## Advanced docs (discovery + control)
-- [Discovery + transports](https://docs.clawd.bot/gateway/discovery)
-- [Bonjour/mDNS](https://docs.clawd.bot/gateway/bonjour)
-- [Gateway pairing](https://docs.clawd.bot/gateway/pairing)
-- [Remote gateway README](https://docs.clawd.bot/gateway/remote-gateway-readme)
-- [Control UI](https://docs.clawd.bot/web/control-ui)
-- [Dashboard](https://docs.clawd.bot/web/dashboard)
+- [Discovery + transports](https://docs.molt.bot/gateway/discovery)
+- [Bonjour/mDNS](https://docs.molt.bot/gateway/bonjour)
+- [Gateway pairing](https://docs.molt.bot/gateway/pairing)
+- [Remote gateway README](https://docs.molt.bot/gateway/remote-gateway-readme)
+- [Control UI](https://docs.molt.bot/web/control-ui)
+- [Dashboard](https://docs.molt.bot/web/dashboard)
## Operations & troubleshooting
-- [Health checks](https://docs.clawd.bot/gateway/health)
-- [Gateway lock](https://docs.clawd.bot/gateway/gateway-lock)
-- [Background process](https://docs.clawd.bot/gateway/background-process)
-- [Browser troubleshooting (Linux)](https://docs.clawd.bot/tools/browser-linux-troubleshooting)
-- [Logging](https://docs.clawd.bot/logging)
+- [Health checks](https://docs.molt.bot/gateway/health)
+- [Gateway lock](https://docs.molt.bot/gateway/gateway-lock)
+- [Background process](https://docs.molt.bot/gateway/background-process)
+- [Browser troubleshooting (Linux)](https://docs.molt.bot/tools/browser-linux-troubleshooting)
+- [Logging](https://docs.molt.bot/logging)
## Deep dives
-- [Agent loop](https://docs.clawd.bot/concepts/agent-loop)
-- [Presence](https://docs.clawd.bot/concepts/presence)
-- [TypeBox schemas](https://docs.clawd.bot/concepts/typebox)
-- [RPC adapters](https://docs.clawd.bot/reference/rpc)
-- [Queue](https://docs.clawd.bot/concepts/queue)
+- [Agent loop](https://docs.molt.bot/concepts/agent-loop)
+- [Presence](https://docs.molt.bot/concepts/presence)
+- [TypeBox schemas](https://docs.molt.bot/concepts/typebox)
+- [RPC adapters](https://docs.molt.bot/reference/rpc)
+- [Queue](https://docs.molt.bot/concepts/queue)
## Workspace & skills
-- [Skills config](https://docs.clawd.bot/tools/skills-config)
-- [Default AGENTS](https://docs.clawd.bot/reference/AGENTS.default)
-- [Templates: AGENTS](https://docs.clawd.bot/reference/templates/AGENTS)
-- [Templates: BOOTSTRAP](https://docs.clawd.bot/reference/templates/BOOTSTRAP)
-- [Templates: IDENTITY](https://docs.clawd.bot/reference/templates/IDENTITY)
-- [Templates: SOUL](https://docs.clawd.bot/reference/templates/SOUL)
-- [Templates: TOOLS](https://docs.clawd.bot/reference/templates/TOOLS)
-- [Templates: USER](https://docs.clawd.bot/reference/templates/USER)
+- [Skills config](https://docs.molt.bot/tools/skills-config)
+- [Default AGENTS](https://docs.molt.bot/reference/AGENTS.default)
+- [Templates: AGENTS](https://docs.molt.bot/reference/templates/AGENTS)
+- [Templates: BOOTSTRAP](https://docs.molt.bot/reference/templates/BOOTSTRAP)
+- [Templates: IDENTITY](https://docs.molt.bot/reference/templates/IDENTITY)
+- [Templates: SOUL](https://docs.molt.bot/reference/templates/SOUL)
+- [Templates: TOOLS](https://docs.molt.bot/reference/templates/TOOLS)
+- [Templates: USER](https://docs.molt.bot/reference/templates/USER)
## Platform internals
-- [macOS dev setup](https://docs.clawd.bot/platforms/mac/dev-setup)
-- [macOS menu bar](https://docs.clawd.bot/platforms/mac/menu-bar)
-- [macOS voice wake](https://docs.clawd.bot/platforms/mac/voicewake)
-- [iOS node](https://docs.clawd.bot/platforms/ios)
-- [Android node](https://docs.clawd.bot/platforms/android)
-- [Windows (WSL2)](https://docs.clawd.bot/platforms/windows)
-- [Linux app](https://docs.clawd.bot/platforms/linux)
+- [macOS dev setup](https://docs.molt.bot/platforms/mac/dev-setup)
+- [macOS menu bar](https://docs.molt.bot/platforms/mac/menu-bar)
+- [macOS voice wake](https://docs.molt.bot/platforms/mac/voicewake)
+- [iOS node](https://docs.molt.bot/platforms/ios)
+- [Android node](https://docs.molt.bot/platforms/android)
+- [Windows (WSL2)](https://docs.molt.bot/platforms/windows)
+- [Linux app](https://docs.molt.bot/platforms/linux)
## Email hooks (Gmail)
-- [docs.clawd.bot/gmail-pubsub](https://docs.clawd.bot/automation/gmail-pubsub)
+- [docs.molt.bot/gmail-pubsub](https://docs.molt.bot/automation/gmail-pubsub)
## Clawd
diff --git a/SECURITY.md b/SECURITY.md
index 5bc9c9112..1d0849a54 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -11,7 +11,7 @@ If you believe you've found a security issue in Clawdbot, please report it priva
For threat model + hardening guidance (including `clawdbot security audit --deep` and `--fix`), see:
-- `https://docs.clawd.bot/gateway/security`
+- `https://docs.molt.bot/gateway/security`
### Web Interface Safety
diff --git a/appcast.xml b/appcast.xml
index 8158ac244..df325a7b6 100644
--- a/appcast.xml
+++ b/appcast.xml
@@ -28,28 +28,28 @@
Clawdbot 2026.1.24
Highlights
-- Providers: Ollama discovery + docs; Venice guide upgrades + cross-links. (#1606) Thanks @abhaymundhara. https://docs.clawd.bot/providers/ollama https://docs.clawd.bot/providers/venice
+- Providers: Ollama discovery + docs; Venice guide upgrades + cross-links. (#1606) Thanks @abhaymundhara. https://docs.molt.bot/providers/ollama https://docs.molt.bot/providers/venice
- Channels: LINE plugin (Messaging API) with rich replies + quick replies. (#1630) Thanks @plum-dawg.
-- TTS: Edge fallback (keyless) +
/tts auto modes. (#1668, #1667) Thanks @steipete, @sebslight. https://docs.clawd.bot/tts
-- Exec approvals: approve in-chat via
/approve across all channels (including plugins). (#1621) Thanks @czekaj. https://docs.clawd.bot/tools/exec-approvals https://docs.clawd.bot/tools/slash-commands
-- Telegram: DM topics as separate sessions + outbound link preview toggle. (#1597, #1700) Thanks @rohannagpal, @zerone0x. https://docs.clawd.bot/channels/telegram
+- TTS: Edge fallback (keyless) +
/tts auto modes. (#1668, #1667) Thanks @steipete, @sebslight. https://docs.molt.bot/tts
+- Exec approvals: approve in-chat via
/approve across all channels (including plugins). (#1621) Thanks @czekaj. https://docs.molt.bot/tools/exec-approvals https://docs.molt.bot/tools/slash-commands
+- Telegram: DM topics as separate sessions + outbound link preview toggle. (#1597, #1700) Thanks @rohannagpal, @zerone0x. https://docs.molt.bot/channels/telegram
Changes
- Channels: add LINE plugin (Messaging API) with rich replies, quick replies, and plugin HTTP registry. (#1630) Thanks @plum-dawg.
-- TTS: add Edge TTS provider fallback, defaulting to keyless Edge with MP3 retry on format failures. (#1668) Thanks @steipete. https://docs.clawd.bot/tts
-- TTS: add auto mode enum (off/always/inbound/tagged) with per-session
/tts override. (#1667) Thanks @sebslight. https://docs.clawd.bot/tts
+- TTS: add Edge TTS provider fallback, defaulting to keyless Edge with MP3 retry on format failures. (#1668) Thanks @steipete. https://docs.molt.bot/tts
+- TTS: add auto mode enum (off/always/inbound/tagged) with per-session
/tts override. (#1667) Thanks @sebslight. https://docs.molt.bot/tts
- Telegram: treat DM topics as separate sessions and keep DM history limits stable with thread suffixes. (#1597) Thanks @rohannagpal.
-- Telegram: add
channels.telegram.linkPreview to toggle outbound link previews. (#1700) Thanks @zerone0x. https://docs.clawd.bot/channels/telegram
-- Web search: add Brave freshness filter parameter for time-scoped results. (#1688) Thanks @JonUleis. https://docs.clawd.bot/tools/web
+- Telegram: add
channels.telegram.linkPreview to toggle outbound link previews. (#1700) Thanks @zerone0x. https://docs.molt.bot/channels/telegram
+- Web search: add Brave freshness filter parameter for time-scoped results. (#1688) Thanks @JonUleis. https://docs.molt.bot/tools/web
- UI: refresh Control UI dashboard design system (typography, colors, spacing). (#1786) Thanks @mousberg.
-- Exec approvals: forward approval prompts to chat with
/approve for all channels (including plugins). (#1621) Thanks @czekaj. https://docs.clawd.bot/tools/exec-approvals https://docs.clawd.bot/tools/slash-commands
+- Exec approvals: forward approval prompts to chat with
/approve for all channels (including plugins). (#1621) Thanks @czekaj. https://docs.molt.bot/tools/exec-approvals https://docs.molt.bot/tools/slash-commands
- Gateway: expose config.patch in the gateway tool with safe partial updates + restart sentinel. (#1653) Thanks @Glucksberg.
-- Diagnostics: add diagnostic flags for targeted debug logs (config + env override). https://docs.clawd.bot/diagnostics/flags
+- Diagnostics: add diagnostic flags for targeted debug logs (config + env override). https://docs.molt.bot/diagnostics/flags
- Docs: expand FAQ (migration, scheduling, concurrency, model recommendations, OpenAI subscription auth, Pi sizing, hackable install, docs SSL workaround).
- Docs: add verbose installer troubleshooting guidance.
- Docs: add macOS VM guide with local/hosted options + VPS/nodes guidance. (#1693) Thanks @f-trycua.
-- Docs: add Bedrock EC2 instance role setup + IAM steps. (#1625) Thanks @sergical. https://docs.clawd.bot/bedrock
+- Docs: add Bedrock EC2 instance role setup + IAM steps. (#1625) Thanks @sergical. https://docs.molt.bot/bedrock
- Docs: update Fly.io guide notes.
- Dev: add prek pre-commit hooks + dependabot config for weekly updates. (#1720) Thanks @dguido.
@@ -61,10 +61,10 @@
Web UI: hide internal message_id hints in chat bubbles.
Gateway: allow Control UI token-only auth to skip device pairing even when device identity is present (gateway.controlUi.allowInsecureAuth). (#1679) Thanks @steipete.
Matrix: decrypt E2EE media attachments with preflight size guard. (#1744) Thanks @araa47.
-BlueBubbles: route phone-number targets to DMs, avoid leaking routing IDs, and auto-create missing DMs (Private API required). (#1751) Thanks @tyler6204. https://docs.clawd.bot/channels/bluebubbles
+BlueBubbles: route phone-number targets to DMs, avoid leaking routing IDs, and auto-create missing DMs (Private API required). (#1751) Thanks @tyler6204. https://docs.molt.bot/channels/bluebubbles
BlueBubbles: keep part-index GUIDs in reply tags when short IDs are missing.
Signal: repair reaction sends (group/UUID targets + CLI author flags). (#1651) Thanks @vilkasdev.
-Signal: add configurable signal-cli startup timeout + external daemon mode docs. (#1677) https://docs.clawd.bot/channels/signal
+Signal: add configurable signal-cli startup timeout + external daemon mode docs. (#1677) https://docs.molt.bot/channels/signal
Telegram: set fetch duplex="half" for uploads on Node 22 to avoid sendPhoto failures. (#1684) Thanks @commdata2338.
Telegram: use wrapped fetch for long-polling on Node to normalize AbortSignal handling. (#1639)
Telegram: honor per-account proxy for outbound API calls. (#1774) Thanks @radek-paclt.
diff --git a/apps/macos/Sources/Clawdbot/CLIInstaller.swift b/apps/macos/Sources/Clawdbot/CLIInstaller.swift
index b9113e27a..c020ccef9 100644
--- a/apps/macos/Sources/Clawdbot/CLIInstaller.swift
+++ b/apps/macos/Sources/Clawdbot/CLIInstaller.swift
@@ -70,7 +70,7 @@ enum CLIInstaller {
let escapedVersion = self.shellEscape(version)
let escapedPrefix = self.shellEscape(prefix)
let script = """
- curl -fsSL https://clawd.bot/install-cli.sh | \
+ curl -fsSL https://molt.bot/install-cli.sh | \
bash -s -- --json --no-onboard --prefix \(escapedPrefix) --version \(escapedVersion)
"""
return ["/bin/bash", "-lc", script]
diff --git a/assets/chrome-extension/options.html b/assets/chrome-extension/options.html
index f66608f43..7cd4e27ce 100644
--- a/assets/chrome-extension/options.html
+++ b/assets/chrome-extension/options.html
@@ -171,7 +171,7 @@
Start Clawdbot’s browser relay on this machine (Gateway or node host), then click the toolbar button again.
- Full guide (install, remote Gateway, security): docs.clawd.bot/tools/chrome-extension
+ Full guide (install, remote Gateway, security): docs.molt.bot/tools/chrome-extension
diff --git a/docker-setup.sh b/docker-setup.sh
index 776541827..906bbb09c 100755
--- a/docker-setup.sh
+++ b/docker-setup.sh
@@ -191,7 +191,7 @@ echo "Telegram (bot token):"
echo " ${COMPOSE_HINT} run --rm clawdbot-cli providers add --provider telegram --token "
echo "Discord (bot token):"
echo " ${COMPOSE_HINT} run --rm clawdbot-cli providers add --provider discord --token "
-echo "Docs: https://docs.clawd.bot/providers"
+echo "Docs: https://docs.molt.bot/providers"
echo ""
echo "==> Starting gateway"
diff --git a/docs/CNAME b/docs/CNAME
index afc13c7fe..43ca6ac7f 100644
--- a/docs/CNAME
+++ b/docs/CNAME
@@ -1 +1 @@
-clawdbot.com
+docs.molt.bot
diff --git a/docs/channels/googlechat.md b/docs/channels/googlechat.md
index 00cfa7c72..298e6f9ab 100644
--- a/docs/channels/googlechat.md
+++ b/docs/channels/googlechat.md
@@ -25,7 +25,7 @@ Status: ready for DMs + spaces via Google Chat API webhooks (HTTP only).
5) Create a Google Chat app in the [Google Cloud Console Chat Configuration](https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat):
- Fill in the **Application info**:
- **App name**: (e.g. `Clawdbot`)
- - **Avatar URL**: (e.g. `https://clawd.bot/logo.png`)
+ - **Avatar URL**: (e.g. `https://molt.bot/logo.png`)
- **Description**: (e.g. `Personal AI Assistant`)
- Enable **Interactive features**.
- Under **Functionality**, check **Join spaces and group conversations**.
diff --git a/docs/cli/browser.md b/docs/cli/browser.md
index 6d54b8a10..d0f1d5a7d 100644
--- a/docs/cli/browser.md
+++ b/docs/cli/browser.md
@@ -53,7 +53,7 @@ clawdbot browser --browser-profile work tabs
```bash
clawdbot browser tabs
-clawdbot browser open https://docs.clawd.bot
+clawdbot browser open https://docs.molt.bot
clawdbot browser focus
clawdbot browser close
```
diff --git a/docs/cli/hooks.md b/docs/cli/hooks.md
index 825550b05..ee867be69 100644
--- a/docs/cli/hooks.md
+++ b/docs/cli/hooks.md
@@ -85,7 +85,7 @@ Details:
Source: clawdbot-bundled
Path: /path/to/clawdbot/hooks/bundled/session-memory/HOOK.md
Handler: /path/to/clawdbot/hooks/bundled/session-memory/handler.ts
- Homepage: https://docs.clawd.bot/hooks#session-memory
+ Homepage: https://docs.molt.bot/hooks#session-memory
Events: command:new
Requirements:
diff --git a/docs/concepts/markdown-formatting.md b/docs/concepts/markdown-formatting.md
index 91799a3e9..5c92669d2 100644
--- a/docs/concepts/markdown-formatting.md
+++ b/docs/concepts/markdown-formatting.md
@@ -39,7 +39,7 @@ stay consistent across channels.
Input Markdown:
```markdown
-Hello **world** — see [docs](https://docs.clawd.bot).
+Hello **world** — see [docs](https://docs.molt.bot).
```
IR (schematic):
@@ -51,7 +51,7 @@ IR (schematic):
{ "start": 6, "end": 11, "style": "bold" }
],
"links": [
- { "start": 19, "end": 23, "href": "https://docs.clawd.bot" }
+ { "start": 19, "end": 23, "href": "https://docs.molt.bot" }
]
}
```
diff --git a/docs/gateway/security/index.md b/docs/gateway/security/index.md
index 5f5990b9e..9b9090d36 100644
--- a/docs/gateway/security/index.md
+++ b/docs/gateway/security/index.md
@@ -750,7 +750,7 @@ Mario asking for find ~
Found a vulnerability in Clawdbot? Please report responsibly:
-1. Email: security@clawd.bot
+1. Email: security@molt.bot
2. Don't post publicly until fixed
3. We'll credit you (unless you prefer anonymity)
diff --git a/docs/gateway/troubleshooting.md b/docs/gateway/troubleshooting.md
index 697654b80..4f192b40f 100644
--- a/docs/gateway/troubleshooting.md
+++ b/docs/gateway/troubleshooting.md
@@ -501,12 +501,12 @@ upgrades in place and rewrites the gateway service to point at the new install.
Switch **to git install**:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git --no-onboard
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git --no-onboard
```
Switch **to npm global**:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
```
Notes:
diff --git a/docs/help/faq.md b/docs/help/faq.md
index 554597165..55db3e637 100644
--- a/docs/help/faq.md
+++ b/docs/help/faq.md
@@ -18,7 +18,7 @@ Quick answers plus deeper troubleshooting for real-world setups (local dev, VPS,
- [It is stuck on "wake up my friend" / onboarding will not hatch. What now?](#it-is-stuck-on-wake-up-my-friend-onboarding-will-not-hatch-what-now)
- [Can I migrate my setup to a new machine (Mac mini) without redoing onboarding?](#can-i-migrate-my-setup-to-a-new-machine-mac-mini-without-redoing-onboarding)
- [Where do I see what’s new in the latest version?](#where-do-i-see-whats-new-in-the-latest-version)
- - [I can't access docs.clawd.bot (SSL error). What now?](#i-cant-access-docsclawdbot-ssl-error-what-now)
+ - [I can't access docs.molt.bot (SSL error). What now?](#i-cant-access-docsclawdbot-ssl-error-what-now)
- [What’s the difference between stable and beta?](#whats-the-difference-between-stable-and-beta)
- [How do I install the beta version, and what’s the difference between beta and dev?](#how-do-i-install-the-beta-version-and-whats-the-difference-between-beta-and-dev)
- [How do I try the latest bits?](#how-do-i-try-the-latest-bits)
@@ -258,7 +258,7 @@ setup (PATH, services, permissions, auth files). Give them the **full source che
the hackable (git) install:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git
```
This installs Clawdbot **from a git checkout**, so the agent can read the code + docs and
@@ -296,7 +296,7 @@ Install docs: [Install](/install), [Installer flags](/install/installer), [Updat
The repo recommends running from source and using the onboarding wizard:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
clawdbot onboard --install-daemon
```
@@ -416,8 +416,8 @@ section is the latest shipped version. Entries are grouped by **Highlights**, **
### I cant access docsclawdbot SSL error What now
-Some Comcast/Xfinity connections incorrectly block `docs.clawd.bot` via Xfinity
-Advanced Security. Disable it or allowlist `docs.clawd.bot`, then retry. More
+Some Comcast/Xfinity connections incorrectly block `docs.molt.bot` via Xfinity
+Advanced Security. Disable it or allowlist `docs.molt.bot`, then retry. More
detail: [Troubleshooting](/help/troubleshooting#docsclawdbot-shows-an-ssl-error-comcastxfinity).
Please help us unblock it by reporting here: https://spa.xfinity.com/check_url_status.
@@ -445,15 +445,15 @@ https://github.com/clawdbot/clawdbot/blob/main/CHANGELOG.md
One‑liners (macOS/Linux):
```bash
-curl -fsSL --proto '=https' --tlsv1.2 https://clawd.bot/install.sh | bash -s -- --beta
+curl -fsSL --proto '=https' --tlsv1.2 https://molt.bot/install.sh | bash -s -- --beta
```
```bash
-curl -fsSL --proto '=https' --tlsv1.2 https://clawd.bot/install.sh | bash -s -- --install-method git
+curl -fsSL --proto '=https' --tlsv1.2 https://molt.bot/install.sh | bash -s -- --install-method git
```
Windows installer (PowerShell):
-https://clawd.bot/install.ps1
+https://molt.bot/install.ps1
More detail: [Development channels](/install/development-channels) and [Installer flags](/install/installer).
@@ -478,7 +478,7 @@ This switches to the `main` branch and updates from source.
2) **Hackable install (from the installer site):**
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git
```
That gives you a local repo you can edit, then update via git.
@@ -498,19 +498,19 @@ Docs: [Update](/cli/update), [Development channels](/install/development-channel
Re-run the installer with **verbose output**:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --verbose
+curl -fsSL https://molt.bot/install.sh | bash -s -- --verbose
```
Beta install with verbose:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --beta --verbose
+curl -fsSL https://molt.bot/install.sh | bash -s -- --beta --verbose
```
For a hackable (git) install:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git --verbose
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git --verbose
```
More options: [Installer flags](/install/installer).
@@ -541,7 +541,7 @@ Use the **hackable (git) install** so you have the full source and docs locally,
your bot (or Claude/Codex) *from that folder* so it can read the repo and answer precisely.
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git
```
More detail: [Install](/install) and [Installer flags](/install/installer).
@@ -946,7 +946,7 @@ Advantages:
- **Always-on Gateway** (run on a VPS, interact from anywhere)
- **Nodes** for local browser/screen/camera/exec
-Showcase: https://clawd.bot/showcase
+Showcase: https://molt.bot/showcase
## Skills and automation
diff --git a/docs/help/troubleshooting.md b/docs/help/troubleshooting.md
index 4a7d2ced3..b142de4eb 100644
--- a/docs/help/troubleshooting.md
+++ b/docs/help/troubleshooting.md
@@ -38,13 +38,13 @@ Almost always a Node/npm PATH issue. Start here:
Re-run the installer in verbose mode to see the full trace and npm output:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --verbose
+curl -fsSL https://molt.bot/install.sh | bash -s -- --verbose
```
For beta installs:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --beta --verbose
+curl -fsSL https://molt.bot/install.sh | bash -s -- --beta --verbose
```
You can also set `CLAWDBOT_VERBOSE=1` instead of the flag.
@@ -59,10 +59,10 @@ You can also set `CLAWDBOT_VERBOSE=1` instead of the flag.
- [Gateway troubleshooting](/gateway/troubleshooting)
- [Control UI](/web/control-ui#insecure-http)
-### `docs.clawd.bot` shows an SSL error (Comcast/Xfinity)
+### `docs.molt.bot` shows an SSL error (Comcast/Xfinity)
-Some Comcast/Xfinity connections block `docs.clawd.bot` via Xfinity Advanced Security.
-Disable Advanced Security or add `docs.clawd.bot` to the allowlist, then retry.
+Some Comcast/Xfinity connections block `docs.molt.bot` via Xfinity Advanced Security.
+Disable Advanced Security or add `docs.molt.bot` to the allowlist, then retry.
- Xfinity Advanced Security help: https://www.xfinity.com/support/articles/using-xfinity-xfi-advanced-security
- Quick sanity checks: try a mobile hotspot or VPN to confirm it’s ISP-level filtering
diff --git a/docs/hooks.md b/docs/hooks.md
index 9870dda88..880c31f19 100644
--- a/docs/hooks.md
+++ b/docs/hooks.md
@@ -124,7 +124,7 @@ The `HOOK.md` file contains metadata in YAML frontmatter plus Markdown documenta
---
name: my-hook
description: "Short description of what this hook does"
-homepage: https://docs.clawd.bot/hooks#my-hook
+homepage: https://docs.molt.bot/hooks#my-hook
metadata: {"clawdbot":{"emoji":"🔗","events":["command:new"],"requires":{"bins":["node"]}}}
---
diff --git a/docs/install/index.md b/docs/install/index.md
index 7ccab0ca8..f5f5b7476 100644
--- a/docs/install/index.md
+++ b/docs/install/index.md
@@ -12,13 +12,13 @@ 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://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
```
Windows (PowerShell):
```powershell
-iwr -useb https://clawd.bot/install.ps1 | iex
+iwr -useb https://molt.bot/install.ps1 | iex
```
Next step (if you skipped onboarding):
@@ -40,13 +40,13 @@ clawdbot onboard --install-daemon
Installs `clawdbot` globally via npm and runs onboarding.
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
```
Installer flags:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --help
+curl -fsSL https://molt.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://clawd.bot/install.sh | bash -s -- --no-onboard
+curl -fsSL https://molt.bot/install.sh | bash -s -- --no-onboard
```
### 2) Global install (manual)
@@ -123,10 +123,10 @@ The installer supports two methods:
```bash
# Explicit npm
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method npm
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method npm
# Install from GitHub (source checkout)
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --install-method git
+curl -fsSL https://molt.bot/install.sh | bash -s -- --install-method git
```
Common flags:
diff --git a/docs/install/installer.md b/docs/install/installer.md
index 7cd485756..d60f972d4 100644
--- a/docs/install/installer.md
+++ b/docs/install/installer.md
@@ -1,29 +1,29 @@
---
summary: "How the installer scripts work (install.sh + install-cli.sh), flags, and automation"
read_when:
- - You want to understand `clawd.bot/install.sh`
+ - You want to understand `molt.bot/install.sh`
- You want to automate installs (CI / headless)
- You want to install from a GitHub checkout
---
# Installer internals
-Clawdbot ships two installer scripts (served from `clawd.bot`):
+Clawdbot ships two installer scripts (served from `molt.bot`):
-- `https://clawd.bot/install.sh` — “recommended” installer (global npm install by default; can also install from a GitHub checkout)
-- `https://clawd.bot/install-cli.sh` — non-root-friendly CLI installer (installs into a prefix with its own Node)
- - `https://clawd.bot/install.ps1` — Windows PowerShell installer (npm by default; optional git install)
+- `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)
To see the current flags/behavior, run:
```bash
-curl -fsSL https://clawd.bot/install.sh | bash -s -- --help
+curl -fsSL https://molt.bot/install.sh | bash -s -- --help
```
Windows (PowerShell) help:
```powershell
-& ([scriptblock]::Create((iwr -useb https://clawd.bot/install.ps1))) -?
+& ([scriptblock]::Create((iwr -useb https://molt.bot/install.ps1))) -?
```
If the installer completes but `clawdbot` is not found in a new terminal, it’s usually a Node/npm PATH issue. See: [Install](/install#nodejs--npm-path-sanity).
@@ -45,7 +45,7 @@ What it does (high level):
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://clawd.bot/install.sh | bash
+SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL https://molt.bot/install.sh | bash
```
### Discoverability / “git install” prompt
@@ -78,7 +78,7 @@ This script installs `clawdbot` into a prefix (default: `~/.clawdbot`) and also
Help:
```bash
-curl -fsSL https://clawd.bot/install-cli.sh | bash -s -- --help
+curl -fsSL https://molt.bot/install-cli.sh | bash -s -- --help
```
## install.ps1 (Windows PowerShell)
@@ -94,15 +94,15 @@ What it does (high level):
Examples:
```powershell
-iwr -useb https://clawd.bot/install.ps1 | iex
+iwr -useb https://molt.bot/install.ps1 | iex
```
```powershell
-iwr -useb https://clawd.bot/install.ps1 | iex -InstallMethod git
+iwr -useb https://molt.bot/install.ps1 | iex -InstallMethod git
```
```powershell
-iwr -useb https://clawd.bot/install.ps1 | iex -InstallMethod git -GitDir "C:\\clawdbot"
+iwr -useb https://molt.bot/install.ps1 | iex -InstallMethod git -GitDir "C:\\clawdbot"
```
Environment variables:
diff --git a/docs/install/uninstall.md b/docs/install/uninstall.md
index 5849a6780..1c8e65919 100644
--- a/docs/install/uninstall.md
+++ b/docs/install/uninstall.md
@@ -113,7 +113,7 @@ If you used a profile, delete the matching task name and `~\.clawdbot-\
### Normal install (install.sh / npm / pnpm / bun)
-If you used `https://clawd.bot/install.sh` or `install.ps1`, the CLI was installed with `npm install -g clawdbot@latest`.
+If you used `https://molt.bot/install.sh` or `install.ps1`, the CLI was installed with `npm install -g clawdbot@latest`.
Remove it with `npm rm -g clawdbot` (or `pnpm remove -g` / `bun remove -g` if you installed that way).
### Source checkout (git clone)
diff --git a/docs/install/updating.md b/docs/install/updating.md
index 1d39fa6e4..6cca10566 100644
--- a/docs/install/updating.md
+++ b/docs/install/updating.md
@@ -1,32 +1,33 @@
---
-summary: "Updating Clawdbot safely (global install or source), plus rollback strategy"
+summary: "Updating Moltbot safely (global install or source), plus rollback strategy"
read_when:
- - Updating Clawdbot
+ - Updating Moltbot
- Something breaks after an update
---
# Updating
-Clawdbot is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart (or use `clawdbot update`, which restarts) → verify.
+Moltbot is moving fast (pre “1.0”). Treat updates like shipping infra: update → run checks → restart (or use `moltbot 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 `clawdbot doctor` when
+detects existing installs, upgrades in place, and runs `moltbot doctor` when
needed.
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.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://clawd.bot/install.sh | bash -s -- --install-method git --no-onboard
+ curl -fsSL https://molt.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 clawdbot@latest` under the hood.
+- For **global installs**, the script uses `npm install -g moltbot@latest` under the hood.
+- Legacy note: `clawdbot` remains available as a compatibility shim.
## Before you update
@@ -42,20 +43,20 @@ Notes:
Global install (pick one):
```bash
-npm i -g clawdbot@latest
+npm i -g moltbot@latest
```
```bash
-pnpm add -g clawdbot@latest
+pnpm add -g moltbot@latest
```
We do **not** recommend Bun for the Gateway runtime (WhatsApp/Telegram bugs).
To switch update channels (git + npm installs):
```bash
-clawdbot update --channel beta
-clawdbot update --channel dev
-clawdbot update --channel stable
+moltbot update --channel beta
+moltbot update --channel dev
+moltbot update --channel stable
```
Use `--tag ` for a one-off install tag/version.
@@ -67,36 +68,36 @@ Note: on npm installs, the gateway logs an update hint on startup (checks the cu
Then:
```bash
-clawdbot doctor
-clawdbot gateway restart
-clawdbot health
+moltbot doctor
+moltbot gateway restart
+moltbot health
```
Notes:
-- If your Gateway runs as a service, `clawdbot gateway restart` is preferred over killing PIDs.
+- If your Gateway runs as a service, `moltbot gateway restart` is preferred over killing PIDs.
- If you’re pinned to a specific version, see “Rollback / pinning” below.
-## Update (`clawdbot update`)
+## Update (`moltbot update`)
For **source installs** (git checkout), prefer:
```bash
-clawdbot update
+moltbot 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 `clawdbot doctor`.
+- Installs deps, builds, builds the Control UI, and runs `moltbot doctor`.
- Restarts the gateway by default (use `--no-restart` to skip).
-If you installed via **npm/pnpm** (no git metadata), `clawdbot 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), `moltbot 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 `clawdbot update` (git checkout only).
+1) Runs the same source-update flow as `moltbot 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.
@@ -109,7 +110,7 @@ From the repo checkout:
Preferred:
```bash
-clawdbot update
+moltbot update
```
Manual (equivalent-ish):
@@ -119,21 +120,21 @@ git pull
pnpm install
pnpm build
pnpm ui:build # auto-installs UI deps on first run
-clawdbot doctor
-clawdbot health
+moltbot doctor
+moltbot health
```
Notes:
-- `pnpm build` matters when you run the packaged `clawdbot` binary ([`dist/entry.js`](https://github.com/clawdbot/clawdbot/blob/main/dist/entry.js)) or use Node to run `dist/`.
-- If you run from a repo checkout without a global install, use `pnpm clawdbot ...` for CLI commands.
-- If you run directly from TypeScript (`pnpm clawdbot ...`), 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 `clawdbot doctor` so the gateway service entrypoint is rewritten to the current install.
+- `pnpm build` matters when you run the packaged `moltbot` binary ([`dist/entry.js`](https://github.com/clawdbot/clawdbot/blob/main/dist/entry.js)) 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.
-## Always run: `clawdbot doctor`
+## Always Run: `moltbot doctor`
Doctor is the “safe update” command. It’s intentionally boring: repair + migrate + warn.
-Note: if you’re on a **source install** (git checkout), `clawdbot doctor` will offer to run `clawdbot update` first.
+Note: if you’re on a **source install** (git checkout), `moltbot doctor` will offer to run `moltbot update` first.
Typical things it does:
- Migrate deprecated config keys / legacy config file locations.
@@ -149,18 +150,18 @@ Details: [Doctor](/gateway/doctor)
CLI (works regardless of OS):
```bash
-clawdbot gateway status
-clawdbot gateway stop
-clawdbot gateway restart
-clawdbot gateway --port 18789
-clawdbot logs --follow
+moltbot gateway status
+moltbot gateway stop
+moltbot gateway restart
+moltbot gateway --port 18789
+moltbot logs --follow
```
If you’re supervised:
- macOS launchd (app-bundled LaunchAgent): `launchctl kickstart -k gui/$UID/com.clawdbot.gateway` (use `com.clawdbot.` if set)
- Linux systemd user service: `systemctl --user restart clawdbot-gateway[-].service`
- Windows (WSL2): `systemctl --user restart clawdbot-gateway[-].service`
- - `launchctl`/`systemctl` only work if the service is installed; otherwise run `clawdbot gateway install`.
+ - `launchctl`/`systemctl` only work if the service is installed; otherwise run `moltbot gateway install`.
Runbook + exact service labels: [Gateway runbook](/gateway)
@@ -171,20 +172,20 @@ Runbook + exact service labels: [Gateway runbook](/gateway)
Install a known-good version (replace `` with the last working one):
```bash
-npm i -g clawdbot@
+npm i -g moltbot@
```
```bash
-pnpm add -g clawdbot@
+pnpm add -g moltbot@
```
-Tip: to see the current published version, run `npm view clawdbot version`.
+Tip: to see the current published version, run `npm view moltbot version`.
Then restart + re-run doctor:
```bash
-clawdbot doctor
-clawdbot gateway restart
+moltbot doctor
+moltbot gateway restart
```
### Pin (source) by date
@@ -201,7 +202,7 @@ Then reinstall deps + restart:
```bash
pnpm install
pnpm build
-clawdbot gateway restart
+moltbot gateway restart
```
If you want to go back to latest later:
@@ -213,6 +214,6 @@ git pull
## If you’re stuck
-- Run `clawdbot doctor` again and read the output carefully (it often tells you the fix).
+- Run `moltbot 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
diff --git a/docs/platforms/digitalocean.md b/docs/platforms/digitalocean.md
index afefe3676..ac46a5b47 100644
--- a/docs/platforms/digitalocean.md
+++ b/docs/platforms/digitalocean.md
@@ -65,7 +65,7 @@ curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
# Install Clawdbot
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
# Verify
clawdbot --version
diff --git a/docs/platforms/oracle.md b/docs/platforms/oracle.md
index d8006754b..52db36049 100644
--- a/docs/platforms/oracle.md
+++ b/docs/platforms/oracle.md
@@ -97,7 +97,7 @@ tailscale status
## 5) Install Clawdbot
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
source ~/.bashrc
```
diff --git a/docs/platforms/raspberry-pi.md b/docs/platforms/raspberry-pi.md
index b34e3fcfe..ba6b339cf 100644
--- a/docs/platforms/raspberry-pi.md
+++ b/docs/platforms/raspberry-pi.md
@@ -110,7 +110,7 @@ sudo sysctl -p
### Option A: Standard Install (Recommended)
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
```
### Option B: Hackable Install (For tinkering)
diff --git a/docs/reference/RELEASING.md b/docs/reference/RELEASING.md
index a4c68e3e9..c107ac119 100644
--- a/docs/reference/RELEASING.md
+++ b/docs/reference/RELEASING.md
@@ -42,7 +42,7 @@ When the operator says “release”, immediately do this preflight (no extra qu
- [ ] `CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT=1 pnpm test:install:smoke` (Docker install smoke test, fast path; required before release)
- If the immediate previous npm release is known broken, set `CLAWDBOT_INSTALL_SMOKE_PREVIOUS=` or `CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS=1` for the preinstall step.
- [ ] (Optional) Full installer smoke (adds non-root + CLI coverage): `pnpm test:install:smoke`
-- [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://clawd.bot/install.sh | bash`, onboards, then runs real tool calls):
+- [ ] (Optional) Installer E2E (Docker, runs `curl -fsSL https://molt.bot/install.sh | bash`, onboards, then runs real tool calls):
- `pnpm test:install:e2e:openai` (requires `OPENAI_API_KEY`)
- `pnpm test:install:e2e:anthropic` (requires `ANTHROPIC_API_KEY`)
- `pnpm test:install:e2e` (requires both keys; runs both providers)
diff --git a/docs/start/getting-started.md b/docs/start/getting-started.md
index 790a79dfc..92a772c4d 100644
--- a/docs/start/getting-started.md
+++ b/docs/start/getting-started.md
@@ -54,7 +54,7 @@ Windows: use **WSL2** (Ubuntu recommended). WSL2 is strongly recommended; native
## 1) Install the CLI (recommended)
```bash
-curl -fsSL https://clawd.bot/install.sh | bash
+curl -fsSL https://molt.bot/install.sh | bash
```
Installer options (install method, non-interactive, from GitHub): [Install](/install).
@@ -62,7 +62,7 @@ Installer options (install method, non-interactive, from GitHub): [Install](/ins
Windows (PowerShell):
```powershell
-iwr -useb https://clawd.bot/install.ps1 | iex
+iwr -useb https://molt.bot/install.ps1 | iex
```
Alternative (global install):
diff --git a/extensions/lobster/src/lobster-tool.test.ts b/extensions/lobster/src/lobster-tool.test.ts
index 5c887cc76..7314c9d5e 100644
--- a/extensions/lobster/src/lobster-tool.test.ts
+++ b/extensions/lobster/src/lobster-tool.test.ts
@@ -83,6 +83,26 @@ describe("lobster plugin tool", () => {
expect(res.details).toMatchObject({ ok: true, status: "ok" });
});
+ it("tolerates noisy stdout before the JSON envelope", async () => {
+ const payload = { ok: true, status: "ok", output: [], requiresApproval: null };
+ const { binPath } = await writeFakeLobsterScript(
+ `const payload = ${JSON.stringify(payload)};\n` +
+ `console.log("noise before json");\n` +
+ `process.stdout.write(JSON.stringify(payload));\n`,
+ "clawdbot-lobster-plugin-noisy-",
+ );
+
+ const tool = createLobsterTool(fakeApi());
+ const res = await tool.execute("call-noisy", {
+ action: "run",
+ pipeline: "noop",
+ lobsterPath: binPath,
+ timeoutMs: 1000,
+ });
+
+ expect(res.details).toMatchObject({ ok: true, status: "ok" });
+ });
+
it("requires absolute lobsterPath when provided", async () => {
const tool = createLobsterTool(fakeApi());
await expect(
diff --git a/extensions/lobster/src/lobster-tool.ts b/extensions/lobster/src/lobster-tool.ts
index 368389ab8..e6e8441ff 100644
--- a/extensions/lobster/src/lobster-tool.ts
+++ b/extensions/lobster/src/lobster-tool.ts
@@ -131,10 +131,28 @@ async function runLobsterSubprocess(params: {
}
function parseEnvelope(stdout: string): LobsterEnvelope {
- let parsed: unknown;
- try {
- parsed = JSON.parse(stdout);
- } catch {
+ const trimmed = stdout.trim();
+
+ const tryParse = (input: string) => {
+ try {
+ return JSON.parse(input) as unknown;
+ } catch {
+ return undefined;
+ }
+ };
+
+ let parsed: unknown = tryParse(trimmed);
+
+ // Some environments can leak extra stdout (e.g. warnings/logs) before the
+ // final JSON envelope. Be tolerant and parse the last JSON-looking suffix.
+ if (parsed === undefined) {
+ const suffixMatch = trimmed.match(/({[\s\S]*}|\[[\s\S]*])\s*$/);
+ if (suffixMatch?.[1]) {
+ parsed = tryParse(suffixMatch[1]);
+ }
+ }
+
+ if (parsed === undefined) {
throw new Error("lobster returned invalid JSON");
}
diff --git a/extensions/mattermost/src/onboarding.ts b/extensions/mattermost/src/onboarding.ts
index 431c648ae..31578b3e7 100644
--- a/extensions/mattermost/src/onboarding.ts
+++ b/extensions/mattermost/src/onboarding.ts
@@ -17,7 +17,7 @@ async function noteMattermostSetup(prompter: WizardPrompter): Promise {
"2) Create a bot + copy its token",
"3) Use your server base URL (e.g., https://chat.example.com)",
"Tip: the bot must be a member of any channel you want it to monitor.",
- "Docs: https://docs.clawd.bot/channels/mattermost",
+ "Docs: https://docs.molt.bot/channels/mattermost",
].join("\n"),
"Mattermost bot token",
);
diff --git a/extensions/tlon/README.md b/extensions/tlon/README.md
index aa02cab93..19c8fbb27 100644
--- a/extensions/tlon/README.md
+++ b/extensions/tlon/README.md
@@ -2,4 +2,4 @@
Tlon/Urbit channel plugin for Clawdbot. Supports DMs, group mentions, and thread replies.
-Docs: https://docs.clawd.bot/channels/tlon
+Docs: https://docs.molt.bot/channels/tlon
diff --git a/extensions/twitch/README.md b/extensions/twitch/README.md
index 2d3e4ceea..377b49baa 100644
--- a/extensions/twitch/README.md
+++ b/extensions/twitch/README.md
@@ -80,7 +80,7 @@ Multi-account config (advanced):
## Full documentation
-See https://docs.clawd.bot/channels/twitch for:
+See https://docs.molt.bot/channels/twitch for:
- Token refresh setup
- Access control patterns
diff --git a/extensions/voice-call/README.md b/extensions/voice-call/README.md
index 5f009aa28..269a67d11 100644
--- a/extensions/voice-call/README.md
+++ b/extensions/voice-call/README.md
@@ -8,8 +8,8 @@ Providers:
- **Plivo** (Voice API + XML transfer + GetInput speech)
- **Mock** (dev/no network)
-Docs: `https://docs.clawd.bot/plugins/voice-call`
-Plugin system: `https://docs.clawd.bot/plugin`
+Docs: `https://docs.molt.bot/plugins/voice-call`
+Plugin system: `https://docs.molt.bot/plugin`
## Install (local dev)
diff --git a/extensions/voice-call/src/cli.ts b/extensions/voice-call/src/cli.ts
index 6291ef137..7769ae09f 100644
--- a/extensions/voice-call/src/cli.ts
+++ b/extensions/voice-call/src/cli.ts
@@ -45,7 +45,7 @@ export function registerVoiceCallCli(params: {
const root = program
.command("voicecall")
.description("Voice call utilities")
- .addHelpText("after", () => `\nDocs: https://docs.clawd.bot/cli/voicecall\n`);
+ .addHelpText("after", () => `\nDocs: https://docs.molt.bot/cli/voicecall\n`);
root
.command("call")
diff --git a/extensions/voice-call/src/core-bridge.ts b/extensions/voice-call/src/core-bridge.ts
index a1d01e10f..bc008a515 100644
--- a/extensions/voice-call/src/core-bridge.ts
+++ b/extensions/voice-call/src/core-bridge.ts
@@ -88,7 +88,7 @@ function findPackageRoot(startDir: string, name: string): string | null {
function resolveClawdbotRoot(): string {
if (coreRootCache) return coreRootCache;
- const override = process.env.CLAWDBOT_ROOT?.trim();
+ const override = process.env.MOLTBOT_ROOT?.trim() || process.env.CLAWDBOT_ROOT?.trim();
if (override) {
coreRootCache = override;
return override;
@@ -107,15 +107,17 @@ function resolveClawdbotRoot(): string {
}
for (const start of candidates) {
- const found = findPackageRoot(start, "clawdbot");
- if (found) {
- coreRootCache = found;
- return found;
+ for (const name of ["moltbot", "clawdbot"]) {
+ const found = findPackageRoot(start, name);
+ if (found) {
+ coreRootCache = found;
+ return found;
+ }
}
}
throw new Error(
- "Unable to resolve Clawdbot root. Set CLAWDBOT_ROOT to the package root.",
+ "Unable to resolve core root. Set MOLTBOT_ROOT (or legacy CLAWDBOT_ROOT) to the package root.",
);
}
diff --git a/extensions/zalo/src/onboarding.ts b/extensions/zalo/src/onboarding.ts
index 4cb681dbe..3c4e5c197 100644
--- a/extensions/zalo/src/onboarding.ts
+++ b/extensions/zalo/src/onboarding.ts
@@ -132,7 +132,7 @@ async function noteZaloTokenHelp(prompter: WizardPrompter): Promise {
"2) Create a bot and get the token",
"3) Token looks like 12345689:abc-xyz",
"Tip: you can also set ZALO_BOT_TOKEN in your env.",
- "Docs: https://docs.clawd.bot/channels/zalo",
+ "Docs: https://docs.molt.bot/channels/zalo",
].join("\n"),
"Zalo bot token",
);
diff --git a/extensions/zalouser/src/channel.ts b/extensions/zalouser/src/channel.ts
index 6554d7874..712143f65 100644
--- a/extensions/zalouser/src/channel.ts
+++ b/extensions/zalouser/src/channel.ts
@@ -471,7 +471,7 @@ export const zalouserPlugin: ChannelPlugin = {
const ok = await checkZcaInstalled();
if (!ok) {
throw new Error(
- "Missing dependency: `zca` not found in PATH. See docs.clawd.bot/channels/zalouser",
+ "Missing dependency: `zca` not found in PATH. See docs.molt.bot/channels/zalouser",
);
}
runtime.log(
diff --git a/extensions/zalouser/src/onboarding.ts b/extensions/zalouser/src/onboarding.ts
index a5c205015..2a318d281 100644
--- a/extensions/zalouser/src/onboarding.ts
+++ b/extensions/zalouser/src/onboarding.ts
@@ -53,7 +53,7 @@ async function noteZalouserHelp(prompter: WizardPrompter): Promise {
"1) Install zca-cli",
"2) You'll scan a QR code with your Zalo app",
"",
- "Docs: https://docs.clawd.bot/channels/zalouser",
+ "Docs: https://docs.molt.bot/channels/zalouser",
].join("\n"),
"Zalo Personal Setup",
);
@@ -316,7 +316,7 @@ export const zalouserOnboardingAdapter: ChannelOnboardingAdapter = {
"The `zca` binary was not found in PATH.",
"",
"Install zca-cli, then re-run onboarding:",
- "Docs: https://docs.clawd.bot/channels/zalouser",
+ "Docs: https://docs.molt.bot/channels/zalouser",
].join("\n"),
"Missing Dependency",
);
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d1c55dd8d..82f0a96e2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -316,7 +316,7 @@ importers:
devDependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
extensions/imessage: {}
@@ -324,7 +324,7 @@ importers:
devDependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
extensions/llm-task: {}
@@ -350,7 +350,7 @@ importers:
devDependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
extensions/mattermost: {}
@@ -385,7 +385,7 @@ importers:
version: 1.2.2
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
express:
specifier: ^5.2.1
version: 5.2.1
@@ -399,7 +399,7 @@ importers:
dependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
nostr-tools:
specifier: ^2.20.0
version: 2.20.0(typescript@5.9.3)
@@ -441,7 +441,7 @@ importers:
devDependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
extensions/voice-call:
dependencies:
@@ -461,7 +461,7 @@ importers:
dependencies:
clawdbot:
specifier: workspace:*
- version: link:../..
+ version: link:../../packages/clawdbot
undici:
specifier: 7.19.0
version: 7.19.0
@@ -472,6 +472,12 @@ importers:
specifier: 0.34.47
version: 0.34.47
clawdbot:
+ specifier: workspace:*
+ version: link:../../packages/clawdbot
+
+ packages/clawdbot:
+ dependencies:
+ moltbot:
specifier: workspace:*
version: link:../..
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 115f9a8c0..acf898add 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,6 +1,7 @@
packages:
- .
- ui
+ - packages/*
- extensions/*
onlyBuiltDependencies:
diff --git a/scripts/docker/install-sh-e2e/run.sh b/scripts/docker/install-sh-e2e/run.sh
index 474fc329e..0cc4a27e4 100755
--- a/scripts/docker/install-sh-e2e/run.sh
+++ b/scripts/docker/install-sh-e2e/run.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
-INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
+INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://molt.bot/install.sh}"
MODELS_MODE="${CLAWDBOT_E2E_MODELS:-both}" # both|openai|anthropic
INSTALL_TAG="${CLAWDBOT_INSTALL_TAG:-latest}"
E2E_PREVIOUS_VERSION="${CLAWDBOT_INSTALL_E2E_PREVIOUS:-}"
diff --git a/scripts/docker/install-sh-nonroot/run.sh b/scripts/docker/install-sh-nonroot/run.sh
index 82e2275ae..bdb91bb13 100644
--- a/scripts/docker/install-sh-nonroot/run.sh
+++ b/scripts/docker/install-sh-nonroot/run.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
-INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
+INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://molt.bot/install.sh}"
echo "==> Pre-flight: ensure git absent"
if command -v git >/dev/null; then
diff --git a/scripts/docker/install-sh-smoke/run.sh b/scripts/docker/install-sh-smoke/run.sh
index b73864ee1..de0e2536f 100755
--- a/scripts/docker/install-sh-smoke/run.sh
+++ b/scripts/docker/install-sh-smoke/run.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
-INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
+INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://molt.bot/install.sh}"
SMOKE_PREVIOUS_VERSION="${CLAWDBOT_INSTALL_SMOKE_PREVIOUS:-}"
SKIP_PREVIOUS="${CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS:-0}"
diff --git a/scripts/test-install-sh-docker.sh b/scripts/test-install-sh-docker.sh
index ba87eeb65..03cde30be 100755
--- a/scripts/test-install-sh-docker.sh
+++ b/scripts/test-install-sh-docker.sh
@@ -4,8 +4,8 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SMOKE_IMAGE="${CLAWDBOT_INSTALL_SMOKE_IMAGE:-clawdbot-install-smoke:local}"
NONROOT_IMAGE="${CLAWDBOT_INSTALL_NONROOT_IMAGE:-clawdbot-install-nonroot:local}"
-INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
-CLI_INSTALL_URL="${CLAWDBOT_INSTALL_CLI_URL:-https://clawd.bot/install-cli.sh}"
+INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://molt.bot/install.sh}"
+CLI_INSTALL_URL="${CLAWDBOT_INSTALL_CLI_URL:-https://molt.bot/install-cli.sh}"
SKIP_NONROOT="${CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT:-0}"
LATEST_DIR="$(mktemp -d)"
LATEST_FILE="${LATEST_DIR}/latest"
diff --git a/scripts/test-install-sh-e2e-docker.sh b/scripts/test-install-sh-e2e-docker.sh
index 0ad79aaf8..600be4e56 100755
--- a/scripts/test-install-sh-e2e-docker.sh
+++ b/scripts/test-install-sh-e2e-docker.sh
@@ -3,7 +3,7 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
IMAGE_NAME="${CLAWDBOT_INSTALL_E2E_IMAGE:-clawdbot-install-e2e:local}"
-INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://clawd.bot/install.sh}"
+INSTALL_URL="${CLAWDBOT_INSTALL_URL:-https://molt.bot/install.sh}"
OPENAI_API_KEY="${OPENAI_API_KEY:-}"
ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY:-}"
diff --git a/src/agents/clawdbot-gateway-tool.test.ts b/src/agents/clawdbot-gateway-tool.test.ts
index 76d8ff8e4..8def33988 100644
--- a/src/agents/clawdbot-gateway-tool.test.ts
+++ b/src/agents/clawdbot-gateway-tool.test.ts
@@ -50,7 +50,7 @@ describe("gateway tool", () => {
};
expect(parsed.payload?.kind).toBe("restart");
expect(parsed.payload?.doctorHint).toBe(
- "Run: clawdbot --profile isolated doctor --non-interactive",
+ "Run: moltbot --profile isolated doctor --non-interactive",
);
expect(kill).not.toHaveBeenCalled();
diff --git a/src/agents/system-prompt.ts b/src/agents/system-prompt.ts
index 1d1a6a5eb..4d4512298 100644
--- a/src/agents/system-prompt.ts
+++ b/src/agents/system-prompt.ts
@@ -116,7 +116,7 @@ function buildDocsSection(params: { docsPath?: string; isMinimal: boolean; readT
return [
"## Documentation",
`Clawdbot docs: ${docsPath}`,
- "Mirror: https://docs.clawd.bot",
+ "Mirror: https://docs.molt.bot",
"Source: https://github.com/clawdbot/clawdbot",
"Community: https://discord.com/invite/clawd",
"Find new skills: https://clawdhub.com",
diff --git a/src/agents/tools/web-search.ts b/src/agents/tools/web-search.ts
index 50d3d19a1..7cec8f21c 100644
--- a/src/agents/tools/web-search.ts
+++ b/src/agents/tools/web-search.ts
@@ -128,13 +128,13 @@ function missingSearchKeyPayload(provider: (typeof SEARCH_PROVIDERS)[number]) {
error: "missing_perplexity_api_key",
message:
"web_search (perplexity) needs an API key. Set PERPLEXITY_API_KEY or OPENROUTER_API_KEY in the Gateway environment, or configure tools.web.search.perplexity.apiKey.",
- docs: "https://docs.clawd.bot/tools/web",
+ docs: "https://docs.molt.bot/tools/web",
};
}
return {
error: "missing_brave_api_key",
message: `web_search needs a Brave Search API key. Run \`${formatCliCommand("clawdbot configure --section web")}\` to store it, or set BRAVE_API_KEY in the Gateway environment.`,
- docs: "https://docs.clawd.bot/tools/web",
+ docs: "https://docs.molt.bot/tools/web",
};
}
@@ -279,7 +279,7 @@ async function runPerplexitySearch(params: {
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${params.apiKey}`,
- "HTTP-Referer": "https://clawdbot.com",
+ "HTTP-Referer": "https://molt.bot",
"X-Title": "Clawdbot Web Search",
},
body: JSON.stringify({
@@ -447,7 +447,7 @@ export function createWebSearchTool(options?: {
return jsonResult({
error: "unsupported_freshness",
message: "freshness is only supported by the Brave web_search provider.",
- docs: "https://docs.clawd.bot/tools/web",
+ docs: "https://docs.molt.bot/tools/web",
});
}
const freshness = rawFreshness ? normalizeFreshness(rawFreshness) : undefined;
@@ -456,7 +456,7 @@ export function createWebSearchTool(options?: {
error: "invalid_freshness",
message:
"freshness must be one of pd, pw, pm, py, or a range like YYYY-MM-DDtoYYYY-MM-DD.",
- docs: "https://docs.clawd.bot/tools/web",
+ docs: "https://docs.molt.bot/tools/web",
});
}
const result = await runWebSearch({
diff --git a/src/auto-reply/reply/bash-command.ts b/src/auto-reply/reply/bash-command.ts
index a83bf3952..47ea45504 100644
--- a/src/auto-reply/reply/bash-command.ts
+++ b/src/auto-reply/reply/bash-command.ts
@@ -189,7 +189,7 @@ export async function handleBashChatCommand(params: {
}): Promise {
if (params.cfg.commands?.bash !== true) {
return {
- text: "⚠️ bash is disabled. Set commands.bash=true to enable. Docs: https://docs.clawd.bot/tools/slash-commands#config",
+ text: "⚠️ bash is disabled. Set commands.bash=true to enable. Docs: https://docs.molt.bot/tools/slash-commands#config",
};
}
diff --git a/src/canvas-host/a2ui/.bundle.hash b/src/canvas-host/a2ui/.bundle.hash
index 19a232f5c..01a6e013f 100644
--- a/src/canvas-host/a2ui/.bundle.hash
+++ b/src/canvas-host/a2ui/.bundle.hash
@@ -1 +1 @@
-2567ca5bbc065b922d96717a488d5db3120b5b033c5d0508682d1aa8fbba470a
+b3c955e808e8d11cdbb6f716a038f26ccdd4b69228ad0c4ce76fd81e98496d56
diff --git a/src/channels/plugins/catalog.test.ts b/src/channels/plugins/catalog.test.ts
index 2470dbd33..a50aa2b36 100644
--- a/src/channels/plugins/catalog.test.ts
+++ b/src/channels/plugins/catalog.test.ts
@@ -8,7 +8,7 @@ import { getChannelPluginCatalogEntry, listChannelPluginCatalogEntries } from ".
describe("channel plugin catalog", () => {
it("includes Microsoft Teams", () => {
const entry = getChannelPluginCatalogEntry("msteams");
- expect(entry?.install.npmSpec).toBe("@clawdbot/msteams");
+ expect(entry?.install.npmSpec).toBe("@moltbot/msteams");
expect(entry?.meta.aliases).toContain("teams");
});
diff --git a/src/channels/plugins/onboarding/telegram.ts b/src/channels/plugins/onboarding/telegram.ts
index fdbc044c5..90920ab40 100644
--- a/src/channels/plugins/onboarding/telegram.ts
+++ b/src/channels/plugins/onboarding/telegram.ts
@@ -38,7 +38,7 @@ async function noteTelegramTokenHelp(prompter: WizardPrompter): Promise {
"3) Copy the token (looks like 123456:ABC...)",
"Tip: you can also set TELEGRAM_BOT_TOKEN in your env.",
`Docs: ${formatDocsLink("/telegram")}`,
- "Website: https://clawd.bot",
+ "Website: https://molt.bot",
].join("\n"),
"Telegram bot token",
);
@@ -51,7 +51,7 @@ async function noteTelegramUserIdHelp(prompter: WizardPrompter): Promise {
"2) Or call https://api.telegram.org/bot/getUpdates and read message.from.id",
"3) Third-party: DM @userinfobot or @getidsbot",
`Docs: ${formatDocsLink("/telegram")}`,
- "Website: https://clawd.bot",
+ "Website: https://molt.bot",
].join("\n"),
"Telegram user id",
);
diff --git a/src/channels/registry.test.ts b/src/channels/registry.test.ts
index 84940aa42..44b53ef6d 100644
--- a/src/channels/registry.test.ts
+++ b/src/channels/registry.test.ts
@@ -33,6 +33,6 @@ describe("channel registry", () => {
);
expect(line).not.toContain("Docs:");
expect(line).toContain("/channels/telegram");
- expect(line).toContain("https://clawd.bot");
+ expect(line).toContain("https://molt.bot");
});
});
diff --git a/src/channels/registry.ts b/src/channels/registry.ts
index 10ddeed4a..6afe1996c 100644
--- a/src/channels/registry.ts
+++ b/src/channels/registry.ts
@@ -22,7 +22,7 @@ export const DEFAULT_CHAT_CHANNEL: ChatChannelId = "whatsapp";
export type ChatChannelMeta = ChannelMeta;
-const WEBSITE_URL = "https://clawd.bot";
+const WEBSITE_URL = "https://molt.bot";
const CHAT_CHANNEL_META: Record = {
telegram: {
diff --git a/src/cli/acp-cli.ts b/src/cli/acp-cli.ts
index f2283d23d..8669d77fa 100644
--- a/src/cli/acp-cli.ts
+++ b/src/cli/acp-cli.ts
@@ -21,7 +21,7 @@ export function registerAcpCli(program: Command) {
.option("--verbose, -v", "Verbose logging to stderr", false)
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/acp", "docs.clawd.bot/cli/acp")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/acp", "docs.molt.bot/cli/acp")}\n`,
)
.action((opts) => {
try {
@@ -46,7 +46,7 @@ export function registerAcpCli(program: Command) {
.command("client")
.description("Run an interactive ACP client against the local ACP bridge")
.option("--cwd ", "Working directory for the ACP session")
- .option("--server ", "ACP server command (default: clawdbot)")
+ .option("--server ", "ACP server command (default: moltbot)")
.option("--server-args ", "Extra arguments for the ACP server")
.option("--server-verbose", "Enable verbose logging on the ACP server", false)
.option("--verbose, -v", "Verbose client logging", false)
diff --git a/src/cli/banner.ts b/src/cli/banner.ts
index 7a811f56e..87803c9c7 100644
--- a/src/cli/banner.ts
+++ b/src/cli/banner.ts
@@ -2,6 +2,7 @@ import { resolveCommitHash } from "../infra/git-commit.js";
import { visibleWidth } from "../terminal/ansi.js";
import { isRich, theme } from "../terminal/theme.js";
import { pickTagline, type TaglineOptions } from "./tagline.js";
+import { resolveCliName } from "./cli-name.js";
type BannerOptions = TaglineOptions & {
argv?: string[];
@@ -37,7 +38,8 @@ export function formatCliBannerLine(version: string, options: BannerOptions = {}
const commitLabel = commit ?? "unknown";
const tagline = pickTagline(options);
const rich = options.richTty ?? isRich();
- const title = "🦞 Clawdbot";
+ const cliName = resolveCliName(options.argv ?? process.argv, options.env);
+ const title = cliName === "clawdbot" ? "🦞 Clawdbot" : "🦞 Moltbot";
const prefix = "🦞 ";
const columns = options.columns ?? process.stdout.columns ?? 120;
const plainFullLine = `${title} ${version} (${commitLabel}) — ${tagline}`;
diff --git a/src/cli/browser-cli-extension.ts b/src/cli/browser-cli-extension.ts
index 3bd7c5b3a..6775216e6 100644
--- a/src/cli/browser-cli-extension.ts
+++ b/src/cli/browser-cli-extension.ts
@@ -90,7 +90,7 @@ export function registerBrowserExtensionCommands(
`- “Load unpacked” → select: ${displayPath}`,
`- Pin “Clawdbot Browser Relay”, then click it on the tab (badge shows ON)`,
"",
- `${theme.muted("Docs:")} ${formatDocsLink("/tools/chrome-extension", "docs.clawd.bot/tools/chrome-extension")}`,
+ `${theme.muted("Docs:")} ${formatDocsLink("/tools/chrome-extension", "docs.molt.bot/tools/chrome-extension")}`,
].join("\n"),
),
);
@@ -107,7 +107,7 @@ export function registerBrowserExtensionCommands(
danger(
[
`Chrome extension is not installed. Run: "${formatCliCommand("clawdbot browser extension install")}"`,
- `Docs: ${formatDocsLink("/tools/chrome-extension", "docs.clawd.bot/tools/chrome-extension")}`,
+ `Docs: ${formatDocsLink("/tools/chrome-extension", "docs.molt.bot/tools/chrome-extension")}`,
].join("\n"),
),
);
diff --git a/src/cli/browser-cli.ts b/src/cli/browser-cli.ts
index 50c71ef01..cda4d4275 100644
--- a/src/cli/browser-cli.ts
+++ b/src/cli/browser-cli.ts
@@ -31,7 +31,7 @@ export function registerBrowserCli(program: Command) {
true,
)}\n\n${theme.muted("Docs:")} ${formatDocsLink(
"/cli/browser",
- "docs.clawd.bot/cli/browser",
+ "docs.molt.bot/cli/browser",
)}\n`,
)
.action(() => {
diff --git a/src/cli/channels-cli.ts b/src/cli/channels-cli.ts
index 97fbee520..6d90ae935 100644
--- a/src/cli/channels-cli.ts
+++ b/src/cli/channels-cli.ts
@@ -76,7 +76,7 @@ export function registerChannelsCli(program: Command) {
() =>
`\n${theme.muted("Docs:")} ${formatDocsLink(
"/cli/channels",
- "docs.clawd.bot/cli/channels",
+ "docs.molt.bot/cli/channels",
)}\n`,
);
diff --git a/src/cli/command-format.ts b/src/cli/command-format.ts
index 9e5eef160..e62806cd4 100644
--- a/src/cli/command-format.ts
+++ b/src/cli/command-format.ts
@@ -1,6 +1,7 @@
import { normalizeProfileName } from "./profile-utils.js";
+import { replaceCliName, resolveCliName } from "./cli-name.js";
-const CLI_PREFIX_RE = /^(?:pnpm|npm|bunx|npx)\s+clawdbot\b|^clawdbot\b/;
+const CLI_PREFIX_RE = /^(?:pnpm|npm|bunx|npx)\s+(?:clawdbot|moltbot)\b|^(?:clawdbot|moltbot)\b/;
const PROFILE_FLAG_RE = /(?:^|\s)--profile(?:\s|=|$)/;
const DEV_FLAG_RE = /(?:^|\s)--dev(?:\s|$)/;
@@ -8,9 +9,13 @@ export function formatCliCommand(
command: string,
env: Record = process.env as Record,
): string {
+ const cliName = resolveCliName(undefined, env);
+ const normalizedCommand = replaceCliName(command, cliName);
const profile = normalizeProfileName(env.CLAWDBOT_PROFILE);
- if (!profile) return command;
- if (!CLI_PREFIX_RE.test(command)) return command;
- if (PROFILE_FLAG_RE.test(command) || DEV_FLAG_RE.test(command)) return command;
- return command.replace(CLI_PREFIX_RE, (match) => `${match} --profile ${profile}`);
+ if (!profile) return normalizedCommand;
+ if (!CLI_PREFIX_RE.test(normalizedCommand)) return normalizedCommand;
+ if (PROFILE_FLAG_RE.test(normalizedCommand) || DEV_FLAG_RE.test(normalizedCommand)) {
+ return normalizedCommand;
+ }
+ return normalizedCommand.replace(CLI_PREFIX_RE, (match) => `${match} --profile ${profile}`);
}
diff --git a/src/cli/config-cli.ts b/src/cli/config-cli.ts
index 605482251..80550599d 100644
--- a/src/cli/config-cli.ts
+++ b/src/cli/config-cli.ts
@@ -185,7 +185,7 @@ export function registerConfigCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.clawd.bot/cli/config")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.molt.bot/cli/config")}\n`,
)
.option(
"--section ",
diff --git a/src/cli/cron-cli/register.ts b/src/cli/cron-cli/register.ts
index 7989e08fb..aa115f1fa 100644
--- a/src/cli/cron-cli/register.ts
+++ b/src/cli/cron-cli/register.ts
@@ -15,7 +15,7 @@ export function registerCronCli(program: Command) {
.description("Manage cron jobs (via Gateway)")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/cron", "docs.clawd.bot/cli/cron")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/cron", "docs.molt.bot/cli/cron")}\n`,
);
registerCronStatusCommand(cron);
diff --git a/src/cli/daemon-cli/register.ts b/src/cli/daemon-cli/register.ts
index 92b47690d..8c180c732 100644
--- a/src/cli/daemon-cli/register.ts
+++ b/src/cli/daemon-cli/register.ts
@@ -18,7 +18,7 @@ export function registerDaemonCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.clawd.bot/cli/gateway")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.molt.bot/cli/gateway")}\n`,
);
daemon
diff --git a/src/cli/daemon-cli/status.print.ts b/src/cli/daemon-cli/status.print.ts
index 801980d24..dc34e00e6 100644
--- a/src/cli/daemon-cli/status.print.ts
+++ b/src/cli/daemon-cli/status.print.ts
@@ -322,5 +322,5 @@ export function printDaemonStatus(status: DaemonStatus, opts: { json: boolean })
}
defaultRuntime.log(`${label("Troubles:")} run ${formatCliCommand("clawdbot status")}`);
- defaultRuntime.log(`${label("Troubleshooting:")} https://docs.clawd.bot/troubleshooting`);
+ defaultRuntime.log(`${label("Troubleshooting:")} https://docs.molt.bot/troubleshooting`);
}
diff --git a/src/cli/directory-cli.ts b/src/cli/directory-cli.ts
index d58663d8a..51fdd6049 100644
--- a/src/cli/directory-cli.ts
+++ b/src/cli/directory-cli.ts
@@ -39,7 +39,7 @@ export function registerDirectoryCli(program: Command) {
() =>
`\n${theme.muted("Docs:")} ${formatDocsLink(
"/cli/directory",
- "docs.clawd.bot/cli/directory",
+ "docs.molt.bot/cli/directory",
)}\n`,
)
.action(() => {
diff --git a/src/cli/dns-cli.ts b/src/cli/dns-cli.ts
index 7798415e8..c063163a5 100644
--- a/src/cli/dns-cli.ts
+++ b/src/cli/dns-cli.ts
@@ -97,7 +97,7 @@ export function registerDnsCli(program: Command) {
.description("DNS helpers for wide-area discovery (Tailscale + CoreDNS)")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dns", "docs.clawd.bot/cli/dns")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dns", "docs.molt.bot/cli/dns")}\n`,
);
dns
diff --git a/src/cli/docs-cli.ts b/src/cli/docs-cli.ts
index 8078b8afe..0bcbe3bac 100644
--- a/src/cli/docs-cli.ts
+++ b/src/cli/docs-cli.ts
@@ -13,7 +13,7 @@ export function registerDocsCli(program: Command) {
.argument("[query...]", "Search query")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/docs", "docs.clawd.bot/cli/docs")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/docs", "docs.molt.bot/cli/docs")}\n`,
)
.action(async (queryParts: string[]) => {
await runCommandWithRuntime(defaultRuntime, async () => {
diff --git a/src/cli/exec-approvals-cli.ts b/src/cli/exec-approvals-cli.ts
index f59b5475b..8b420db50 100644
--- a/src/cli/exec-approvals-cli.ts
+++ b/src/cli/exec-approvals-cli.ts
@@ -233,7 +233,7 @@ export function registerExecApprovalsCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.clawd.bot/cli/approvals")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.molt.bot/cli/approvals")}\n`,
);
const getCmd = approvals
@@ -337,7 +337,7 @@ export function registerExecApprovalsCli(program: Command) {
)}\n${formatExample(
'clawdbot approvals allowlist remove "~/Projects/**/bin/rg"',
"Remove an allowlist pattern.",
- )}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.clawd.bot/cli/approvals")}\n`,
+ )}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/approvals", "docs.molt.bot/cli/approvals")}\n`,
);
const allowlistAdd = allowlist
diff --git a/src/cli/gateway-cli/register.ts b/src/cli/gateway-cli/register.ts
index 8334cc6f7..eec58dd58 100644
--- a/src/cli/gateway-cli/register.ts
+++ b/src/cli/gateway-cli/register.ts
@@ -103,7 +103,7 @@ export function registerGatewayCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.clawd.bot/cli/gateway")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/gateway", "docs.molt.bot/cli/gateway")}\n`,
),
);
diff --git a/src/cli/hooks-cli.test.ts b/src/cli/hooks-cli.test.ts
index edbaf797d..6a4ee37fc 100644
--- a/src/cli/hooks-cli.test.ts
+++ b/src/cli/hooks-cli.test.ts
@@ -16,7 +16,7 @@ const report: HookStatusReport = {
handlerPath: "/tmp/hooks/session-memory/handler.js",
hookKey: "session-memory",
emoji: "💾",
- homepage: "https://docs.clawd.bot/hooks#session-memory",
+ homepage: "https://docs.molt.bot/hooks#session-memory",
events: ["command:new"],
always: false,
disabled: false,
diff --git a/src/cli/hooks-cli.ts b/src/cli/hooks-cli.ts
index 022c7c295..a0eab75f5 100644
--- a/src/cli/hooks-cli.ts
+++ b/src/cli/hooks-cli.ts
@@ -424,7 +424,7 @@ export function registerHooksCli(program: Command): void {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/hooks", "docs.clawd.bot/cli/hooks")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/hooks", "docs.molt.bot/cli/hooks")}\n`,
);
hooks
diff --git a/src/cli/logs-cli.ts b/src/cli/logs-cli.ts
index e5af23af8..8fcd8fffa 100644
--- a/src/cli/logs-cli.ts
+++ b/src/cli/logs-cli.ts
@@ -180,7 +180,7 @@ export function registerLogsCli(program: Command) {
.option("--no-color", "Disable ANSI colors")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/logs", "docs.clawd.bot/cli/logs")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/logs", "docs.molt.bot/cli/logs")}\n`,
);
addGatewayClientOptions(logs);
diff --git a/src/cli/memory-cli.ts b/src/cli/memory-cli.ts
index a184fa1b4..68894adf5 100644
--- a/src/cli/memory-cli.ts
+++ b/src/cli/memory-cli.ts
@@ -424,7 +424,7 @@ export function registerMemoryCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/memory", "docs.clawd.bot/cli/memory")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/memory", "docs.molt.bot/cli/memory")}\n`,
);
memory
diff --git a/src/cli/models-cli.ts b/src/cli/models-cli.ts
index d914629e7..f68631d18 100644
--- a/src/cli/models-cli.ts
+++ b/src/cli/models-cli.ts
@@ -44,7 +44,7 @@ export function registerModelsCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/models", "docs.clawd.bot/cli/models")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/models", "docs.molt.bot/cli/models")}\n`,
);
models
diff --git a/src/cli/node-cli/register.ts b/src/cli/node-cli/register.ts
index 8712c6a44..8f5c5b5ad 100644
--- a/src/cli/node-cli/register.ts
+++ b/src/cli/node-cli/register.ts
@@ -23,7 +23,7 @@ export function registerNodeCli(program: Command) {
.description("Run a headless node host (system.run/system.which)")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/node", "docs.clawd.bot/cli/node")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/node", "docs.molt.bot/cli/node")}\n`,
);
node
diff --git a/src/cli/nodes-camera.test.ts b/src/cli/nodes-camera.test.ts
index a024b535a..55d62cf06 100644
--- a/src/cli/nodes-camera.test.ts
+++ b/src/cli/nodes-camera.test.ts
@@ -51,11 +51,11 @@ describe("nodes camera helpers", () => {
tmpDir: "/tmp",
id: "id1",
});
- expect(p).toBe(path.join("/tmp", "clawdbot-camera-snap-front-id1.jpg"));
+ expect(p).toBe(path.join("/tmp", "moltbot-camera-snap-front-id1.jpg"));
});
it("writes base64 to file", async () => {
- const dir = await fs.mkdtemp(path.join(os.tmpdir(), "clawdbot-test-"));
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-test-"));
const out = path.join(dir, "x.bin");
await writeBase64ToFile(out, "aGk=");
await expect(fs.readFile(out, "utf8")).resolves.toBe("hi");
diff --git a/src/cli/nodes-camera.ts b/src/cli/nodes-camera.ts
index d91053e76..f5bf2f2ea 100644
--- a/src/cli/nodes-camera.ts
+++ b/src/cli/nodes-camera.ts
@@ -3,6 +3,8 @@ import * as fs from "node:fs/promises";
import * as os from "node:os";
import * as path from "node:path";
+import { resolveCliName } from "./cli-name.js";
+
export type CameraFacing = "front" | "back";
export type CameraSnapPayload = {
@@ -70,7 +72,8 @@ export function cameraTempPath(opts: {
const id = opts.id ?? randomUUID();
const facingPart = opts.facing ? `-${opts.facing}` : "";
const ext = opts.ext.startsWith(".") ? opts.ext : `.${opts.ext}`;
- return path.join(tmpDir, `clawdbot-camera-${opts.kind}${facingPart}-${id}${ext}`);
+ const cliName = resolveCliName();
+ return path.join(tmpDir, `${cliName}-camera-${opts.kind}${facingPart}-${id}${ext}`);
}
export async function writeBase64ToFile(filePath: string, base64: string) {
diff --git a/src/cli/nodes-canvas.ts b/src/cli/nodes-canvas.ts
index b021ef22f..577c20560 100644
--- a/src/cli/nodes-canvas.ts
+++ b/src/cli/nodes-canvas.ts
@@ -2,6 +2,8 @@ import { randomUUID } from "node:crypto";
import * as os from "node:os";
import * as path from "node:path";
+import { resolveCliName } from "./cli-name.js";
+
export type CanvasSnapshotPayload = {
format: string;
base64: string;
@@ -29,5 +31,6 @@ export function canvasSnapshotTempPath(opts: { ext: string; tmpDir?: string; id?
const tmpDir = opts.tmpDir ?? os.tmpdir();
const id = opts.id ?? randomUUID();
const ext = opts.ext.startsWith(".") ? opts.ext : `.${opts.ext}`;
- return path.join(tmpDir, `clawdbot-canvas-snapshot-${id}${ext}`);
+ const cliName = resolveCliName();
+ return path.join(tmpDir, `${cliName}-canvas-snapshot-${id}${ext}`);
}
diff --git a/src/cli/nodes-cli/register.ts b/src/cli/nodes-cli/register.ts
index 20dd61902..501b28103 100644
--- a/src/cli/nodes-cli/register.ts
+++ b/src/cli/nodes-cli/register.ts
@@ -17,7 +17,7 @@ export function registerNodesCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.clawd.bot/cli/nodes")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.molt.bot/cli/nodes")}\n`,
);
registerNodesStatusCommands(nodes);
diff --git a/src/cli/pairing-cli.ts b/src/cli/pairing-cli.ts
index 4d405bff5..a5d0ae137 100644
--- a/src/cli/pairing-cli.ts
+++ b/src/cli/pairing-cli.ts
@@ -53,7 +53,7 @@ export function registerPairingCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/pairing", "docs.clawd.bot/cli/pairing")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/pairing", "docs.molt.bot/cli/pairing")}\n`,
);
pairing
diff --git a/src/cli/plugins-cli.ts b/src/cli/plugins-cli.ts
index 303231bdb..57709e04a 100644
--- a/src/cli/plugins-cli.ts
+++ b/src/cli/plugins-cli.ts
@@ -98,7 +98,7 @@ export function registerPluginsCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/plugins", "docs.clawd.bot/cli/plugins")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/plugins", "docs.molt.bot/cli/plugins")}\n`,
);
plugins
@@ -521,7 +521,7 @@ export function registerPluginsCli(program: Command) {
lines.push(`- ${target}${diag.message}`);
}
}
- const docs = formatDocsLink("/plugin", "docs.clawd.bot/plugin");
+ const docs = formatDocsLink("/plugin", "docs.molt.bot/plugin");
lines.push("");
lines.push(`${theme.muted("Docs:")} ${docs}`);
defaultRuntime.log(lines.join("\n"));
diff --git a/src/cli/profile.test.ts b/src/cli/profile.test.ts
index 0470bcf2c..f17e56214 100644
--- a/src/cli/profile.test.ts
+++ b/src/cli/profile.test.ts
@@ -80,60 +80,60 @@ describe("applyCliProfileEnv", () => {
describe("formatCliCommand", () => {
it("returns command unchanged when no profile is set", () => {
- expect(formatCliCommand("clawdbot doctor --fix", {})).toBe("clawdbot doctor --fix");
+ expect(formatCliCommand("clawdbot doctor --fix", {})).toBe("moltbot doctor --fix");
});
it("returns command unchanged when profile is default", () => {
expect(formatCliCommand("clawdbot doctor --fix", { CLAWDBOT_PROFILE: "default" })).toBe(
- "clawdbot doctor --fix",
+ "moltbot doctor --fix",
);
});
it("returns command unchanged when profile is Default (case-insensitive)", () => {
expect(formatCliCommand("clawdbot doctor --fix", { CLAWDBOT_PROFILE: "Default" })).toBe(
- "clawdbot doctor --fix",
+ "moltbot doctor --fix",
);
});
it("returns command unchanged when profile is invalid", () => {
expect(formatCliCommand("clawdbot doctor --fix", { CLAWDBOT_PROFILE: "bad profile" })).toBe(
- "clawdbot doctor --fix",
+ "moltbot doctor --fix",
);
});
it("returns command unchanged when --profile is already present", () => {
expect(
formatCliCommand("clawdbot --profile work doctor --fix", { CLAWDBOT_PROFILE: "work" }),
- ).toBe("clawdbot --profile work doctor --fix");
+ ).toBe("moltbot --profile work doctor --fix");
});
it("returns command unchanged when --dev is already present", () => {
expect(formatCliCommand("clawdbot --dev doctor", { CLAWDBOT_PROFILE: "dev" })).toBe(
- "clawdbot --dev doctor",
+ "moltbot --dev doctor",
);
});
it("inserts --profile flag when profile is set", () => {
expect(formatCliCommand("clawdbot doctor --fix", { CLAWDBOT_PROFILE: "work" })).toBe(
- "clawdbot --profile work doctor --fix",
+ "moltbot --profile work doctor --fix",
);
});
it("trims whitespace from profile", () => {
expect(formatCliCommand("clawdbot doctor --fix", { CLAWDBOT_PROFILE: " jbclawd " })).toBe(
- "clawdbot --profile jbclawd doctor --fix",
+ "moltbot --profile jbclawd doctor --fix",
);
});
it("handles command with no args after clawdbot", () => {
expect(formatCliCommand("clawdbot", { CLAWDBOT_PROFILE: "test" })).toBe(
- "clawdbot --profile test",
+ "moltbot --profile test",
);
});
it("handles pnpm wrapper", () => {
expect(formatCliCommand("pnpm clawdbot doctor", { CLAWDBOT_PROFILE: "work" })).toBe(
- "pnpm clawdbot --profile work doctor",
+ "pnpm moltbot --profile work doctor",
);
});
});
diff --git a/src/cli/program.nodes-media.test.ts b/src/cli/program.nodes-media.test.ts
index 60513b8e1..3132a98b9 100644
--- a/src/cli/program.nodes-media.test.ts
+++ b/src/cli/program.nodes-media.test.ts
@@ -174,7 +174,7 @@ describe("cli program (nodes media)", () => {
const out = String(runtime.log.mock.calls[0]?.[0] ?? "");
const mediaPath = out.replace(/^MEDIA:/, "").trim();
- expect(mediaPath).toMatch(/clawdbot-camera-clip-front-.*\.mp4$/);
+ expect(mediaPath).toMatch(/moltbot-camera-clip-front-.*\.mp4$/);
try {
await expect(fs.readFile(mediaPath, "utf8")).resolves.toBe("hi");
@@ -421,7 +421,7 @@ describe("cli program (nodes media)", () => {
const out = String(runtime.log.mock.calls[0]?.[0] ?? "");
const mediaPath = out.replace(/^MEDIA:/, "").trim();
- expect(mediaPath).toMatch(/clawdbot-canvas-snapshot-.*\.png$/);
+ expect(mediaPath).toMatch(/moltbot-canvas-snapshot-.*\.png$/);
try {
await expect(fs.readFile(mediaPath, "utf8")).resolves.toBe("hi");
diff --git a/src/cli/program/help.ts b/src/cli/program/help.ts
index c90f9eb96..9ad704c16 100644
--- a/src/cli/program/help.ts
+++ b/src/cli/program/help.ts
@@ -2,8 +2,11 @@ import type { Command } from "commander";
import { formatDocsLink } from "../../terminal/links.js";
import { isRich, theme } from "../../terminal/theme.js";
import { formatCliBannerLine, hasEmittedCliBanner } from "../banner.js";
+import { replaceCliName, resolveCliName } from "../cli-name.js";
import type { ProgramContext } from "./context.js";
+const CLI_NAME = resolveCliName();
+
const EXAMPLES = [
[
"clawdbot channels login --verbose",
@@ -29,7 +32,7 @@ const EXAMPLES = [
export function configureProgramHelp(program: Command, ctx: ProgramContext) {
program
- .name("clawdbot")
+ .name(CLI_NAME)
.description("")
.version(ctx.programVersion)
.option(
@@ -77,12 +80,12 @@ export function configureProgramHelp(program: Command, ctx: ProgramContext) {
});
const fmtExamples = EXAMPLES.map(
- ([cmd, desc]) => ` ${theme.command(cmd)}\n ${theme.muted(desc)}`,
+ ([cmd, desc]) => ` ${theme.command(replaceCliName(cmd, CLI_NAME))}\n ${theme.muted(desc)}`,
).join("\n");
program.addHelpText("afterAll", ({ command }) => {
if (command !== program) return "";
- const docs = formatDocsLink("/cli", "docs.clawd.bot/cli");
+ const docs = formatDocsLink("/cli", "docs.molt.bot/cli");
return `\n${theme.heading("Examples:")}\n${fmtExamples}\n\n${theme.muted("Docs:")} ${docs}\n`;
});
}
diff --git a/src/cli/program/preaction.ts b/src/cli/program/preaction.ts
index 1607e0634..acdcde387 100644
--- a/src/cli/program/preaction.ts
+++ b/src/cli/program/preaction.ts
@@ -6,6 +6,7 @@ import { ensureConfigReady } from "./config-guard.js";
import { ensurePluginRegistryLoaded } from "../plugin-registry.js";
import { isTruthyEnvValue } from "../../infra/env.js";
import { setVerbose } from "../../globals.js";
+import { resolveCliName } from "../cli-name.js";
function setProcessTitleForCommand(actionCommand: Command) {
let current: Command = actionCommand;
@@ -13,8 +14,9 @@ function setProcessTitleForCommand(actionCommand: Command) {
current = current.parent;
}
const name = current.name();
- if (!name || name === "clawdbot") return;
- process.title = `clawdbot-${name}`;
+ const cliName = resolveCliName();
+ if (!name || name === cliName) return;
+ process.title = `${cliName}-${name}`;
}
// Commands that need channel plugins loaded
diff --git a/src/cli/program/register.agent.ts b/src/cli/program/register.agent.ts
index d597efde9..80eb9a35f 100644
--- a/src/cli/program/register.agent.ts
+++ b/src/cli/program/register.agent.ts
@@ -68,7 +68,7 @@ ${formatHelpExamples([
],
])}
-${theme.muted("Docs:")} ${formatDocsLink("/cli/agent", "docs.clawd.bot/cli/agent")}`,
+${theme.muted("Docs:")} ${formatDocsLink("/cli/agent", "docs.molt.bot/cli/agent")}`,
)
.action(async (opts) => {
const verboseLevel = typeof opts.verbose === "string" ? opts.verbose.toLowerCase() : "";
@@ -86,7 +86,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/agent", "docs.clawd.bot/cli/agent
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/agents", "docs.clawd.bot/cli/agents")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/agents", "docs.molt.bot/cli/agents")}\n`,
);
agents
diff --git a/src/cli/program/register.configure.ts b/src/cli/program/register.configure.ts
index a10805e88..55bec5209 100644
--- a/src/cli/program/register.configure.ts
+++ b/src/cli/program/register.configure.ts
@@ -16,7 +16,7 @@ export function registerConfigureCommand(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/configure", "docs.clawd.bot/cli/configure")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/configure", "docs.molt.bot/cli/configure")}\n`,
)
.option(
"--section ",
diff --git a/src/cli/program/register.maintenance.ts b/src/cli/program/register.maintenance.ts
index 023965c5c..efb8b7851 100644
--- a/src/cli/program/register.maintenance.ts
+++ b/src/cli/program/register.maintenance.ts
@@ -15,7 +15,7 @@ export function registerMaintenanceCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/doctor", "docs.clawd.bot/cli/doctor")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/doctor", "docs.molt.bot/cli/doctor")}\n`,
)
.option("--no-workspace-suggestions", "Disable workspace memory system suggestions", false)
.option("--yes", "Accept defaults without prompting", false)
@@ -45,7 +45,7 @@ export function registerMaintenanceCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dashboard", "docs.clawd.bot/cli/dashboard")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/dashboard", "docs.molt.bot/cli/dashboard")}\n`,
)
.option("--no-open", "Print URL but do not launch a browser", false)
.action(async (opts) => {
@@ -62,7 +62,7 @@ export function registerMaintenanceCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/reset", "docs.clawd.bot/cli/reset")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/reset", "docs.molt.bot/cli/reset")}\n`,
)
.option("--scope ", "config|config+creds+sessions|full (default: interactive prompt)")
.option("--yes", "Skip confirmation prompts", false)
@@ -85,7 +85,7 @@ export function registerMaintenanceCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/uninstall", "docs.clawd.bot/cli/uninstall")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/uninstall", "docs.molt.bot/cli/uninstall")}\n`,
)
.option("--service", "Remove the gateway service", false)
.option("--state", "Remove state + config", false)
diff --git a/src/cli/program/register.message.ts b/src/cli/program/register.message.ts
index 24af5f37f..b9fa22a47 100644
--- a/src/cli/program/register.message.ts
+++ b/src/cli/program/register.message.ts
@@ -46,7 +46,7 @@ ${formatHelpExamples([
],
])}
-${theme.muted("Docs:")} ${formatDocsLink("/cli/message", "docs.clawd.bot/cli/message")}`,
+${theme.muted("Docs:")} ${formatDocsLink("/cli/message", "docs.molt.bot/cli/message")}`,
)
.action(() => {
message.help({ error: true });
diff --git a/src/cli/program/register.onboard.ts b/src/cli/program/register.onboard.ts
index eac6a60df..8f31635f0 100644
--- a/src/cli/program/register.onboard.ts
+++ b/src/cli/program/register.onboard.ts
@@ -38,7 +38,7 @@ export function registerOnboardCommand(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/onboard", "docs.clawd.bot/cli/onboard")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/onboard", "docs.molt.bot/cli/onboard")}\n`,
)
.option("--workspace ", "Agent workspace directory (default: ~/clawd)")
.option("--reset", "Reset config + credentials + sessions + workspace before running wizard")
diff --git a/src/cli/program/register.setup.ts b/src/cli/program/register.setup.ts
index aa79a5dda..ad36a70e5 100644
--- a/src/cli/program/register.setup.ts
+++ b/src/cli/program/register.setup.ts
@@ -14,7 +14,7 @@ export function registerSetupCommand(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/setup", "docs.clawd.bot/cli/setup")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/setup", "docs.molt.bot/cli/setup")}\n`,
)
.option(
"--workspace ",
diff --git a/src/cli/program/register.status-health-sessions.ts b/src/cli/program/register.status-health-sessions.ts
index 66d0c4abb..42913588f 100644
--- a/src/cli/program/register.status-health-sessions.ts
+++ b/src/cli/program/register.status-health-sessions.ts
@@ -53,7 +53,7 @@ export function registerStatusHealthSessionsCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/status", "docs.clawd.bot/cli/status")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/status", "docs.molt.bot/cli/status")}\n`,
)
.action(async (opts) => {
const verbose = resolveVerbose(opts);
@@ -87,7 +87,7 @@ export function registerStatusHealthSessionsCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/health", "docs.clawd.bot/cli/health")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/health", "docs.molt.bot/cli/health")}\n`,
)
.action(async (opts) => {
const verbose = resolveVerbose(opts);
@@ -130,7 +130,7 @@ export function registerStatusHealthSessionsCommands(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/sessions", "docs.clawd.bot/cli/sessions")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/sessions", "docs.molt.bot/cli/sessions")}\n`,
)
.action(async (opts) => {
setVerbose(Boolean(opts.verbose));
diff --git a/src/cli/sandbox-cli.ts b/src/cli/sandbox-cli.ts
index 746566f82..bcf9df54a 100644
--- a/src/cli/sandbox-cli.ts
+++ b/src/cli/sandbox-cli.ts
@@ -68,7 +68,7 @@ export function registerSandboxCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/sandbox", "docs.clawd.bot/cli/sandbox")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/sandbox", "docs.molt.bot/cli/sandbox")}\n`,
)
.action(() => {
sandbox.help({ error: true });
diff --git a/src/cli/security-cli.ts b/src/cli/security-cli.ts
index 2bd5a36b7..7a72ad6da 100644
--- a/src/cli/security-cli.ts
+++ b/src/cli/security-cli.ts
@@ -34,7 +34,7 @@ export function registerSecurityCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/security", "docs.clawd.bot/cli/security")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/security", "docs.molt.bot/cli/security")}\n`,
);
security
diff --git a/src/cli/skills-cli.ts b/src/cli/skills-cli.ts
index 7488aee83..520b1a5c0 100644
--- a/src/cli/skills-cli.ts
+++ b/src/cli/skills-cli.ts
@@ -337,7 +337,7 @@ export function registerSkillsCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/skills", "docs.clawd.bot/cli/skills")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/skills", "docs.molt.bot/cli/skills")}\n`,
);
skills
diff --git a/src/cli/system-cli.ts b/src/cli/system-cli.ts
index 4162c16de..9ade7aa15 100644
--- a/src/cli/system-cli.ts
+++ b/src/cli/system-cli.ts
@@ -23,7 +23,7 @@ export function registerSystemCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.clawd.bot/cli/system")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/system", "docs.molt.bot/cli/system")}\n`,
);
addGatewayClientOptions(
diff --git a/src/cli/tui-cli.ts b/src/cli/tui-cli.ts
index 3fbf6bc86..795642410 100644
--- a/src/cli/tui-cli.ts
+++ b/src/cli/tui-cli.ts
@@ -20,7 +20,7 @@ export function registerTuiCli(program: Command) {
.option("--history-limit ", "History entries to load", "200")
.addHelpText(
"after",
- () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.clawd.bot/cli/tui")}\n`,
+ () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/tui", "docs.molt.bot/cli/tui")}\n`,
)
.action(async (opts) => {
try {
diff --git a/src/cli/update-cli.ts b/src/cli/update-cli.ts
index 9e597e485..c80878f90 100644
--- a/src/cli/update-cli.ts
+++ b/src/cli/update-cli.ts
@@ -39,6 +39,7 @@ import { trimLogTail } from "../infra/restart-sentinel.js";
import { defaultRuntime } from "../runtime.js";
import { formatDocsLink } from "../terminal/links.js";
import { formatCliCommand } from "./command-format.js";
+import { replaceCliName, resolveCliName } from "./cli-name.js";
import { stylePromptHint, stylePromptMessage } from "../terminal/prompt-style.js";
import { theme } from "../terminal/theme.js";
import { renderTable } from "../terminal/table.js";
@@ -81,6 +82,7 @@ const STEP_LABELS: Record = {
build: "Building",
"ui:build": "Building UI",
"clawdbot doctor": "Running doctor checks",
+ "moltbot doctor": "Running doctor checks",
"git rev-parse HEAD (after)": "Verifying update",
"global update": "Updating via package manager",
"global install": "Installing global package",
@@ -110,6 +112,9 @@ const UPDATE_QUIPS = [
];
const MAX_LOG_CHARS = 8000;
+const DEFAULT_PACKAGE_NAME = "moltbot";
+const CORE_PACKAGE_NAMES = new Set([DEFAULT_PACKAGE_NAME, "clawdbot"]);
+const CLI_NAME = resolveCliName();
const CLAWDBOT_REPO_URL = "https://github.com/clawdbot/clawdbot.git";
const DEFAULT_GIT_DIR = path.join(os.homedir(), "clawdbot");
@@ -117,7 +122,11 @@ function normalizeTag(value?: string | null): string | null {
if (!value) return null;
const trimmed = value.trim();
if (!trimmed) return null;
- return trimmed.startsWith("clawdbot@") ? trimmed.slice("clawdbot@".length) : trimmed;
+ if (trimmed.startsWith("clawdbot@")) return trimmed.slice("clawdbot@".length);
+ if (trimmed.startsWith(`${DEFAULT_PACKAGE_NAME}@`)) {
+ return trimmed.slice(`${DEFAULT_PACKAGE_NAME}@`.length);
+ }
+ return trimmed;
}
function pickUpdateQuip(): string {
@@ -157,16 +166,22 @@ async function isGitCheckout(root: string): Promise {
}
}
-async function isClawdbotPackage(root: string): Promise {
+async function readPackageName(root: string): Promise {
try {
const raw = await fs.readFile(path.join(root, "package.json"), "utf-8");
const parsed = JSON.parse(raw) as { name?: string };
- return parsed?.name === "clawdbot";
+ const name = parsed?.name?.trim();
+ return name ? name : null;
} catch {
- return false;
+ return null;
}
}
+async function isCorePackage(root: string): Promise {
+ const name = await readPackageName(root);
+ return Boolean(name && CORE_PACKAGE_NAMES.has(name));
+}
+
async function pathExists(targetPath: string): Promise {
try {
await fs.stat(targetPath);
@@ -269,8 +284,8 @@ async function ensureGitCheckout(params: {
});
}
- if (!(await isClawdbotPackage(params.dir))) {
- throw new Error(`CLAWDBOT_GIT_DIR does not look like a clawdbot checkout: ${params.dir}.`);
+ if (!(await isCorePackage(params.dir))) {
+ throw new Error(`CLAWDBOT_GIT_DIR does not look like a core checkout: ${params.dir}.`);
}
return null;
@@ -691,10 +706,13 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise {
return { stdout: res.stdout, stderr: res.stderr, code: res.code };
};
const pkgRoot = await resolveGlobalPackageRoot(manager, runCommand, timeoutMs ?? 20 * 60_000);
+ const packageName =
+ (pkgRoot ? await readPackageName(pkgRoot) : await readPackageName(root)) ??
+ DEFAULT_PACKAGE_NAME;
const beforeVersion = pkgRoot ? await readPackageVersion(pkgRoot) : null;
const updateStep = await runUpdateStep({
name: "global update",
- argv: globalInstallArgs(manager, `clawdbot@${tag}`),
+ argv: globalInstallArgs(manager, `${packageName}@${tag}`),
timeoutMs: timeoutMs ?? 20 * 60_000,
progress,
});
@@ -705,7 +723,7 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise {
const entryPath = path.join(pkgRoot, "dist", "entry.js");
if (await pathExists(entryPath)) {
const doctorStep = await runUpdateStep({
- name: "clawdbot doctor",
+ name: `${CLI_NAME} doctor`,
argv: [resolveNodeRunner(), entryPath, "doctor", "--non-interactive"],
timeoutMs: timeoutMs ?? 20 * 60_000,
progress,
@@ -806,11 +824,13 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise {
if (result.reason === "not-git-install") {
defaultRuntime.log(
theme.warn(
- `Skipped: this Clawdbot install isn't a git checkout, and the package manager couldn't be detected. Update via your package manager, then run \`${formatCliCommand("clawdbot doctor")}\` and \`${formatCliCommand("clawdbot gateway restart")}\`.`,
+ `Skipped: this Clawdbot install isn't a git checkout, and the package manager couldn't be detected. Update via your package manager, then run \`${replaceCliName(formatCliCommand("clawdbot doctor"), CLI_NAME)}\` and \`${replaceCliName(formatCliCommand("clawdbot gateway restart"), CLI_NAME)}\`.`,
),
);
defaultRuntime.log(
- theme.muted("Examples: `npm i -g clawdbot@latest` or `pnpm add -g clawdbot@latest`"),
+ theme.muted(
+ `Examples: \`${replaceCliName("npm i -g clawdbot@latest", CLI_NAME)}\` or \`${replaceCliName("pnpm add -g clawdbot@latest", CLI_NAME)}\``,
+ ),
);
}
defaultRuntime.exit(0);
@@ -926,7 +946,7 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise {
defaultRuntime.log(theme.warn(`Daemon restart failed: ${String(err)}`));
defaultRuntime.log(
theme.muted(
- `You may need to restart the service manually: ${formatCliCommand("clawdbot gateway restart")}`,
+ `You may need to restart the service manually: ${replaceCliName(formatCliCommand("clawdbot gateway restart"), CLI_NAME)}`,
),
);
}
@@ -936,13 +956,13 @@ export async function updateCommand(opts: UpdateCommandOptions): Promise {
if (result.mode === "npm" || result.mode === "pnpm") {
defaultRuntime.log(
theme.muted(
- `Tip: Run \`${formatCliCommand("clawdbot doctor")}\`, then \`${formatCliCommand("clawdbot gateway restart")}\` to apply updates to a running gateway.`,
+ `Tip: Run \`${replaceCliName(formatCliCommand("clawdbot doctor"), CLI_NAME)}\`, then \`${replaceCliName(formatCliCommand("clawdbot gateway restart"), CLI_NAME)}\` to apply updates to a running gateway.`,
),
);
} else {
defaultRuntime.log(
theme.muted(
- `Tip: Run \`${formatCliCommand("clawdbot gateway restart")}\` to apply updates to a running gateway.`,
+ `Tip: Run \`${replaceCliName(formatCliCommand("clawdbot gateway restart"), CLI_NAME)}\` to apply updates to a running gateway.`,
),
);
}
@@ -1137,7 +1157,7 @@ ${theme.heading("Notes:")}
- Downgrades require confirmation (can break configuration)
- Skips update if the working directory has uncommitted changes
-${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.clawd.bot/cli/update")}`;
+${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.molt.bot/cli/update")}`;
})
.action(async (opts) => {
try {
@@ -1161,7 +1181,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.clawd.bot/cli/upda
.option("--timeout ", "Timeout for each update step in seconds (default: 1200)")
.addHelpText(
"after",
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.clawd.bot/cli/update")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.molt.bot/cli/update")}\n`,
)
.action(async (opts) => {
try {
@@ -1188,7 +1208,7 @@ ${theme.muted("Docs:")} ${formatDocsLink("/cli/update", "docs.clawd.bot/cli/upda
"- Shows current update channel (stable/beta/dev) and source",
)}\n${theme.muted("- Includes git tag/branch/SHA for source checkouts")}\n\n${theme.muted(
"Docs:",
- )} ${formatDocsLink("/cli/update", "docs.clawd.bot/cli/update")}`,
+ )} ${formatDocsLink("/cli/update", "docs.molt.bot/cli/update")}`,
)
.action(async (opts) => {
try {
diff --git a/src/cli/webhooks-cli.ts b/src/cli/webhooks-cli.ts
index 08c77af4d..1792533c2 100644
--- a/src/cli/webhooks-cli.ts
+++ b/src/cli/webhooks-cli.ts
@@ -28,7 +28,7 @@ export function registerWebhooksCli(program: Command) {
.addHelpText(
"after",
() =>
- `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.clawd.bot/cli/webhooks")}\n`,
+ `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/webhooks", "docs.molt.bot/cli/webhooks")}\n`,
);
const gmail = webhooks.command("gmail").description("Gmail Pub/Sub hooks (via gogcli)");
diff --git a/src/commands/agents.commands.add.ts b/src/commands/agents.commands.add.ts
index 53b8ba049..5423ac79e 100644
--- a/src/commands/agents.commands.add.ts
+++ b/src/commands/agents.commands.add.ts
@@ -326,7 +326,7 @@ export async function agentsAddCommand(
await prompter.note(
[
"Routing unchanged. Add bindings when you're ready.",
- "Docs: https://docs.clawd.bot/concepts/multi-agent",
+ "Docs: https://docs.molt.bot/concepts/multi-agent",
].join("\n"),
"Routing",
);
diff --git a/src/commands/auth-choice.apply.openai.ts b/src/commands/auth-choice.apply.openai.ts
index 947b81181..d00208fab 100644
--- a/src/commands/auth-choice.apply.openai.ts
+++ b/src/commands/auth-choice.apply.openai.ts
@@ -138,7 +138,7 @@ export async function applyAuthChoiceOpenAI(
spin.stop("OpenAI OAuth failed");
params.runtime.error(String(err));
await params.prompter.note(
- "Trouble with OAuth? See https://docs.clawd.bot/start/faq",
+ "Trouble with OAuth? See https://docs.molt.bot/start/faq",
"OAuth help",
);
}
diff --git a/src/commands/channels.adds-non-default-telegram-account.test.ts b/src/commands/channels.adds-non-default-telegram-account.test.ts
index d5241a2fd..ff04b5c24 100644
--- a/src/commands/channels.adds-non-default-telegram-account.test.ts
+++ b/src/commands/channels.adds-non-default-telegram-account.test.ts
@@ -370,7 +370,7 @@ describe("channels command", () => {
});
expect(lines.join("\n")).toMatch(/Warnings:/);
expect(lines.join("\n")).toMatch(/Message Content Intent is disabled/i);
- expect(lines.join("\n")).toMatch(/Run: clawdbot( --profile isolated)? doctor/);
+ expect(lines.join("\n")).toMatch(/Run: (?:clawdbot|moltbot)( --profile isolated)? doctor/);
});
it("surfaces Discord permission audit issues in channels status output", () => {
diff --git a/src/commands/configure.gateway.ts b/src/commands/configure.gateway.ts
index d572e54a9..273231f31 100644
--- a/src/commands/configure.gateway.ts
+++ b/src/commands/configure.gateway.ts
@@ -139,9 +139,7 @@ export async function promptGatewayConfig(
let tailscaleResetOnExit = false;
if (tailscaleMode !== "off") {
note(
- ["Docs:", "https://docs.clawd.bot/gateway/tailscale", "https://docs.clawd.bot/web"].join(
- "\n",
- ),
+ ["Docs:", "https://docs.molt.bot/gateway/tailscale", "https://docs.molt.bot/web"].join("\n"),
"Tailscale",
);
tailscaleResetOnExit = Boolean(
diff --git a/src/commands/configure.wizard.ts b/src/commands/configure.wizard.ts
index 7563643e1..535efef31 100644
--- a/src/commands/configure.wizard.ts
+++ b/src/commands/configure.wizard.ts
@@ -100,7 +100,7 @@ async function promptWebToolsConfig(
[
"Web search lets your agent look things up online using the `web_search` tool.",
"It requires a Brave Search API key (you can store it in the config or set BRAVE_API_KEY in the Gateway environment).",
- "Docs: https://docs.clawd.bot/tools/web",
+ "Docs: https://docs.molt.bot/tools/web",
].join("\n"),
"Web search",
);
@@ -136,7 +136,7 @@ async function promptWebToolsConfig(
[
"No key stored yet, so web_search will stay unavailable.",
"Store a key here or set BRAVE_API_KEY in the Gateway environment.",
- "Docs: https://docs.clawd.bot/tools/web",
+ "Docs: https://docs.molt.bot/tools/web",
].join("\n"),
"Web search",
);
@@ -189,7 +189,7 @@ export async function runConfigureWizard(
[
...snapshot.issues.map((iss) => `- ${iss.path}: ${iss.message}`),
"",
- "Docs: https://docs.clawd.bot/gateway/configuration",
+ "Docs: https://docs.molt.bot/gateway/configuration",
].join("\n"),
"Config issues",
);
@@ -393,8 +393,8 @@ export async function runConfigureWizard(
note(
[
"Docs:",
- "https://docs.clawd.bot/gateway/health",
- "https://docs.clawd.bot/gateway/troubleshooting",
+ "https://docs.molt.bot/gateway/health",
+ "https://docs.molt.bot/gateway/troubleshooting",
].join("\n"),
"Health check help",
);
@@ -518,8 +518,8 @@ export async function runConfigureWizard(
note(
[
"Docs:",
- "https://docs.clawd.bot/gateway/health",
- "https://docs.clawd.bot/gateway/troubleshooting",
+ "https://docs.molt.bot/gateway/health",
+ "https://docs.molt.bot/gateway/troubleshooting",
].join("\n"),
"Health check help",
);
@@ -577,7 +577,7 @@ export async function runConfigureWizard(
`Web UI: ${links.httpUrl}`,
`Gateway WS: ${links.wsUrl}`,
gatewayStatusLine,
- "Docs: https://docs.clawd.bot/web/control-ui",
+ "Docs: https://docs.molt.bot/web/control-ui",
].join("\n"),
"Control UI",
);
diff --git a/src/commands/daemon-install-helpers.test.ts b/src/commands/daemon-install-helpers.test.ts
index e3b873737..179da04a2 100644
--- a/src/commands/daemon-install-helpers.test.ts
+++ b/src/commands/daemon-install-helpers.test.ts
@@ -235,7 +235,7 @@ describe("gatewayInstallErrorHint", () => {
it("returns platform-specific hints", () => {
expect(gatewayInstallErrorHint("win32")).toContain("Run as administrator");
expect(gatewayInstallErrorHint("linux")).toMatch(
- /clawdbot( --profile isolated)? gateway install/,
+ /(?:clawdbot|moltbot)( --profile isolated)? gateway install/,
);
});
});
diff --git a/src/commands/docs.ts b/src/commands/docs.ts
index 4ca479f65..d0f01ce6e 100644
--- a/src/commands/docs.ts
+++ b/src/commands/docs.ts
@@ -5,7 +5,7 @@ import { formatDocsLink } from "../terminal/links.js";
import { isRich, theme } from "../terminal/theme.js";
import { formatCliCommand } from "../cli/command-format.js";
-const SEARCH_TOOL = "https://docs.clawd.bot/mcp.SearchClawdbot";
+const SEARCH_TOOL = "https://docs.molt.bot/mcp.SearchClawdbot";
const SEARCH_TIMEOUT_MS = 30_000;
const DEFAULT_SNIPPET_MAX = 220;
@@ -148,12 +148,12 @@ async function renderMarkdown(markdown: string, runtime: RuntimeEnv) {
export async function docsSearchCommand(queryParts: string[], runtime: RuntimeEnv) {
const query = queryParts.join(" ").trim();
if (!query) {
- const docs = formatDocsLink("/", "docs.clawd.bot");
+ const docs = formatDocsLink("/", "docs.molt.bot");
if (isRich()) {
runtime.log(`${theme.muted("Docs:")} ${docs}`);
runtime.log(`${theme.muted("Search:")} ${formatCliCommand('clawdbot docs "your query"')}`);
} else {
- runtime.log("Docs: https://docs.clawd.bot/");
+ runtime.log("Docs: https://docs.molt.bot/");
runtime.log(`Search: ${formatCliCommand('clawdbot docs "your query"')}`);
}
return;
diff --git a/src/commands/onboard-helpers.ts b/src/commands/onboard-helpers.ts
index dd8288a60..27c74ae00 100644
--- a/src/commands/onboard-helpers.ts
+++ b/src/commands/onboard-helpers.ts
@@ -177,8 +177,8 @@ export function formatControlUiSshHint(params: {
localUrl,
authedUrl,
"Docs:",
- "https://docs.clawd.bot/gateway/remote",
- "https://docs.clawd.bot/web/control-ui",
+ "https://docs.molt.bot/gateway/remote",
+ "https://docs.molt.bot/web/control-ui",
]
.filter(Boolean)
.join("\n");
diff --git a/src/commands/onboard-hooks.test.ts b/src/commands/onboard-hooks.test.ts
index 10c99140a..e83f61399 100644
--- a/src/commands/onboard-hooks.test.ts
+++ b/src/commands/onboard-hooks.test.ts
@@ -239,7 +239,7 @@ describe("onboard-hooks", () => {
// Second note should confirm configuration
expect(noteCalls[1][0]).toContain("Enabled 1 hook: session-memory");
- expect(noteCalls[1][0]).toMatch(/clawdbot( --profile isolated)? hooks list/);
+ expect(noteCalls[1][0]).toMatch(/(?:clawdbot|moltbot)( --profile isolated)? hooks list/);
});
});
});
diff --git a/src/commands/onboard-hooks.ts b/src/commands/onboard-hooks.ts
index 10cdf1293..9fcc322a7 100644
--- a/src/commands/onboard-hooks.ts
+++ b/src/commands/onboard-hooks.ts
@@ -15,7 +15,7 @@ export async function setupInternalHooks(
"Hooks let you automate actions when agent commands are issued.",
"Example: Save session context to memory when you issue /new.",
"",
- "Learn more: https://docs.clawd.bot/hooks",
+ "Learn more: https://docs.molt.bot/hooks",
].join("\n"),
"Hooks",
);
diff --git a/src/commands/onboard-non-interactive/local.ts b/src/commands/onboard-non-interactive/local.ts
index 8701bac7a..ec78dfba9 100644
--- a/src/commands/onboard-non-interactive/local.ts
+++ b/src/commands/onboard-non-interactive/local.ts
@@ -125,7 +125,7 @@ export async function runNonInteractiveOnboardingLocal(params: {
if (!opts.json) {
runtime.log(
- `Tip: run \`${formatCliCommand("clawdbot configure --section web")}\` to store your Brave API key for web_search. Docs: https://docs.clawd.bot/tools/web`,
+ `Tip: run \`${formatCliCommand("clawdbot configure --section web")}\` to store your Brave API key for web_search. Docs: https://docs.molt.bot/tools/web`,
);
}
}
diff --git a/src/commands/onboard-non-interactive/remote.ts b/src/commands/onboard-non-interactive/remote.ts
index 1426448fc..6807434e0 100644
--- a/src/commands/onboard-non-interactive/remote.ts
+++ b/src/commands/onboard-non-interactive/remote.ts
@@ -47,7 +47,7 @@ export async function runNonInteractiveOnboardingRemote(params: {
runtime.log(`Remote gateway: ${remoteUrl}`);
runtime.log(`Auth: ${payload.auth}`);
runtime.log(
- `Tip: run \`${formatCliCommand("clawdbot configure --section web")}\` to store your Brave API key for web_search. Docs: https://docs.clawd.bot/tools/web`,
+ `Tip: run \`${formatCliCommand("clawdbot configure --section web")}\` to store your Brave API key for web_search. Docs: https://docs.molt.bot/tools/web`,
);
}
}
diff --git a/src/commands/onboard-remote.ts b/src/commands/onboard-remote.ts
index 24c8773c8..cb71cabdf 100644
--- a/src/commands/onboard-remote.ts
+++ b/src/commands/onboard-remote.ts
@@ -43,7 +43,7 @@ export async function promptRemoteGatewayConfig(
await prompter.note(
[
"Bonjour discovery requires dns-sd (macOS) or avahi-browse (Linux).",
- "Docs: https://docs.clawd.bot/gateway/discovery",
+ "Docs: https://docs.molt.bot/gateway/discovery",
].join("\n"),
"Discovery",
);
@@ -96,7 +96,7 @@ export async function promptRemoteGatewayConfig(
`ssh -N -L 18789:127.0.0.1:18789 @${host}${
selectedBeacon.sshPort ? ` -p ${selectedBeacon.sshPort}` : ""
}`,
- "Docs: https://docs.clawd.bot/gateway/remote",
+ "Docs: https://docs.molt.bot/gateway/remote",
].join("\n"),
"SSH tunnel",
);
diff --git a/src/commands/onboard-skills.ts b/src/commands/onboard-skills.ts
index ce3b06123..8d90dccee 100644
--- a/src/commands/onboard-skills.ts
+++ b/src/commands/onboard-skills.ts
@@ -156,7 +156,7 @@ export async function setupSkills(
runtime.log(
`Tip: run \`${formatCliCommand("clawdbot doctor")}\` to review skills + requirements.`,
);
- runtime.log("Docs: https://docs.clawd.bot/skills");
+ runtime.log("Docs: https://docs.molt.bot/skills");
}
}
}
diff --git a/src/commands/onboard.ts b/src/commands/onboard.ts
index 348aca613..6ede2b768 100644
--- a/src/commands/onboard.ts
+++ b/src/commands/onboard.ts
@@ -44,7 +44,7 @@ export async function onboardCommand(opts: OnboardOptions, runtime: RuntimeEnv =
runtime.error(
[
"Non-interactive onboarding requires explicit risk acknowledgement.",
- "Read: https://docs.clawd.bot/security",
+ "Read: https://docs.molt.bot/security",
`Re-run with: ${formatCliCommand("clawdbot onboard --non-interactive --accept-risk ...")}`,
].join("\n"),
);
@@ -65,7 +65,7 @@ export async function onboardCommand(opts: OnboardOptions, runtime: RuntimeEnv =
[
"Windows detected.",
"WSL2 is strongly recommended; native Windows is untested and more problematic.",
- "Guide: https://docs.clawd.bot/windows",
+ "Guide: https://docs.molt.bot/windows",
].join("\n"),
);
}
diff --git a/src/commands/sandbox-explain.test.ts b/src/commands/sandbox-explain.test.ts
index d3e5ea2ee..a2fa611d8 100644
--- a/src/commands/sandbox-explain.test.ts
+++ b/src/commands/sandbox-explain.test.ts
@@ -36,7 +36,7 @@ describe("sandbox explain command", () => {
const out = logs.join("");
const parsed = JSON.parse(out);
- expect(parsed).toHaveProperty("docsUrl", "https://docs.clawd.bot/sandbox");
+ expect(parsed).toHaveProperty("docsUrl", "https://docs.molt.bot/sandbox");
expect(parsed).toHaveProperty("sandbox.mode", "all");
expect(parsed).toHaveProperty("sandbox.tools.sources.allow.source");
expect(Array.isArray(parsed.fixIt)).toBe(true);
diff --git a/src/commands/sandbox-explain.ts b/src/commands/sandbox-explain.ts
index daaa9e483..f7c4c1cdb 100644
--- a/src/commands/sandbox-explain.ts
+++ b/src/commands/sandbox-explain.ts
@@ -30,7 +30,7 @@ type SandboxExplainOptions = {
json: boolean;
};
-const SANDBOX_DOCS_URL = "https://docs.clawd.bot/sandbox";
+const SANDBOX_DOCS_URL = "https://docs.molt.bot/sandbox";
function normalizeExplainSessionKey(params: {
cfg: ClawdbotConfig;
@@ -307,7 +307,7 @@ export async function sandboxExplainCommand(
lines.push(heading("Fix-it:"));
for (const key of payload.fixIt) lines.push(` - ${key}`);
lines.push("");
- lines.push(`${key("Docs:")} ${formatDocsLink("/sandbox", "docs.clawd.bot/sandbox")}`);
+ lines.push(`${key("Docs:")} ${formatDocsLink("/sandbox", "docs.molt.bot/sandbox")}`);
runtime.log(`${lines.join("\n")}\n`);
}
diff --git a/src/commands/status-all/diagnosis.ts b/src/commands/status-all/diagnosis.ts
index 90912da1b..5e73e3743 100644
--- a/src/commands/status-all/diagnosis.ts
+++ b/src/commands/status-all/diagnosis.ts
@@ -234,6 +234,6 @@ export async function appendStatusAllDiagnosis(params: {
lines.push("");
lines.push(muted("Pasteable debug report. Auth tokens redacted."));
- lines.push("Troubleshooting: https://docs.clawd.bot/troubleshooting");
+ lines.push("Troubleshooting: https://docs.molt.bot/troubleshooting");
lines.push("");
}
diff --git a/src/commands/status.command.ts b/src/commands/status.command.ts
index 1ce771ac8..c36b91c99 100644
--- a/src/commands/status.command.ts
+++ b/src/commands/status.command.ts
@@ -560,8 +560,8 @@ export async function statusCommand(
}
runtime.log("");
- runtime.log("FAQ: https://docs.clawd.bot/faq");
- runtime.log("Troubleshooting: https://docs.clawd.bot/troubleshooting");
+ runtime.log("FAQ: https://docs.molt.bot/faq");
+ runtime.log("Troubleshooting: https://docs.molt.bot/troubleshooting");
runtime.log("");
const updateHint = formatUpdateAvailableHint(update);
if (updateHint) {
diff --git a/src/commands/status.test.ts b/src/commands/status.test.ts
index ca9d8ae96..047f43a07 100644
--- a/src/commands/status.test.ts
+++ b/src/commands/status.test.ts
@@ -330,6 +330,8 @@ describe("statusCommand", () => {
expect(
logs.some(
(l) =>
+ l.includes("moltbot status --all") ||
+ l.includes("moltbot --profile isolated status --all") ||
l.includes("clawdbot status --all") ||
l.includes("clawdbot --profile isolated status --all"),
),
diff --git a/src/hooks/bundled/README.md b/src/hooks/bundled/README.md
index 48ad5ea95..77df25ee4 100644
--- a/src/hooks/bundled/README.md
+++ b/src/hooks/bundled/README.md
@@ -39,7 +39,7 @@ Swaps injected `SOUL.md` content with `SOUL_EVIL.md` during a purge window or by
**Events**: `agent:bootstrap`
**What it does**: Overrides the injected SOUL content before the system prompt is built.
**Output**: No files written; swaps happen in-memory only.
-**Docs**: https://docs.clawd.bot/hooks/soul-evil
+**Docs**: https://docs.molt.bot/hooks/soul-evil
**Enable**:
@@ -82,7 +82,7 @@ session-memory/
---
name: my-hook
description: "Short description"
-homepage: https://docs.clawd.bot/hooks#my-hook
+homepage: https://docs.molt.bot/hooks#my-hook
metadata:
{ "clawdbot": { "emoji": "🔗", "events": ["command:new"], "requires": { "bins": ["node"] } } }
---
@@ -221,4 +221,4 @@ Test your hooks by:
## Documentation
-Full documentation: https://docs.clawd.bot/hooks
+Full documentation: https://docs.molt.bot/hooks
diff --git a/src/hooks/bundled/boot-md/HOOK.md b/src/hooks/bundled/boot-md/HOOK.md
index dac210b62..2572c50cc 100644
--- a/src/hooks/bundled/boot-md/HOOK.md
+++ b/src/hooks/bundled/boot-md/HOOK.md
@@ -1,7 +1,7 @@
---
name: boot-md
description: "Run BOOT.md on gateway startup"
-homepage: https://docs.clawd.bot/hooks#boot-md
+homepage: https://docs.molt.bot/hooks#boot-md
metadata:
{
"clawdbot":
diff --git a/src/hooks/bundled/command-logger/HOOK.md b/src/hooks/bundled/command-logger/HOOK.md
index 10034fab8..bf33cdeff 100644
--- a/src/hooks/bundled/command-logger/HOOK.md
+++ b/src/hooks/bundled/command-logger/HOOK.md
@@ -1,7 +1,7 @@
---
name: command-logger
description: "Log all command events to a centralized audit file"
-homepage: https://docs.clawd.bot/hooks#command-logger
+homepage: https://docs.molt.bot/hooks#command-logger
metadata:
{
"clawdbot":
diff --git a/src/hooks/bundled/session-memory/HOOK.md b/src/hooks/bundled/session-memory/HOOK.md
index cc3eab0a2..bb3ac1468 100644
--- a/src/hooks/bundled/session-memory/HOOK.md
+++ b/src/hooks/bundled/session-memory/HOOK.md
@@ -1,7 +1,7 @@
---
name: session-memory
description: "Save session context to memory when /new command is issued"
-homepage: https://docs.clawd.bot/hooks#session-memory
+homepage: https://docs.molt.bot/hooks#session-memory
metadata:
{
"clawdbot":
diff --git a/src/hooks/bundled/soul-evil/HOOK.md b/src/hooks/bundled/soul-evil/HOOK.md
index 776163bd0..7bb50620b 100644
--- a/src/hooks/bundled/soul-evil/HOOK.md
+++ b/src/hooks/bundled/soul-evil/HOOK.md
@@ -1,7 +1,7 @@
---
name: soul-evil
description: "Swap SOUL.md with SOUL_EVIL.md during a purge window or by random chance"
-homepage: https://docs.clawd.bot/hooks/soul-evil
+homepage: https://docs.molt.bot/hooks/soul-evil
metadata:
{
"clawdbot":
diff --git a/src/hooks/bundled/soul-evil/README.md b/src/hooks/bundled/soul-evil/README.md
index 3f0e09a85..a49bfe33d 100644
--- a/src/hooks/bundled/soul-evil/README.md
+++ b/src/hooks/bundled/soul-evil/README.md
@@ -2,7 +2,7 @@
Small persona swap hook for Clawdbot.
-Docs: https://docs.clawd.bot/hooks/soul-evil
+Docs: https://docs.molt.bot/hooks/soul-evil
## Setup
diff --git a/src/hooks/frontmatter.test.ts b/src/hooks/frontmatter.test.ts
index 761eaa75f..91545796d 100644
--- a/src/hooks/frontmatter.test.ts
+++ b/src/hooks/frontmatter.test.ts
@@ -233,7 +233,7 @@ describe("resolveClawdbotMetadata", () => {
const content = `---
name: session-memory
description: "Save session context to memory when /new command is issued"
-homepage: https://docs.clawd.bot/hooks#session-memory
+homepage: https://docs.molt.bot/hooks#session-memory
metadata:
{
"clawdbot":
diff --git a/src/infra/clawdbot-root.ts b/src/infra/clawdbot-root.ts
index 9a3443ffb..d7d20467f 100644
--- a/src/infra/clawdbot-root.ts
+++ b/src/infra/clawdbot-root.ts
@@ -2,6 +2,8 @@ import fs from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
+const CORE_PACKAGE_NAMES = new Set(["moltbot", "clawdbot"]);
+
async function readPackageName(dir: string): Promise {
try {
const raw = await fs.readFile(path.join(dir, "package.json"), "utf-8");
@@ -16,7 +18,7 @@ async function findPackageRoot(startDir: string, maxDepth = 12): Promise {
@@ -714,7 +732,8 @@ export async function runGatewayUpdate(opts: UpdateRunnerOptions = {}): Promise<
const beforeVersion = await readPackageVersion(pkgRoot);
const globalManager = await detectGlobalInstallManagerForRoot(runCommand, pkgRoot, timeoutMs);
if (globalManager) {
- const spec = `clawdbot@${normalizeTag(opts.tag)}`;
+ const packageName = (await readPackageName(pkgRoot)) ?? DEFAULT_PACKAGE_NAME;
+ const spec = `${packageName}@${normalizeTag(opts.tag)}`;
const updateStep = await runStep({
runCommand,
name: "global update",
diff --git a/src/pairing/pairing-messages.test.ts b/src/pairing/pairing-messages.test.ts
index 416a6ab19..1997a0e30 100644
--- a/src/pairing/pairing-messages.test.ts
+++ b/src/pairing/pairing-messages.test.ts
@@ -52,9 +52,10 @@ describe("buildPairingReply", () => {
expect(text).toContain(testCase.idLine);
expect(text).toContain(`Pairing code: ${testCase.code}`);
// CLI commands should respect CLAWDBOT_PROFILE when set (most tests run with isolated profile)
- expect(text).toContain(
- `clawdbot --profile isolated pairing approve ${testCase.channel} `,
+ const commandRe = new RegExp(
+ `(?:clawdbot|moltbot) --profile isolated pairing approve ${testCase.channel} `,
);
+ expect(text).toMatch(commandRe);
});
}
});
diff --git a/src/plugins/loader.ts b/src/plugins/loader.ts
index 931c15d59..178e2d3c2 100644
--- a/src/plugins/loader.ts
+++ b/src/plugins/loader.ts
@@ -206,7 +206,14 @@ export function loadClawdbotPlugins(options: PluginLoadOptions = {}): PluginRegi
const jiti = createJiti(import.meta.url, {
interopDefault: true,
extensions: [".ts", ".tsx", ".mts", ".cts", ".mtsx", ".ctsx", ".js", ".mjs", ".cjs", ".json"],
- ...(pluginSdkAlias ? { alias: { "clawdbot/plugin-sdk": pluginSdkAlias } } : {}),
+ ...(pluginSdkAlias
+ ? {
+ alias: {
+ "clawdbot/plugin-sdk": pluginSdkAlias,
+ "moltbot/plugin-sdk": pluginSdkAlias,
+ },
+ }
+ : {}),
});
const manifestByRoot = new Map(
diff --git a/src/telegram/bot.media.downloads-media-file-path-no-file-download.test.ts b/src/telegram/bot.media.downloads-media-file-path-no-file-download.test.ts
index 165488426..58ecc8d7a 100644
--- a/src/telegram/bot.media.downloads-media-file-path-no-file-download.test.ts
+++ b/src/telegram/bot.media.downloads-media-file-path-no-file-download.test.ts
@@ -105,7 +105,8 @@ vi.mock("../auto-reply/reply.js", () => {
});
describe("telegram inbound media", () => {
- const INBOUND_MEDIA_TEST_TIMEOUT_MS = process.platform === "win32" ? 30_000 : 20_000;
+ // Parallel vitest shards can make this suite slower than the standalone run.
+ const INBOUND_MEDIA_TEST_TIMEOUT_MS = process.platform === "win32" ? 60_000 : 45_000;
it(
"downloads media via file_path (no file.download)",
diff --git a/src/terminal/links.ts b/src/terminal/links.ts
index b26ff37bb..0d965633a 100644
--- a/src/terminal/links.ts
+++ b/src/terminal/links.ts
@@ -1,6 +1,6 @@
import { formatTerminalLink } from "../utils.js";
-export const DOCS_ROOT = "https://docs.clawd.bot";
+export const DOCS_ROOT = "https://docs.molt.bot";
export function formatDocsLink(
path: string,
diff --git a/src/wizard/onboarding.finalize.ts b/src/wizard/onboarding.finalize.ts
index 32ab53dcf..670b4eaf6 100644
--- a/src/wizard/onboarding.finalize.ts
+++ b/src/wizard/onboarding.finalize.ts
@@ -214,8 +214,8 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
await prompter.note(
[
"Docs:",
- "https://docs.clawd.bot/gateway/health",
- "https://docs.clawd.bot/gateway/troubleshooting",
+ "https://docs.molt.bot/gateway/health",
+ "https://docs.molt.bot/gateway/troubleshooting",
].join("\n"),
"Health check help",
);
@@ -277,7 +277,7 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
tokenParam ? `Web UI (with token): ${authedUrl}` : undefined,
`Gateway WS: ${links.wsUrl}`,
gatewayStatusLine,
- "Docs: https://docs.clawd.bot/web/control-ui",
+ "Docs: https://docs.molt.bot/web/control-ui",
]
.filter(Boolean)
.join("\n"),
@@ -383,14 +383,14 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
}
await prompter.note(
- ["Back up your agent workspace.", "Docs: https://docs.clawd.bot/concepts/agent-workspace"].join(
+ ["Back up your agent workspace.", "Docs: https://docs.molt.bot/concepts/agent-workspace"].join(
"\n",
),
"Workspace backup",
);
await prompter.note(
- "Running agents on your computer is risky — harden your setup: https://docs.clawd.bot/security",
+ "Running agents on your computer is risky — harden your setup: https://docs.molt.bot/security",
"Security",
);
@@ -443,7 +443,7 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
webSearchKey
? "API key: stored in config (tools.web.search.apiKey)."
: "API key: provided via BRAVE_API_KEY env var (Gateway environment).",
- "Docs: https://docs.clawd.bot/tools/web",
+ "Docs: https://docs.molt.bot/tools/web",
].join("\n")
: [
"If you want your agent to be able to search the web, you’ll need an API key.",
@@ -455,13 +455,13 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
"- Enable web_search and paste your Brave Search API key",
"",
"Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes).",
- "Docs: https://docs.clawd.bot/tools/web",
+ "Docs: https://docs.molt.bot/tools/web",
].join("\n"),
"Web search (optional)",
);
await prompter.note(
- 'What now: https://clawd.bot/showcase ("What People Are Building").',
+ 'What now: https://molt.bot/showcase ("What People Are Building").',
"What now",
);
diff --git a/src/wizard/onboarding.gateway-config.ts b/src/wizard/onboarding.gateway-config.ts
index c68836b32..f8d56af62 100644
--- a/src/wizard/onboarding.gateway-config.ts
+++ b/src/wizard/onboarding.gateway-config.ts
@@ -145,9 +145,7 @@ export async function configureGatewayForOnboarding(
let tailscaleResetOnExit = flow === "quickstart" ? quickstartGateway.tailscaleResetOnExit : false;
if (tailscaleMode !== "off" && flow !== "quickstart") {
await prompter.note(
- ["Docs:", "https://docs.clawd.bot/gateway/tailscale", "https://docs.clawd.bot/web"].join(
- "\n",
- ),
+ ["Docs:", "https://docs.molt.bot/gateway/tailscale", "https://docs.molt.bot/web"].join("\n"),
"Tailscale",
);
tailscaleResetOnExit = Boolean(
diff --git a/src/wizard/onboarding.ts b/src/wizard/onboarding.ts
index 39d17befa..52f9285aa 100644
--- a/src/wizard/onboarding.ts
+++ b/src/wizard/onboarding.ts
@@ -70,7 +70,7 @@ async function requireRiskAcknowledgement(params: {
"clawdbot security audit --deep",
"clawdbot security audit --fix",
"",
- "Must read: https://docs.clawd.bot/gateway/security",
+ "Must read: https://docs.molt.bot/gateway/security",
].join("\n"),
"Security",
);
@@ -103,7 +103,7 @@ export async function runOnboardingWizard(
[
...snapshot.issues.map((iss) => `- ${iss.path}: ${iss.message}`),
"",
- "Docs: https://docs.clawd.bot/gateway/configuration",
+ "Docs: https://docs.molt.bot/gateway/configuration",
].join("\n"),
"Config issues",
);
diff --git a/ui/src/ui/app-render.ts b/ui/src/ui/app-render.ts
index fe67c86f1..49f72de8c 100644
--- a/ui/src/ui/app-render.ts
+++ b/ui/src/ui/app-render.ts
@@ -180,7 +180,7 @@ export function renderApp(state: AppViewState) {