Skip to content

Configuration

Leo is configured via a single leo.yaml file in the Leo home directory (~/.leo/).

Location

The config file lives at ~/.leo/leo.yaml. Leo auto-detects it by walking up from the current working directory, falling back to ~/.leo/leo.yaml. You can also specify it explicitly:

leo --config /path/to/leo.yaml <command>

Example Configuration

defaults:
  model: sonnet
  max_turns: 15
  remote_control: true

processes:
  assistant:
    channels:
      - plugin:telegram@claude-plugins-official
    enabled: true

tasks:
  daily-news-briefing:
    schedule: "0 7 * * *"
    timezone: America/New_York
    prompt_file: reports/daily-news-briefing.md
    model: opus
    max_turns: 20
    channels:
      - plugin:telegram@claude-plugins-official
    notify_on_fail: true
    enabled: true
    silent: true

Sections Overview

defaults

Default model, max turns, and other settings applied to all processes and tasks unless overridden.

processes

Named long-running Claude sessions. Each process can specify its own workspace, channels, model, and settings.

tasks

Named tasks with cron schedules, prompt files, and optional overrides. Each task can override the default model and max turns, specify its own channels for notify_on_fail, and use its own workspace.

Channels

Channels are Claude Code plugin IDs (e.g., plugin:telegram@claude-plugins-official). Install the plugin via claude plugin install <id> and reference it in a process or task channels: list. Leo passes the list to the spawned Claude process via LEO_CHANNELS; the plugin owns its own credentials and routing.

For plugins not yet published to a registry, use dev_channels: instead. Leo passes them via --dangerously-load-development-channels and auto-accepts the in-terminal confirmation prompt for supervised processes. See the Config Reference for details.


See Config Reference for the full field-by-field specification.