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).