/start
Start daemon mode or run one-shot prompt/trigger
> /plugin marketplace add moazbuilds/claudeclaw > /plugin install claudeclaw@claudeclaw
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/start
Context preview
What this command does when you run it.
Start daemon mode or run one-shot prompt/trigger
Command definition
start.mddescription: Start daemon mode or run one-shot prompt/trigger
Start the heartbeat daemon for this project. Follow these steps exactly:
1. **Block home-directory starts (CRITICAL, BLOCKER)**:
- Run `pwd` and `echo "$HOME"`.
- If `pwd` equals `$HOME`, STOP immediately.
- Tell the user exactly:
- "CRITICAL BLOCKER: For security reasons, close this session and start a new one from the folder you want to initialize ClaudeClaw in."
- Do not continue with any other step until they restart from a non-home project directory.
2. **Runtime checker (Bun + Node)**:
- Run:
which bun
which node- If `bun` is missing:
- Tell the user Bun is required and will be auto-installed.
- Run:
curl -fsSL https://bun.sh/install | bash
- Then source the shell profile to make `bun` available in the current session:
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
- Verify again with `which bun`. If still not found, tell the user installation failed and to install manually from https://bun.sh, then exit.
- Tell the user Bun was auto-installed successfully.
- If `node` is missing:
- Tell the user Node.js is required for the OGG converter helper.
- Ask them to install Node.js LTS and rerun start, then exit.
3. **Check existing config**: Read `.claude/claudeclaw/settings.json` (if it exists). Determine which sections are already configured:
- **Heartbeat configured** = `heartbeat.enabled` is `true` AND `heartbeat.prompt` is non-empty
- **Telegram configured** = `telegram.token` is non-empty
- **Discord configured** = `discord.token` is non-empty
- **Security configured** = `security.level` exists and is not `"moderate"` (the default), OR `security.allowedTools`/`security.disallowedTools` are non-empty
4. **Interactive setup — smart mode** (BEFORE launching the daemon):
**If ALL three sections are already configured**, show a summary of the current config and ask ONE question:
Use AskUserQuestion:
- "Your settings are already configured. Want to change anything?" (header: "Settings", options: "Keep current settings", "Reconfigure")
If they choose "Keep current settings", skip to step 6 (first contact question). If they choose "Reconfigure", proceed to step 5 below as if nothing was configured.
**If SOME sections are configured and others are not**, show the already-configured sections as a summary, then only ask about the unconfigured sections in step 5.
**If NOTHING is configured** (fresh install), ask about all three sections in step 5.
5. **Ask setup questions**:
Use **AskUserQuestion** to ask all unconfigured sections at once (up to 3 questions in one call):
- **Model** (always ask if `model` is empty/unset): "Which Claude model should ClaudeClaw use?" (header: "Model", options: "opus (default)", "sonnet", "haiku", "glm")
- **If heartbeat is NOT configured**: "Enable heartbeat? Example: I can remind you to drink water every 30 minutes, or you can fully customize what runs." (header: "Heartbeat", options: "Yes" / "No")
- **If Telegram is NOT configured**: "Configure Telegram? Recommended if you want it 24/7 live." (header: "Telegram", options: "Yes" / "No")
- **If Discord is NOT configured**: "Configure Discord? Connect your bot to Discord servers." (header: "Discord", options: "Yes" / "No")
- **If security is NOT configured**: "What security level for Claude?" (header: "Security", options:
- "Moderate (Recommended)" (description: "Full access scoped to project directory")
- "Locked" (description: "Read-only — can only search and read files, no edits, bash, or web")
- "Strict" (description: "Can edit files but no bash or web access")
- "Unrestricted" (description: "Full access with no directory restriction — dangerous"))
Then, based on their answers:
- **Model**: Set `model` in settings to their choice (e.g. `"opus"`, `"sonnet"`, `"haiku"`, `"glm"`). Default is `"opus"` if they don't pick.
- **If model is `glm`**: Ask in normal free-form text for API token and set top-level `api` to that value (optional; user can skip). Only ask this token question when the selected model is `glm`.
- **Agentic mode**: Use AskUserQuestion to ask:
- "Enable agentic model routing? This automatically selects models based on task type using configurable modes." (header: "Agentic", options: "Yes — default modes (Recommended)", "No — use single model")
- If "Yes": Set `agentic.enabled` to `true` with default modes (planning→opus, implementation→sonnet). The user can customize modes later via `/config`.
- If "No": Set `agentic.enabled` to `false`.
- Ask whether to set a fallback model. Recommend `glm` first so fallback uses a different provider path than the primary Claude model. If yes, set `fallback.model` and optionally `fallback.api`.
- Ask whether to enable GLM fallback (kicks in automatically when your Claude token limit is hit). The fallback model is always `glm` — no other model is supported. Use AskUserQuestion: "Enable GLM fallback? Automatically switches to GLM when your Claude limit is hit." (header: "Fallback", options: "Yes — enable GLM fallback", "Skip"). If yes, ask in normal free-form text for the GLM API token (optional, user can skip). Set `fallback.model` to `"glm"` and `fallback.api` to the token if provided.
- **If yes to heartbeat**: Use AskUserQuestion again with one question:
- "How often should it run in minutes?" (header: "Interval", options: "5", "15", "30 (Recommended)", "60")
- Set `heartbeat.enabled` to `true` and `heartbeat.interval` to their answer.
- Ask for timezone as simple UTC offset text (example: `UTC+1`, `UTC-5`, `UTC+03:30`) and set top-level `timezone`.
- **If heartbeat is no but `timezone` is missing**: set top-level `timezone` to `UTC+0`.
- **If yes to Telegram**: Do NOT u
Read more
description: Start daemon mode or run one-shot prompt/trigger
Start the heartbeat daemon for this project. Follow these steps exactly:
1. **Block home-directory starts (CRITICAL, BLOCKER)**:
- Run `pwd` and `echo "$HOME"`.
- If `pwd` equals `$HOME`, STOP immediately.
- Tell the user exactly:
- "CRITICAL BLOCKER: For security reasons, close this session and start a new one from the folder you want to initialize ClaudeClaw in."
- Do not continue with any other step until they restart from a non-home project directory.
2. **Runtime checker (Bun + Node)**:
- Run:
which bun
which node- If `bun` is missing:
- Tell the user Bun is required and will be auto-installed.
- Run:
curl -fsSL https://bun.sh/install | bash
- Then source the shell profile to make `bun` available in the current session:
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || true
- Verify again with `which bun`. If still not found, tell the user installation failed and to install manually from https://bun.sh, then exit.
- Tell the user Bun was auto-installed successfully.
- If `node` is missing:
- Tell the user Node.js is required for the OGG converter helper.
- Ask them to install Node.js LTS and rerun start, then exit.
3. **Check existing config**: Read `.claude/claudeclaw/settings.json` (if it exists). Determine which sections are already configured:
- **Heartbeat configured** = `heartbeat.enabled` is `true` AND `heartbeat.prompt` is non-empty
- **Telegram configured** = `telegram.token` is non-empty
- **Discord configured** = `discord.token` is non-empty
- **Security configured** = `security.level` exists and is not `"moderate"` (the default), OR `security.allowedTools`/`security.disallowedTools` are non-empty
4. **Interactive setup — smart mode** (BEFORE launching the daemon):
**If ALL three sections are already configured**, show a summary of the current config and ask ONE question:
Use AskUserQuestion:
- "Your settings are already configured. Want to change anything?" (header: "Settings", options: "Keep current settings", "Reconfigure")
If they choose "Keep current settings", skip to step 6 (first contact question). If they choose "Reconfigure", proceed to step 5 below as if nothing was configured.
**If SOME sections are configured and others are not**, show the already-configured sections as a summary, then only ask about the unconfigured sections in step 5.
**If NOTHING is configured** (fresh install), ask about all three sections in step 5.
5. **Ask setup questions**:
Use **AskUserQuestion** to ask all unconfigured sections at once (up to 3 questions in one call):
- **Model** (always ask if `model` is empty/unset): "Which Claude model should ClaudeClaw use?" (header: "Model", options: "opus (default)", "sonnet", "haiku", "glm")
- **If heartbeat is NOT configured**: "Enable heartbeat? Example: I can remind you to drink water every 30 minutes, or you can fully customize what runs." (header: "Heartbeat", options: "Yes" / "No")
- **If Telegram is NOT configured**: "Configure Telegram? Recommended if you want it 24/7 live." (header: "Telegram", options: "Yes" / "No")
- **If Discord is NOT configured**: "Configure Discord? Connect your bot to Discord servers." (header: "Discord", options: "Yes" / "No")
- **If security is NOT configured**: "What security level for Claude?" (header: "Security", options:
- "Moderate (Recommended)" (description: "Full access scoped to project directory")
- "Locked" (description: "Read-only — can only search and read files, no edits, bash, or web")
- "Strict" (description: "Can edit files but no bash or web access")
- "Unrestricted" (description: "Full access with no directory restriction — dangerous"))
Then, based on their answers:
- **Model**: Set `model` in settings to their choice (e.g. `"opus"`, `"sonnet"`, `"haiku"`, `"glm"`). Default is `"opus"` if they don't pick.
- **If model is `glm`**: Ask in normal free-form text for API token and set top-level `api` to that value (optional; user can skip). Only ask this token question when the selected model is `glm`.
- **Agentic mode**: Use AskUserQuestion to ask:
- "Enable agentic model routing? This automatically selects models based on task type using configurable modes." (header: "Agentic", options: "Yes — default modes (Recommended)", "No — use single model")
- If "Yes": Set `agentic.enabled` to `true` with default modes (planning→opus, implementation→sonnet). The user can customize modes later via `/config`.
- If "No": Set `agentic.enabled` to `false`.
- Ask whether to set a fallback model. Recommend `glm` first so fallback uses a different provider path than the primary Claude model. If yes, set `fallback.model` and optionally `fallback.api`.
- Ask whether to enable GLM fallback (kicks in automatically when your Claude token limit is hit). The fallback model is always `glm` — no other model is supported. Use AskUserQuestion: "Enable GLM fallback? Automatically switches to GLM when your Claude limit is hit." (header: "Fallback", options: "Yes — enable GLM fallback", "Skip"). If yes, ask in normal free-form text for the GLM API token (optional, user can skip). Set `fallback.model` to `"glm"` and `fallback.api` to the token if provided.
- **If yes to heartbeat**: Use AskUserQuestion again with one question:
- "How often should it run in minutes?" (header: "Interval", options: "5", "15", "30 (Recommended)", "60")
- Set `heartbeat.enabled` to `true` and `heartbeat.interval` to their answer.
- Ask for timezone as simple UTC offset text (example: `UTC+1`, `UTC-5`, `UTC+03:30`) and set top-level `timezone`.
- **If heartbeat is no but `timezone` is missing**: set top-level `timezone` to `UTC+0`.
- **If yes to Telegram**: Do NOT u
A lightweight, open-source OpenClaw version built into your Claude Code.
Repo: moazbuilds/claudeclaw
Other commands on moazbuilds-claudeclaw.
jobs
Create, list, edit, or delete cron jobs. Triggers: create a job, add a job, new job, schedule…

