Agents

An agent is a named configuration that binds a model, provider, system prompt, default mode, and tool access together. Each agent is a Markdown file with YAML frontmatter in .aura/config/agents/.

When you switch agents (via /agent, Shift+Tab, or --agent), Aura swaps the entire LLM configuration in one step.

Use agents to switch models, providers, or personas. Use modes for same-model behavior variants — read-only vs editing, planning vs execution. Agents change who works; modes change how.

Frontmatter Schema

---
name: AgentName # Unique identifier
description: "" # Shown in /agent listing
inherit: [Base] # Parents. Absent = inherit; present = replace. Slices replaced.

model:
  provider: ollama # Provider name (must match providers/*.yaml)
  name: llama3:8b # Model identifier
  think: high # false/off, true, "low", "medium", "high"
  context: 65536 # Context window in tokens
  generation: # All pointer fields — omit to inherit
    temperature: 0.7
    top_p: 0.95
    top_k: 40
    frequency_penalty: 0.0
    presence_penalty: 0.0
    max_output_tokens: 8000
    stop: []
    seed: 42
    think_budget: 4000

response_format: # Constrain LLM output format (optional)
  type: json_schema # "text" (default), "json_object", or "json_schema"
  name: my_output # Schema name (required for json_schema)
  schema: # JSON Schema as YAML
    type: object
    properties:
      answer: { type: string }
    required: [answer]
    additionalProperties: false
  strict: true

thinking: "" # Prior thinking: "" (keep), "strip", "rewrite"

tools:
  enabled: ["*"] # Glob patterns to enable (["*"] = all)
  disabled: [] # Applied after enabled
  policy:
    auto: [] # Auto-approve without prompting
    confirm: [] # Require user approval
    deny: [] # Hard-block
      # Pattern syntax: "ToolName", "Bash:command*", "Tool:/path/*"

hooks:
  enabled: [] # Hook name patterns to include ([] = all)
  disabled: ["go:*"] # Hook name patterns to exclude. Cascade-prunes dependents.

system: Agentic # System prompt name (Agentic, Chat, Lite)
mode: Plan # Default mode (Edit, Plan, Ask)

hide: false # Exclude from /agent listing and Shift+Tab
default: false # Use when --agent not specified (one allowed)
subagent: false # Available for Task tool delegation
agentsmd: all # AGENTS.md injection: "all", "global", "local", "none"

fallback: # Provider failover chain (ordered agent names)
  - openrouter/gpt-oss-120b
  - anthropic/sonnet

files: # Files injected into system prompt
  - docs/style-guide.md # Relative to config home (.aura/)

features: # Override global feature defaults (deep merge)
  compaction:
    threshold: 70
  tools:
    max_steps: 20
---

The Markdown body below the frontmatter becomes the agent’s prompt template. The system field selects a system prompt from prompts/system/.

Inheritance

inherit: [Base]              # Single parent
inherit: [Base, Restricted]  # Multiple parents — merged left-to-right, child last

Key absent in child = inherit from parent. Key present = replace entirely. Slices are always replaced. The default field is excluded from inheritance.

The prompt body also inherits — last non-empty body in the chain wins. Cycles and missing parents produce errors at startup.

File Autoloading

The files: field lists paths to inject into the system prompt. Paths and file contents are both rendered as Go templates before loading.

files:
  - docs/style-guide.md
  - "{{ .Config.Source }}/shared/rules.md"
  - '{{ if env "LOAD_EXTRA" }}config/prompts/extra.md{{ end }}'

Paths resolve relative to .aura/. Conditional paths evaluating to empty are silently skipped. Missing files cause an error.

Template variables available in paths and prompt bodies: .Config.Global, .Config.Project, .Config.Source, .LaunchDir, .WorkDir, .Model.Name, .Provider, .Agent, .Mode.Name, .Tools.Eager, .Memories.Local, .Memories.Global, {{ env "VAR" }}, {{ index .Vars "key" }}. See Prompts for the full set.

AGENTS.md Injection

Value Behavior
"" or "all" Inject all discovered AGENTS.md files (default)
"global" Only global-scoped AGENTS.md (~/.aura/)
"local" Only project and walked-directory AGENTS.md
"none" Skip all injection

Provider Failover

The fallback: list is tried in order when the primary provider fails permanently (after retries). Each fallback is a full agent with its own model, prompt, and tools.

Triggers on: network failures, auth errors, rate limits, credit exhaustion, model unavailable, server errors. Content filter errors and user cancellation do not trigger failover.

Failover is one-way per session — use /agent <name> to switch back.

Feature Overrides

The features: block overrides global defaults from features/*.yaml. Unset fields inherit the global value.

Override precedence: global → CLI flags → agent → mode → task

Available keys: compaction, title, thinking, vision, embeddings, tools, stt, tts, sandbox, subagent, plugins, mcp, estimation, guardrail. See Features.

Example

---
name: MyAgent
model:
  provider: ollama
  name: llama3:8b
  think: medium
  context: 16384
  generation:
    temperature: 0.7
    top_k: 40
    max_output_tokens: 8000
thinking: strip
tools:
  enabled: ["*"]
  disabled: ["Bash"]
hooks:
  disabled: ["go:*"]
features:
  tools:
    max_steps: 100
  compaction:
    threshold: 90
system: Agentic
mode: Edit
---

Back to top

Copyright © 2026 idelchi. Distributed under the MIT License.