pub struct AgentConfig {
pub name: String,
pub description: String,
pub model: String,
pub reasoning_effort: Option<ReasoningEffort>,
pub model_settings: ModelSettings,
pub context_window: Option<u32>,
pub user_invocable: bool,
pub agent_invocable: bool,
pub providers: ProviderConnectionOverrides,
pub prompts: Vec<PromptSource>,
pub mcps: Vec<McpSourceSpec>,
pub tools: ToolFilter,
}Expand description
A single agent definition. Every agent must be invocable on at least one
surface — set userInvocable, agentInvocable, or both.
A user-invocable agent with its own prompt and a read-only tool allowlist:
{
"name": "Review",
"description": "Reviews diffs and suggests changes",
"model": "anthropic:claude-sonnet-4-5-20250929",
"userInvocable": true,
"prompts": [".aether/REVIEW.md"],
"tools": { "allow": [{ "readOnly": true }, "review__review_artifact"] }
}A deterministic judge agent that pins sampling via modelSettings:
{
"name": "Judge",
"description": "Grades responses against a rubric",
"model": "anthropic:claude-sonnet-4-5-20250929",
"userInvocable": true,
"modelSettings": { "temperature": 0, "maxTokens": 1024 }
}A sub-agent (callable by other agents) that pins a Bedrock inference profile:
{
"name": "Search",
"description": "Answers questions about the codebase",
"model": "anthropic.claude-sonnet-4-5-20250929-v1:0",
"agentInvocable": true,
"providers": {
"bedrock": {
"inferenceProfileArn": "arn:aws:bedrock:us-west-2:000000000000:application-inference-profile/abc"
}
}
}Fields§
§name: StringAgent identifier. Names are trimmed for merge and lookup.
description: StringHuman-readable description shown in UIs and sub-agent listings.
model: StringModel spec for this agent, in provider:model-id form. Accepts a
comma-separated alloy of specs to round-robin across turns.
reasoning_effort: Option<ReasoningEffort>Reasoning level for the LLM. Uses provider default when not explicitly set.
model_settings: ModelSettingsSampling controls (temperature, topP, maxTokens) applied to this
agent’s model calls. Omitted knobs keep the provider/model default.
context_window: Option<u32>Override for the model’s context window, in tokens. Defaults to the model’s advertised window.
user_invocable: boolExposes the agent as a user-selectable mode.
agent_invocable: boolExposes the agent to the subagents MCP server so other agents can spawn it.
providers: ProviderConnectionOverridesPer-agent provider overrides, merged over the top-level providers.
prompts: Vec<PromptSource>Agent-specific prompt sources. A non-empty array replaces the top-level prompts.
mcps: Vec<McpSourceSpec>Agent-specific MCP sources. A non-empty array replaces the top-level mcps.
tools: ToolFilterPer-agent MCP tool filter (allow/deny lists).
Trait Implementations§
Source§impl Clone for AgentConfig
impl Clone for AgentConfig
Source§impl Debug for AgentConfig
impl Debug for AgentConfig
Source§impl Default for AgentConfig
impl Default for AgentConfig
Source§impl<'de> Deserialize<'de> for AgentConfig
impl<'de> Deserialize<'de> for AgentConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for AgentConfig
impl JsonSchema for AgentConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for AgentConfig
impl PartialEq for AgentConfig
Source§impl Serialize for AgentConfig
impl Serialize for AgentConfig
impl StructuralPartialEq for AgentConfig
Auto Trait Implementations§
impl Freeze for AgentConfig
impl RefUnwindSafe for AgentConfig
impl Send for AgentConfig
impl Sync for AgentConfig
impl Unpin for AgentConfig
impl UnsafeUnpin for AgentConfig
impl UnwindSafe for AgentConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more