Skip to main content

Configuration

Config file: ~/.picoclaw/config.json

Config Version 2

Config schema version 2 is the current format. New configs should include "version": 2 at the top level. Existing V0/V1 configs are automatically migrated on first load. See the Migration Guide for details.

For a smoother setup experience, we recommend using Web UI as the primary way to configure and manage models.

Web UI Model Setup

Sections

SectionPurpose
versionConfig schema version (current: 2)
agents.defaultsDefault agent settings (model, workspace, limits)
bindingsRoute messages to specific agents by channel/context
model_listLLM provider definitions
channelsChat app integrations
toolsWeb search, exec, cron, skills, MCP
heartbeatPeriodic task settings
gatewayHTTP gateway host/port and log level
devicesUSB device monitoring

Workspace Layout

PicoClaw stores data in your configured workspace (default: ~/.picoclaw/workspace):

~/.picoclaw/workspace/
├── sessions/ # Conversation sessions and history
├── memory/ # Long-term memory (MEMORY.md)
├── state/ # Persistent state (last channel, etc.)
├── cron/ # Scheduled jobs database
├── skills/ # Custom skills
├── AGENTS.md # Agent behavior guide
├── HEARTBEAT.md # Periodic task prompts (checked every 30 min)
├── IDENTITY.md # Agent identity
├── SOUL.md # Agent soul
├── TOOLS.md # Tool descriptions
└── USER.md # User preferences

Environment Variables

Most config values can be set via environment variables using the pattern PICOCLAW_<SECTION>_<KEY> in UPPER_SNAKE_CASE:

export PICOCLAW_AGENTS_DEFAULTS_MODEL_NAME=my-model
export PICOCLAW_HEARTBEAT_ENABLED=false
export PICOCLAW_HEARTBEAT_INTERVAL=60
export PICOCLAW_AGENTS_DEFAULTS_RESTRICT_TO_WORKSPACE=false

Special Environment Variables

VariableDescription
PICOCLAW_HOMEOverride PicoClaw home directory (default: ~/.picoclaw). Changes the default location of the workspace and other data directories.
PICOCLAW_CONFIGOverride the path to the configuration file. Directly tells PicoClaw which config.json to load, ignoring all other locations.
PICOCLAW_LOG_LEVELOverride gateway log level (see below)

Examples:

# Run picoclaw using a specific config file
PICOCLAW_CONFIG=/etc/picoclaw/production.json picoclaw gateway

# Run picoclaw with all its data stored in /opt/picoclaw
PICOCLAW_HOME=/opt/picoclaw picoclaw agent

# Use both for a fully customized setup
PICOCLAW_HOME=/srv/picoclaw PICOCLAW_CONFIG=/srv/picoclaw/main.json picoclaw gateway

Gateway Log Level

gateway.log_level controls Gateway log verbosity and is configurable in config.json:

{
"gateway": {
"log_level": "warn"
}
}

When omitted, the default is warn. Supported values: debug, info, warn, error, fatal.

You can also override this with the environment variable PICOCLAW_LOG_LEVEL.

Security Configuration

PicoClaw supports separating sensitive data (API keys, tokens, secrets) from your main configuration by storing them in a .security.yml file. See .security.yml Reference for field mapping and overlay rules, Security Sandbox for workspace restrictions, and Credential Encryption for encrypted secret formats.

Key benefits:

  • Security: Sensitive data is never in your main config file
  • Easy sharing: Share config.json without exposing API keys
  • Version control: Add .security.yml to .gitignore
  • Flexible deployment: Different environments can use different security files

Agent Bindings

Use bindings in config.json to route incoming messages to different agents by channel, account, or context. For example, route all Telegram DMs from a specific user to a support agent, or route an entire Discord server to a sales agent.

See the Full Config Reference for the complete bindings specification.