fleet
Reference

Per-repo .fleet.json

Repo-local overrides for workspaces, PR checks, and file copying.

Drop a .fleet.json in any repo root to customize fleet's behavior for that repo. Pair it with a gitignored .fleet.local.json for personal overrides — the two are merged additively.

Legacy

.bc.json / .bc.local.json are still read for backwards compatibility. New repos should use .fleet.json.

Full schema

{
  // Custom workspace provider. If present, fleet uses ShellProvider
  // for this repo instead of the built-in git worktree provider.
  "workspace": {
    "list": "my-tool list",
    "create": "my-tool create {{name}} {{branch}}",
    "destroy": "my-tool destroy {{name}}"
  },

  // Glob patterns of CI checks to ignore in the PR badge rollup.
  // Uses path.Match semantics. Lists from .fleet.json and .fleet.local.json merge.
  "pr_checks": {
    "ignore": [
      "deploy-preview/*",
      "codecov/*"
    ]
  },

  // Files/dirs/globs to copy from the source repo into each new worktree.
  // Repo-relative only. filepath.Glob semantics. Gitignored files allowed.
  // Independent of copy_claude_settings.
  "copy_files": {
    "paths": [
      ".env.local",
      "config/local/",
      "secrets/*.key"
    ]
  }
}

workspace — custom workspace provider

When set, fleet uses ShellProvider for this repo instead of git worktrees.

CommandWhen it runsTemplate vars
listSidebar refresh — should print existing workspaces, one per line
createw key{{name}}, {{branch}}
destroyd on a worktree header{{name}}

If workspace is absent, fleet uses GitWorktreeProvider (zero config).

pr_checks.ignore — drop noise from PR badge

The PR badge rolls up all CI checks. Use this to hide ones that don't matter (deploy previews, code-coverage diffs, etc.).

{
  "pr_checks": {
    "ignore": ["deploy-preview/*", "codecov/*"]
  }
}

Globs use Go's path.Match. Empty by default — opt-in.

copy_files.paths — seed new worktrees

When you spawn a worktree (w), fleet copies these paths from the source repo into the new worktree directory. Useful for gitignored config that the agent needs:

{
  "copy_files": {
    "paths": [
      ".env.local",
      "node_modules/.cache/",
      "config/local.yaml"
    ]
  }
}
  • Repo-relative paths only (no ../)
  • Applies to both GitWorktreeProvider and ShellProvider
  • Independent of copy_claude_settings (which is global config)
  • Empty by default — opt-in

Merging .fleet.json and .fleet.local.json

Both files are read if present:

  • Lists (pr_checks.ignore, copy_files.paths) merge additively — duplicates deduped
  • Objects (workspace) — .fleet.local.json keys override .fleet.json

This means .fleet.json can be committed (team defaults) and .fleet.local.json can be gitignored (personal additions).