File structure
An ABL document is a plain-text file composed of top-level sections, each introduced by an uppercase keyword followed by a colon. Sections can appear in any order, but by convention theAGENT: declaration comes first.
File extensions
| Extension | Contents |
|---|---|
.agent.abl | Agent definition (most common) |
.tools.abl | Reusable tool library (see Tool file imports) |
.agent.yaml | Agent definition in YAML format |
Required sections
Every agent document must contain:AGENT:— the agent nameGOAL:— the agent’s objective
Recognized top-level sections
| Section | Purpose | Reference |
|---|---|---|
AGENT: | Agent name declaration | Agent declaration |
VERSION: | Semantic version | Agent declaration |
DESCRIPTION: | Human-readable description | Agent declaration |
LANGUAGE: | Agent language code | Agent declaration |
GOAL: | Agent objective | Agent declaration |
PERSONA: | Agent personality description | Agent declaration |
LIMITATIONS: | Explicit boundaries | Agent declaration |
IDENTITY: | Combined identity block | Agent declaration |
INSTRUCTIONS: | Operational instructions | Agent declaration |
EXECUTION: | Model and runtime configuration | Agent declaration |
TOOLS: | Tool definitions | Tools |
GATHER: | Information collection fields | GATHER |
FLOW: | Structured execution steps | FLOW |
MEMORY: | Session and persistent state | Memory & Constraints |
CONSTRAINTS: | Business rule enforcement | Memory & Constraints |
GUARDRAILS: | Input/output safety checks | Guardrails |
DELEGATE: | Sub-agent delegation | Multi-Agent & Supervisor |
HANDOFF: | Agent transfer | Multi-Agent & Supervisor |
ESCALATE: | Human escalation | Multi-Agent & Supervisor |
COMPLETE: | Completion conditions | Multi-Agent & Supervisor |
ON_ERROR: | Error handlers | Lifecycle & Hooks |
ON_START: | Session initialization | Lifecycle & Hooks |
MESSAGES: | Customizable system messages | — |
TEMPLATES: | Reusable response templates | Rich Content & Expressions |
HOOKS: | Lifecycle event handlers | Lifecycle & Hooks |
NLU: | Natural language understanding | NLU |
MULTI_INTENT: | Multi-intent configuration | NLU |
LOOKUP_TABLES: | Reference data for validation | Data Types & Utilities |
SYSTEM_PROMPT: | Custom system prompt template | — |
ATTACHMENTS: | File/media collection | Data Types & Utilities |
Syntax rules
Indentation
ABL uses indentation to express nesting. Use spaces (two or more) for indentation. Tabs are accepted but spaces are preferred for consistency. Content nested under a section keyword must be indented further than the keyword line.Keywords
Section keywords are uppercase by convention and followed by a colon (:). Keywords are case-insensitive at the parser level — AGENT:, agent:, and Agent: all parse identically. However, uppercase is the canonical style for the ABL format.
In YAML format files (.agent.yaml), lowercase keywords are used exclusively.
Comments
Lines beginning with# are comments and are ignored by the parser. Comments can appear anywhere in the file.
Strings
Strings can be written in several forms:| Form | Syntax | Use case |
|---|---|---|
| Quoted | "value" | Single-line values |
| Unquoted | value | Simple values without special characters |
| Pipe block | | followed by indented lines | Multi-line text (preserves newlines) |
Lists
Lists use YAML-style- item syntax with indentation:
Auto-detection
The parser determines the document type from the first meaningful keyword it encounters:| First keyword | Document type |
|---|---|
AGENT: | Agent document |
SUPERVISOR: | Supervisor document |
BEHAVIOR_PROFILE: | Behavior profile document |
TOOLS: (at root level in a .tools.abl file) | Tool file document |
MODE: keyword. Instead, agents operate in reasoning mode by default — the LLM decides which tools to call and when, guided by the GOAL: and PERSONA:.
Any agent can optionally include a FLOW: section to add structured execution steps. Adding a FLOW: section gives the agent a step-by-step execution graph. Each step within the flow declares REASONING: true or REASONING: false to control whether that individual step uses LLM reasoning or deterministic execution.
Note: TheMODE:keyword is deprecated and produces a parser error if used. Remove it and use per-stepREASONING:declarations withinFLOW:instead.
YAML format
ABL supports an alternative YAML format for agent definitions. YAML files use.agent.yaml as their extension. The parser auto-detects YAML format by checking whether the first non-comment, non-empty lines use lowercase keys matching known ABL sections (agent, goal, persona, tools, etc.).
Version declaration
The optionalVERSION: directive specifies the document version in semver format:
"1.0.0". The version is stored in the document metadata and can be used for compatibility tracking.