Browse documentation

Reference

Configuration

Core runtime configuration lives at .pi/claw.jsonc. Pi package loading lives separately at .pi/settings.json. Do not put Clawa worker definitions into Pi settings or package paths into the Clawa config.

Complete core shape

{
  "bootstrapped": true,
  "clawas": {
    "baseDir": "clawas",
    "tmuxSession": "clawas",
    "workers": [
      {
        "id": "researcher",
        "title": "Research Clawa",
        "emoji": "🔎",
        "cwd": "clawas/researcher",
        "enabled": true,
        "autostart": true,
        "startupPrompt": "Return to the research lane.",
        "model": "provider/model-id",
        "thinking": "high",
        "reportMode": "auto",
        "discordEnabled": false,
        "extensions": []
      }
    ]
  },
  "clawa": {
    "humanName": "human",
    "mainClawName": "Clawa",
    "clawasName": "Clawas",
    "workerSessionPrefix": "Clawas",
    "controlPlaneDir": "clawas",
    "controlSocketDir": "clawas-control",
    "memoryPass": {
      "enabled": true,
      "triggerPercent": 90
    }
  }
}

JSON with comments is accepted. Saving through Clawa rewrites normalized JSON without preserving comments.

Worker fields

Field Meaning
id Required stable routing ID.
title Display name; defaults to the ID.
cwd Required worker home, usually relative to project root. Legacy workspace is accepted.
enabled Whether the worker is available to the runtime.
autostart Whether the main daemon should start it.
startupPrompt Prompt used when starting its lane. Legacy initialPrompt is accepted.
model Optional Pi model selector for this worker.
thinking off, minimal, low, medium, high, or xhigh.
reportMode auto, explicit, or off.
extensions Extra extension paths passed to this worker.
discordEnabled Marks Discord behavior for that worker.

Malformed worker arrays, duplicate IDs, missing IDs/cwds, and invalid worker or memory-pass values throw visible config errors. Optional fields may be omitted, but a present boolean, thinking level, report mode, or extension list must have the documented type.

Memory pass

memoryPass.enabled defaults to true. triggerPercent defaults to 90 and must be an integer from 1 to 99. The percentage follows the active model’s own context window rather than a fixed token count.

At the threshold, Clawa receives one hidden follow-up in the active branch. It revisits up to five recent shared memories, updates an existing memory when the truth changed, and adds only new material worth carrying. Saving fewer than five—or nothing—is valid. The pass rearms after Pi compacts or a new session starts.

Pi remains the sole owner of automatic, manual, overflow, custom, and provider-native compaction. Legacy clawa.compaction settings are ignored; they do not restore Clawa-owned compaction or the old detached sidecar.

Pi project settings

The stable git-checkout install is:

{
  "packages": ["/absolute/path/to/pi-clawa"]
}

To load only Clawa for a diagnostic run without changing settings:

pi --no-extensions -e /absolute/path/to/pi-clawa

Workers run from their own cwd, so Pi project settings discovered there can differ from the main home. This is useful isolation, but it is also a common source of “works in main, missing in worker.”