Skip to content

Fleet Configuration

The fleet configuration file (herdctl.yaml) is the root configuration for your entire agent fleet. This document covers every available configuration option.

A minimal configuration requires only the version field:

version: 1

A typical configuration includes workspace settings and agent references:

version: 1
workspace:
root: ~/herdctl-workspace
auto_clone: true
agents:
- path: ./agents/coder.yaml
- path: ./agents/reviewer.yaml
PropertyValue
Typenumber (positive integer)
Default1
RequiredNo

The configuration schema version. Currently only version 1 is supported.

version: 1

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Fleet metadata for identification and documentation purposes.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Human-readable name for the fleet.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Description of the fleet’s purpose.

fleet:
name: production-fleet
description: Production agent fleet for automated code review and deployment

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default settings applied to all agents in the fleet. Individual agent configurations can override these defaults.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Default Claude model for all agents.

defaults:
model: claude-sonnet-4-20250514
PropertyValue
Typenumber (positive integer)
Defaultundefined
RequiredNo

Default maximum conversation turns per session.

defaults:
max_turns: 50
PropertyValue
Typeenum
Defaultundefined
RequiredNo
Valid Values"default", "acceptEdits", "bypassPermissions", "plan"

Default permission mode for all agents.

  • default - Standard permission prompts
  • acceptEdits - Automatically accept file edits
  • bypassPermissions - Skip all permission checks
  • plan - Planning mode only
defaults:
permission_mode: acceptEdits
PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default Docker settings. See docker for field details.

defaults:
docker:
enabled: true
base_image: node:20-alpine
PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default permission settings for all agents.

PropertyValue
Typeenum
Default"acceptEdits"
RequiredNo
Valid Values"default", "acceptEdits", "bypassPermissions", "plan"
PropertyValue
Typestring[]
Defaultundefined
RequiredNo

List of tools the agent is allowed to use.

PropertyValue
Typestring[]
Defaultundefined
RequiredNo

List of tools the agent is not allowed to use.

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Bash-specific permission controls.

  • allowed_commands (string[]) - Commands the agent may execute
  • denied_patterns (string[]) - Patterns to block from execution
defaults:
permissions:
mode: acceptEdits
allowed_tools:
- Read
- Write
- Edit
- Bash
denied_tools:
- WebFetch
bash:
allowed_commands:
- npm
- git
- pnpm
denied_patterns:
- "rm -rf"
- "sudo"
PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default work source configuration for agents.

PropertyValue
Typeenum
DefaultN/A
RequiredYes (if work_source is specified)
Valid Values"github"
PropertyValue
Typeobject
Defaultundefined
RequiredNo

GitHub label configuration for work items.

  • ready (string) - Label indicating an issue is ready for processing
  • in_progress (string) - Label applied when work begins
PropertyValue
Typeboolean
Defaultundefined
RequiredNo

Whether to clean up in-progress items on startup.

defaults:
work_source:
type: github
labels:
ready: ready-for-dev
in_progress: in-progress
cleanup_in_progress: true
PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default instance concurrency settings.

PropertyValue
Typenumber (positive integer)
Default1
RequiredNo

Maximum number of concurrent agent instances.

defaults:
instances:
max_concurrent: 3
PropertyValue
Typeobject
Defaultundefined
RequiredNo

Default session configuration.

  • max_turns (number, positive integer) - Maximum conversation turns
  • timeout (string) - Session timeout duration (e.g., "30m", "1h")
  • model (string) - Claude model for the session
defaults:
session:
max_turns: 100
timeout: 1h
model: claude-sonnet-4-20250514

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Global workspace configuration for repository management.

PropertyValue
Typestring
DefaultN/A
RequiredYes (if workspace is specified)

Root directory for all agent workspaces. Supports ~ for home directory expansion.

PropertyValue
Typeboolean
Defaulttrue
RequiredNo

Automatically clone repositories when needed.

PropertyValue
Typenumber (positive integer)
Default1
RequiredNo

Git shallow clone depth. Use 1 for shallow clones (faster), or a higher number for more history.

PropertyValue
Typestring
Default"main"
RequiredNo

Default branch to checkout when cloning repositories.

workspace:
root: ~/herdctl-workspace
auto_clone: true
clone_depth: 1
default_branch: main

PropertyValue
Typearray of agent references
Default[]
RequiredNo

List of agent configuration file references.

Each agent reference is an object with a path field:

PropertyValue
Typestring
DefaultN/A
RequiredYes

Path to the agent configuration file. Can be relative (to the fleet config file) or absolute.

agents:
- path: ./agents/coder.yaml
- path: ./agents/reviewer.yaml
- path: /etc/herdctl/agents/shared-agent.yaml

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Chat integration configuration.

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Discord bot integration settings.

PropertyValue
Typeboolean
Defaultfalse
RequiredNo

Enable Discord integration for the fleet.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Name of the environment variable containing the Discord bot token.

chat:
discord:
enabled: true
token_env: DISCORD_BOT_TOKEN

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Webhook server configuration for receiving external triggers.

PropertyValue
Typeboolean
Defaultfalse
RequiredNo

Enable the webhook server.

PropertyValue
Typenumber (positive integer)
Default8081
RequiredNo

Port for the webhook server to listen on.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Name of the environment variable containing the webhook secret for request validation.

webhooks:
enabled: true
port: 8081
secret_env: WEBHOOK_SECRET

PropertyValue
Typeobject
Defaultundefined
RequiredNo

Global Docker runtime configuration.

PropertyValue
Typeboolean
Defaultfalse
RequiredNo

Enable Docker container runtime for agent execution.

PropertyValue
Typestring
Defaultundefined
RequiredNo

Base Docker image for agent containers.

docker:
enabled: true
base_image: node:20-alpine

Here’s a comprehensive example demonstrating all configuration options:

version: 1
fleet:
name: production-fleet
description: Production agent fleet for automated development workflows
defaults:
model: claude-sonnet-4-20250514
max_turns: 50
permission_mode: acceptEdits
docker:
enabled: false
permissions:
mode: acceptEdits
allowed_tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
bash:
allowed_commands:
- npm
- pnpm
- git
- node
denied_patterns:
- "rm -rf /"
- "sudo"
work_source:
type: github
labels:
ready: ready-for-dev
in_progress: in-progress
cleanup_in_progress: true
instances:
max_concurrent: 2
session:
max_turns: 100
timeout: 1h
workspace:
root: ~/herdctl-workspace
auto_clone: true
clone_depth: 1
default_branch: main
agents:
- path: ./agents/coder.yaml
- path: ./agents/reviewer.yaml
- path: ./agents/docs-writer.yaml
chat:
discord:
enabled: true
token_env: DISCORD_BOT_TOKEN
webhooks:
enabled: true
port: 8081
secret_env: GITHUB_WEBHOOK_SECRET
docker:
enabled: true
base_image: node:20-alpine

Validate your configuration with:

Terminal window
herdctl config validate