Skip to main content
Configuration is scoped per-repo and per-user. The configuration files are managed remotely in the dashboard, not comitted to the repo.
  • config.yaml: repo-wide settings shared by all users
  • config.local.yaml: per-user overrides
When both exist, values from config.local.yaml are merged on top of config.yaml. The merge strategy depends on the section.

Example

# Example: config.yaml

# Configure the launched claude instance
claude:
  model: opus
  permission_mode: acceptEdits

# Filter swarm start task picker by Linear team key prefixes
# When set, only tasks matching these prefixes are shown
# When not set, all tasks are shown
tasks:
  keys: ["KAD"]

# Configure how PRs are submitted to graphite
submit:
  draft: false

# Lifecycle commands trigger at different points in the workflow
lifecycle:
  prepare:
    # This is very useful for copying .gitignored files to new worktrees
    copy_ignored:
      - .claude/settings.local.json
      - apps/web/.env.local
      - apps/web/.clerk
      - apps/web/playwright/.auth

  install:
    commands:
      - bun install

  pre-commit:
    commands:
      - just convex codegen
      - just verify types

  pre-submit:
    commands:
      - just verify all

  pre-clean:
    commands:
      - echo "Cleaning up workspace..."

  flow-done:
    commands:
      - swarm manual save-artifacts
# Example: config.local.yaml

# Can override your handle, otherwise defaults to email prefix
user:
  handle: kad