pub struct Agent {
pub runtime: String,
pub model: Option<String>,
pub role_prompt: Option<RolePrompt>,
pub permission_mode: Option<String>,
pub autonomy: String,
pub can_dm: Vec<String>,
pub can_broadcast: Vec<String>,
pub reports_to: Option<String>,
pub on_rate_limit: Option<Vec<String>>,
pub effort: Option<EffortLevel>,
pub interfaces: Option<AgentInterfaces>,
pub display_name: Option<String>,
}Fields§
§runtime: String§model: Option<String>§role_prompt: Option<RolePrompt>§permission_mode: Option<String>§autonomy: String§can_dm: Vec<String>§can_broadcast: Vec<String>§reports_to: Option<String>§on_rate_limit: Option<Vec<String>>Override the global rate-limit hook chain for this agent.
effort: Option<EffortLevel>Per-agent reasoning effort. Renders as EFFORT=<value> in the
agent env file; the wrapper passes it to the runtime (e.g.
claude --effort <value>). Strict enum: typos like hgih fail
compose validation rather than silently falling back to the
wrapper default.
interfaces: Option<AgentInterfaces>Per-manager human-facing interfaces. Today’s only adapter is
telegram; the shape is reserved for future adapters
(discord, imessage, …) so a manager can declare every
channel it speaks on in one place. Workers leave this unset.
display_name: Option<String>T-160: optional human-friendly label rendered by the TUI in
place of the agent id (roster, details header, mailbox row
attribution, statusline). Absent → render the agent id (current
behavior). Validation: non-empty, ≤64 chars, UTF-8 anything.
The agent id stays canonical for routing, tmux session names,
CLI args, and YAML cross-refs (can_dm, can_broadcast,
reports_to) — display_name is render-time only.