Logo
Configuration

Configuration Reference

Every config field, its type, and default value.

Configuration Reference

This is the complete field-by-field reference for BabyClaw's config file (~/.config/babyclaw/config.json).

version

Typenumber
RequiredYes
ValueMust be 1

Schema version. Always set this to 1.

channels

channels.telegram

Typeobject
RequiredNo

channels.telegram.botToken

Typestring
RequiredYes (if channels.telegram is set)

Your Telegram bot token from @BotFather.


telegram

Typeobject
RequiredNo

Legacy alternative to channels.telegram. Has the same botToken field. You can use either location -- channels.telegram.botToken is preferred.


ai

ai.providers

Typeobject (map of provider name to config)
RequiredYes

At least one provider must be configured. Each provider has:

FieldTypeRequiredDescription
apiKeystringYesAPI key for the provider
baseUrlstring (URL)NoCustom endpoint URL (for proxies, self-hosted, or OpenRouter)

ai.models

Typeobject
RequiredYes
FieldTypeRequiredDefaultDescription
chatstringYes--Main conversation model (provider:modelId)
visionstringNo--Model for image processing

ai.aliases

Typeobject (map of alias to model reference)
RequiredNo
Default{}

Short names for models. Alias names must match ^[a-z0-9_-]+$.


database

database.url

Typestring
Default"file:../data/babyclaw.db"

SQLite connection string. The default stores the database alongside the gateway.


scheduler

scheduler.timezone

Typestring (IANA timezone)
Default"UTC"

Timezone used for scheduled tasks and heartbeat active hours. Must be a valid IANA timezone like "America/New_York" or "Europe/London".


workspace

workspace.root

Typestring
Default"."

Path to the agent's workspace directory. This is where personality files, memory, and skills live.


session

session.maxMessagesPerSession

Typeinteger
Default120

Maximum number of messages stored per session. Older messages are pruned when this limit is reached.

session.historyLimit

Typeinteger
Default40

Number of recent messages included in the agent's context for each turn. Lower values reduce token usage; higher values give the agent more context.

session.replyChainMode

Typestring
Default"default"
Options"default", "reply-chain"

In "default" mode, sessions are determined by chat and thread. In "reply-chain" mode, replying to a specific message continues that session's context.

session.titleGeneration

Typeobject
Default{}
FieldTypeRequiredDescription
modelstringNoModel to use for generating session titles (defaults to the chat model)
promptstringNoCustom prompt for title generation

tools

tools.enableGenericTools

Typeboolean
Defaulttrue

When true, the agent has access to workspace, shell, state, web search, messaging, media, and working memory tools. Set to false to restrict the agent to only scheduler and self-management tools.

tools.shell

Typeobject

tools.shell.mode

Typestring
Default"allowlist"
Options"allowlist", "full-access"

In "allowlist" mode, the agent can only run commands from the allowedCommands list. In "full-access" mode, it can run any command (a warning is logged at startup).

tools.shell.allowedCommands

Typearray of string
DefaultSee below

Commands the agent is allowed to run in allowlist mode. The default list includes common file operations, text processing, git, Node.js/Python package managers, and network tools:

ls, cat, head, tail, wc, grep, rg, find, file, du, df, date, echo, env, pwd, sort, uniq, cut, awk, sed, tr, xargs, tee, diff, which, basename, dirname, realpath, mkdir, cp, mv, rm, touch, chmod, git, node, npm, npx, pnpm, yarn, python, python3, pip, pip3, curl, wget, jq, tar, zip, unzip, remindctl

tools.webSearch

Typeobject

tools.webSearch.braveApiKey

Typestring or null
Defaultnull

API key for the Brave Search API. When set, the agent gets a web_search tool. When null, web search is disabled.


skills

skills.entries

Typeobject (map of skill name to config)
Default{}

Per-skill configuration. Each entry can have:

FieldTypeDefaultDescription
enabledbooleantrueEnable or disable this skill
apiKeystring--API key for the skill (if it needs one)
envobject--Environment variables to inject for this skill

Example:

{
  "skills": {
    "entries": {
      "web-scraper": { "enabled": true },
      "image-gen": {
        "enabled": true,
        "apiKey": "key-here",
        "env": { "IMAGE_MODEL": "dall-e-3" }
      }
    }
  }
}

logging

logging.level

Typestring
Default"info"
Options"debug", "info", "warn", "error"

logging.format

Typestring
Default"pretty" (development) / "json" (production)
Options"json", "pretty"

logging.output

Typestring
Default"stdout"

Where to write logs. Defaults to standard output.

logging.redact

Typearray of string
Default[]

List of field names to redact from log output.

logging.includeTimestamps

Typeboolean
Defaulttrue

logging.includeHostname

Typeboolean
Defaultfalse

heartbeat

heartbeat.enabled

Typeboolean
Defaultfalse

Enable periodic heartbeat check-ins. See Heartbeat.

heartbeat.intervalMinutes

Typeinteger
Default30
Minimum5

Minutes between heartbeat runs.

heartbeat.activeHours

Typeobject

heartbeat.activeHours.start

Typestring (HH:MM) or null
Defaultnull

Start of the active window. When null, heartbeats can run at any time.

heartbeat.activeHours.end

Typestring (HH:MM) or null
Defaultnull

End of the active window.

heartbeat.prompt

Typestring
Default"Read HEARTBEAT.md if it exists. Follow its instructions. Do not infer or repeat old tasks from prior chats. If nothing needs attention, say so."

The prompt sent to the agent on each heartbeat run. You can customize this, but the default works well with the standard HEARTBEAT.md workflow.