Skip to content
Configuration

Configuration

upkeep.yml defines the bots, their turn budgets, and cycle behavior.

Example configuration

forgejo_url: http://localhost:7100
public_url: http://localhost:7100
org: upkeep

defaults:
  model: ""
  turns: 30
  timeout: 30m
  allowed_domains:
    - "*.rubygems.org"
    - "*.npmjs.org"
    - pypi.org
    - proxy.golang.org
    - "*.ecosyste.ms"
    - endoflife.date
    - osv.dev

bots:
  managerbot:
    turns: 50
    bookend: true
  forkbot:
    turns: 40
  securibot:
    turns: 35
  depbot:
    turns: 45
  testbot:
    turns: 60
  buildbot:
    turns: 90
  perfbot:
    turns: 55
  docbot:
    turns: 65
  releasebot:
    turns: 60
  licensebot:
    turns: 40

cycle:
  pause: 30s
  concurrent: true
  order: [forkbot, securibot, depbot, testbot, buildbot, perfbot, docbot, releasebot, licensebot]

Bot settings

The bookend flag marks managerbot to run at the start and end of each cycle. The order list controls the sequence for role bots (forkbot runs first so new repos are available to other bots in the same cycle). When concurrent is true, role bots run in parallel with interleaved output prefixed by bot name.

The skills list on a bot config adds extra skill directories that get loaded into that bot’s prompt alongside the shared and bot-specific skills. The --skills CLI flag does the same for all bots in a run.

The allowed_domains list restricts which domains bots can fetch from during their runs.

Provider settings

The provider field controls which CLI runs the bot. It can be set in defaults (applies to all bots) or per-bot (overrides the default). The --provider flag on the command line overrides both.

Environment

Tokens stay in .env, which is gitignored. Set either ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN.

Global flags --config and --env override the default paths (upkeep.yml and .env).