Skip to main content

Complete Example

This example shows a fully formed aion.yaml with multiple agents, skills, and typed agent configuration.

Root Structure

aion.yaml must include the top-level aion key and an agents map.

Unknown Keys Are Rejected

aion serve fails on a key it does not recognize and names it, rather than ignoring it. A key that is dropped silently reads as supported for as long as nobody checks what the server did with it, so every setting below is one the SDK acts on, and anything else is a typo the startup will point at.

Configuration Settings

Required Field

Common Optional Fields

Path Patterns

path accepts module_or_file[:symbol]. Auto-discovery prefers framework instances over classes when both are present. Factory functions should be explicitly named with :symbol because callables are not selected by auto-discovery.

Skills

Enabled Extensions

Use enabled_extensions to opt in to A2A extensions that are inactive by default. Protocol-level extensions (distribution, traceability, messaging, event, cards) are always active and do not need to be listed here. The daemon extension activates only when specified — add it here for daemon-scoped agents.
Each entry is a full extension URI. The extension must have a registered descriptor in the Aion extension registry — unrecognised URIs are silently ignored.

Agent Configuration

Use configuration to define the schema by which an agent can be configured. This schema is represented in the Aion control plane so a deployer can set values for each deployment context. The configured values are provided to the agent on each request. This allows the same agent implementation to run in multiple environments with different configuration variables.
Supported field types:
  • string
  • secret
  • llm
  • integer
  • float
  • boolean
  • array
  • object

Common Field Properties

These properties are shared by agent-configuration field types. Type-specific sections below describe additional constraints and nested schema properties.

String Fields

Example:

Secret Fields

Use type: "secret" for a top-level configuration value that must be encrypted at rest. Composer provides a write-only input and does not display the saved value.
Secret fields support the common description, required, and nullable properties. They cannot define default, min_length, max_length, enum, or items, and they cannot appear inside arrays or objects. At runtime, secret values are provided to the agent as ordinary strings. When Aion calls a remote server, these values are included as plaintext in the configuration map carried by the Distribution extension or Daemon extension. Treat these payloads as sensitive data. Do not log, persist, or forward their configuration values beyond the intended runtime.

LLM Fields

LLM fields store a model ID string, but the Aion control plane can render them as a single-select model picker. The selectable model list is populated from the models available through the control plane’s model service rather than from a static enum in aion.yaml. Use an llm field when the agent will invoke the Aion model service and should let deployers choose which supported model to use. The configured value is still provided to the agent as an environment configuration value, so agent code must pass that selected model ID into the SDK model-service call. Example:

Integer Fields

Example:

Float Fields

Example:

Boolean Fields

Boolean fields use common properties only. Example:

Array Fields

Example:

Object Fields

Example:

Framework Notes

path must resolve to an object the installed adapter recognises: The adapter that recognises the object runs the agent, so an agent needs the extra for the framework it is written in.

Multi-Agent Example