Skip to content

team.yaml (Legacy)

File location: ~/.disclaw-team/team.yaml

Two modes:

  1. Legacy format — Hand-authored single file that contains all config (bots, roles, Discord, protocol)
  2. Derived format — Auto-generated from bots.yaml + assignment.yaml before each start

If you’re using the new format (bots.yaml + assignment.yaml), you don’t need to edit team.yaml directly. It’s regenerated automatically.

Minimal valid legacy example:

version: 1
name: My Team
discord:
guild_id: "123456789012345678"
channels:
general: "987654321098765432"
bots:
bot-1:
name: Orchestrator
token_env: BOT_1_TOKEN
role: orchestrator
dm_policy: allowlist
channels:
- "987654321098765432"

Field reference (legacy format):

FieldTypeRequiredDescription
versionnumberNoConfig version (currently 1)
namestringNoTeam display name
discord.guild_idstringYesDiscord server ID
discord.channels.generalstringYesGeneral channel ID
defaults.workspacestringNoWorking directory for bots
defaults.modelstringNoDefault model: opus, sonnet, haiku
botsobjectYesBot definitions (key = bot-id)
bots.<id>.namestringYesBot display name
bots.<id>.token_envstringYesEnvironment variable name for Discord token
bots.<id>.rolestringYesRole type or role-id
bots.<id>.dm_policystringNoallowlist or pairing (see gotcha below)
bots.<id>.channelsarrayNoChannel IDs this bot listens to
humansobjectNoHuman team members (key = slug)
humans.<id>.namestringYesHuman display name
humans.<id>.discord_idstringYesHuman Discord user ID
humans.<id>.rolestringNoHuman role (default: owner)
protocol.communication.*objectNoCommunication rules (see Protocol)
protocol.validation.*objectNoValidation chain rules
protocol.escalation.*objectNoHuman approval rules

Related: bots.yaml, assignment.yaml, CLI: switch