workspace.yaml agents
The software_delivery.agents block configures which agent client LumenFlow prefers, which agent
names are considered part of the workspace roster, and which of those agents become mandatory for
matching code paths.
Fields
Section titled “Fields”agents.defaultClient
Section titled “agents.defaultClient”Preferred client ID when a command needs an agent client and the caller did not pass one explicitly.
- Type:
string - Default:
claude-code
agents.roster
Section titled “agents.roster”The workspace-level list of agent names the orchestration surface should treat as valid. When you omit this field, LumenFlow uses the built-in framework roster:
-
general-purpose -
lumenflow-pm -
test-engineer -
code-reviewer -
bug-triage -
lumenflow-enforcer -
initiative-architect -
Type:
string[] -
Default: the built-in agent roster above
agents.mandatory.names
Section titled “agents.mandatory.names”Subset of agents.roster that may be enforced as mandatory when a matching trigger fires.
- Type:
string[] - Default:
[]
agents.mandatory.triggers
Section titled “agents.mandatory.triggers”Maps mandatory agent names to glob patterns. If a WU touches a matching path, that agent becomes mandatory for the workflow surfaces that consume mandatory-agent rules.
- Type:
Record<string, string[]> - Default:
{}
Example:
agents.clients.<client>.agentsDir
Section titled “agents.clients.<client>.agentsDir”Optional per-client override for where agent definition files live. This is separate from the
workspace roster itself, but it is commonly updated alongside agents.roster when you add a new
client-specific agent surface.
- Type:
string - Default: inherits the global directory default for that client
Defaults And Partial Overrides
Section titled “Defaults And Partial Overrides”Nested agent config merges with defaults instead of replacing the whole structure. For example, this partial override keeps the built-in roster and default client while only adding trigger rules:
Likewise, setting only mandatory.names no longer removes the default mandatory.triggers object.
Migration
Section titled “Migration”If your workspace previously only used:
you do not need to change anything. That configuration still works.
Add the new fields only when you need them:
- Add
agents.rosterwhen you want to declare a custom or narrowed set of agent names. - Add
agents.mandatory.nameswhen some of those agents should become enforceable. - Add
agents.mandatory.triggerswhen you want code-path-based mandatory-agent detection. - Add
agents.clients.<client>.agentsDirwhen a client should resolve agent definitions from a non-default directory.
Validation Rules
Section titled “Validation Rules”The authoritative schema enforces two cross-field rules:
- Every name in
agents.mandatory.namesmust also appear inagents.roster. - Every key in
agents.mandatory.triggersmust also appear inagents.mandatory.names.
Those rules keep the roster, mandatory list, and trigger map aligned as you customize the workspace.