Agent Profiles
Agent profiles are YAML files stored in DAEMI's profile directory. Each file defines one agent (or team). DAEMI watches this directory at startup and loads every .yaml file it finds.
Minimal Profile
The smallest valid profile:
agent_id: aria
name: Aria
role: Research Assistant
This creates an agent named Aria with default personality, default memory policy, and the system LLM provider.
Full Profile Schema
# ── Identity ────────────────────────────────────────────────
agent_id: koda # Required. Unique ID. Used for memory keys and API routing.
name: Koda # Required. Display name shown in Console.
role: Coding Agent # Required. One-line role description. Injected into system prompt.
# ── Type ────────────────────────────────────────────────────
type: agent # Optional. "agent" (default) or "team".
# ── Personality ─────────────────────────────────────────────
personality:
tone: focused, pragmatic # Comma-separated tone descriptors.
traits:
- high conscientiousness # Trait list. Used in persona construction.
- detail-oriented
- direct communicator
- strong technical depth
emotional_model: stable # Optional. "stable" | "expressive" | "reserved"
# ── Memory ──────────────────────────────────────────────────
memory:
transfer_policy: carry_all # See transfer policies below.
ltm_max_results: 10 # Max LTM records surfaced per session start.
stm_window: 50 # Max messages kept in active STM context.
# ── LLM ─────────────────────────────────────────────────────
llm:
enabled: false # false = use system default provider/model.
provider: anthropic # "anthropic" | "openai-codex". Overrides system.
model: claude-opus-4 # Optional model override within provider.
temperature: 0.7 # Optional. Default varies by provider.
max_tokens: 4096 # Optional. Response length cap.
# ── Tools ───────────────────────────────────────────────────
tools:
allow_all: true # Default: true. Agent can use all tool graph nodes.
restrict_to: # Optional. If set, agent only uses these tools.
- web_search
- read_file
- write_file
Transfer Policies
The memory.transfer_policy field controls what gets written to LTM at session end.
| Policy | Behavior |
|---|---|
carry_all | Every significant exchange is distilled to LTM |
facts_only | Only explicit facts and decisions are stored |
explicit_only | Only items the agent is explicitly told to remember |
none | Nothing is written to LTM — session is ephemeral |
carry_all is the default and produces the richest long-term memory at the cost of more storage.
LLM Configuration
When llm.enabled is false, the agent inherits whatever provider is configured in the DAEMI system settings. This is the recommended default — it lets you change the system model once and have all agents follow.
Set llm.enabled: true to pin a specific agent to a specific provider or model:
llm:
enabled: true
provider: openai-codex
model: gpt-5.3-codex
temperature: 0.2 # lower = more deterministic, good for coding agents
Profile Conventions
- File name should match
agent_id:koda.yaml,aria.yaml agent_idmust be lowercase alphanumeric with underscores — it becomes part of memory store keys- Changes to profiles take effect on server restart
- Deleting a profile does not delete memory — the agent's memory store entries remain
Example Profiles
Research Agent
agent_id: aria
name: Aria
role: Research Assistant
personality:
tone: curious, methodical, thorough
traits:
- high openness
- strong analytical drive
- evidence-first reasoning
memory:
transfer_policy: facts_only
ltm_max_results: 15
llm:
enabled: false
Coding Agent
agent_id: koda
name: Koda
role: Coding Agent
personality:
tone: focused, pragmatic, terse
traits:
- high conscientiousness
- detail-oriented
- prefers code over explanation
memory:
transfer_policy: carry_all
llm:
enabled: true
provider: openai-codex
model: gpt-5.3-codex
temperature: 0.1
Creative Agent
agent_id: muse
name: Muse
role: Creative Writing Partner
personality:
tone: imaginative, expressive, warm
traits:
- high openness
- strong narrative instinct
- playful with language
emotional_model: expressive
memory:
transfer_policy: carry_all
stm_window: 100
llm:
enabled: false