From claudeclaw
View or modify heartbeat daemon settings including model, interval, prompt, Telegram forwarding, security, and Web UI. Supports show (default), heartbeat on/off, interval, prompt sub-commands.
npx claudepluginhub moazbuilds/claudeclaw --plugin claudeclawView or modify the heartbeat daemon settings. Use `$ARGUMENTS` to determine the action. Parse `$ARGUMENTS` to identify what the user wants. If no arguments are given, show the current config. ## Sub-commands ### `show` (default when no arguments) 1. Read `.claude/claudeclaw/settings.json`. 2. Display all settings clearly: **General** - Model: (e.g. `opus`, `sonnet`, `haiku`, `glm` or "default") - API token: (first 5 chars + "..." or "not configured"; used when `model` is `glm`) - Fallback model: (e.g. `glm`, `sonnet`, or "not configured") - Fallback API token: (first 5 c...
/configLaunches interactive wizard to view current CAT config and customize settings like behavior (trust, verify, curiosity, patience), cleanup, display width, completion workflow, and version gates.
/configView and modify VBW configuration including effort profile, verification tier, and skill-hook wiring. Uses optional setting value argument.
/configConfigures Universal Development Standards for the project: shows current status with `uds check --summary`, then interactively or directly manages basics (format, git workflow), AI tools, skills, commands, and advanced options.
/configInitializes or edits eforge/config.yaml interactively via user interview on backend, build, model, and agent settings, with MCP validation and project context gathering.
/configInteractively configures Alfred Dev via navigable menu: autonomy per phase, project stack, optional agents, memory, compliance, integrations, personality. Previews changes and updates .claude/alfred-dev.local.md.
/configDisplays current Hydra configuration from project or global files, or defaults if none found, plus customization instructions.
View or modify the heartbeat daemon settings. Use $ARGUMENTS to determine the action.
Parse $ARGUMENTS to identify what the user wants. If no arguments are given, show the current config.
show (default when no arguments)Read .claude/claudeclaw/settings.json.
Display all settings clearly:
General
opus, sonnet, haiku, glm or "default")model is glm)glm, sonnet, or "not configured")America/New_York or "UTC")Heartbeat
HEARTBEAT_OK is forwarded only when enabled)Telegram
Security
Web UI
Also list any cron jobs from .claude/claudeclaw/jobs/ with their name and schedule.
Remind the user that changes are hot-reloaded every 30s — no daemon restart needed.
heartbeat on / heartbeat off / heartbeat enable / heartbeat disableToggle the heartbeat on or off.
.claude/claudeclaw/settings.json.heartbeat.enabled to true or false based on the command.heartbeat interval <minutes> / interval <minutes>Change the heartbeat interval.
$ARGUMENTS. If not provided or invalid, use AskUserQuestion: "How often should the heartbeat run?" (header: "Interval", options: "5 minutes", "15 minutes (Recommended)", "30 minutes", "60 minutes").claude/claudeclaw/settings.json.heartbeat.interval to the new value.heartbeat prompt / promptChange the heartbeat prompt.
.claude/claudeclaw/settings.json and show the current prompt.heartbeat.prompt to the new value.heartbeat telegram on / heartbeat telegram off / heartbeat forward telegram on / heartbeat forward telegram offToggle whether heartbeat outputs are forwarded to Telegram.
.claude/claudeclaw/settings.json.heartbeat.forwardToTelegram to true for on and false for off.true = forward all heartbeat replies (including HEARTBEAT_OK)false = suppress HEARTBEAT_OK and forward only actionable heartbeat outputstelegram token <token> / telegram tokenSet or update the Telegram bot token.
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.telegram.token to the new value.telegram users <id1,id2,...> / telegram usersSet the allowed Telegram user IDs.
$ARGUMENTS, parse them as comma-separated numbers..claude/claudeclaw/settings.json.telegram.allowedUserIds to the array of numbers.telegram off / telegram disableDisable Telegram integration.
.claude/claudeclaw/settings.json.telegram.token to "" and telegram.allowedUserIds to [].model <name> / modelSet the Claude model to use for sessions.
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.model to the new value.glm, ask for api token (unless already set) and save it to top-level api.glm, keep api unchanged.api <token> / apiSet or update the API token used when model is glm.
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.api to the new value.fallback model <name> / fallback modelSet the fallback model used when the primary model hits a rate limit.
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.fallback.model to the chosen value ("" for none).fallback api <token> / fallback apiSet or clear the API token for the fallback model.
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.fallback.api to the new value.timezone <tz> / timezoneSet the IANA timezone (e.g. America/New_York, Europe/London, UTC).
$ARGUMENTS, use it directly..claude/claudeclaw/settings.json.timezone to the new value. The timezoneOffsetMinutes will be auto-resolved from the timezone name.security level <level> / securitySet the security level for Claude sessions.
$ARGUMENTS, validate it is one of: locked, strict, moderate, unrestricted..claude/claudeclaw/settings.json.security.level to the new value.security tools allow <tool1,tool2,...> / security tools disallow <tool1,tool2,...>Add tools to the allowed or disallowed lists.
$ARGUMENTS..claude/claudeclaw/settings.json.security.allowedTools or security.disallowedTools (deduplicated).web on / web off / web enable / web disableToggle the web UI.
.claude/claudeclaw/settings.json.web.enabled to true or false.web port <port> / web host <host>Configure web UI bind address or port.
$ARGUMENTS..claude/claudeclaw/settings.json.web.port (number) or web.host (string) accordingly.resetReset all settings to defaults.
{
"model": "",
"api": "",
"fallback": {
"model": "",
"api": ""
},
"timezone": "UTC",
"timezoneOffsetMinutes": 0,
"heartbeat": {
"enabled": false,
"interval": 15,
"prompt": "",
"excludeWindows": [],
"forwardToTelegram": true
},
"telegram": {
"token": "",
"allowedUserIds": []
},
"security": {
"level": "moderate",
"allowedTools": [],
"disallowedTools": []
},
"web": {
"enabled": false,
"host": "127.0.0.1",
"port": 4632
}
}
/heartbeat:jobs delete for that.Location: .claude/claudeclaw/settings.json
{
"model": "opus",
"api": "",
"fallback": {
"model": "glm",
"api": ""
},
"timezone": "America/New_York",
"timezoneOffsetMinutes": -300,
"heartbeat": {
"enabled": true,
"interval": 15,
"prompt": "Remind me to drink water and stretch.",
"excludeWindows": [
{ "days": [0, 6], "start": "23:00", "end": "07:00" }
],
"forwardToTelegram": true
},
"telegram": {
"token": "123456:ABC-DEF...",
"allowedUserIds": [123456789]
},
"security": {
"level": "moderate",
"allowedTools": [],
"disallowedTools": []
},
"web": {
"enabled": true,
"host": "127.0.0.1",
"port": 4632
}
}
| Key | Type | Description |
|---|---|---|
model | string | Claude model (opus, sonnet, haiku, glm, or full ID). Empty = default |
api | string | API token used when model is glm (mapped to ANTHROPIC_AUTH_TOKEN) |
fallback.model | string | Backup model used automatically if primary run returns rate-limit text (recommend glm for provider diversity) |
fallback.api | string | API token used with fallback.model (optional) |
timezone | string | IANA timezone name (e.g. America/New_York) |
timezoneOffsetMinutes | number | UTC offset in minutes (auto-resolved from timezone) |
heartbeat.enabled | boolean | Whether the recurring heartbeat runs |
heartbeat.interval | number | Minutes between heartbeat executions |
heartbeat.prompt | string | Prompt sent to Claude on each heartbeat |
heartbeat.excludeWindows | object[] | Quiet windows where heartbeat is skipped |
heartbeat.excludeWindows[].days | number[] | Days of week (0=Sun..6=Sat); omit for all days |
heartbeat.excludeWindows[].start | string | Window start time in HH:MM 24h format |
heartbeat.excludeWindows[].end | string | Window end time in HH:MM 24h format |
heartbeat.forwardToTelegram | boolean | Forward heartbeat output to Telegram (false suppresses HEARTBEAT_OK) |
telegram.token | string | Bot token from @BotFather |
telegram.allowedUserIds | number[] | Telegram user IDs allowed to interact |
security.level | string | locked | strict | moderate | unrestricted |
security.allowedTools | string[] | Extra tools to allow |
security.disallowedTools | string[] | Tools to block |
web.enabled | boolean | Whether the web UI is served |
web.host | string | Bind address (default 127.0.0.1) |
web.port | number | Port number (default 4632) |
The daemon hot-reloads this file every 30 seconds. No restart needed after changes.