Design principles
ABL agents are goal-driven rather than script-driven. Rather than encoding an explicit numbered state machine, you declare the outcome the agent should achieve and the rules it must respect, and the runtime reasons toward that goal — falling back to deterministic execution wherever you need it.- Goal-oriented — agents work toward a declared
GOAL:, not through hard-coded scripts. - Constraint-guarded — business rules are enforced by
CONSTRAINTS:andGUARDRAILS:, independent of step order. - Memory-enabled — agents can remember user and session state across turns and sessions.
- Composable — agents can
DELEGATE:to sub-agents orHANDOFF:to peers and supervisors. - Human-in-the-loop —
ESCALATE:provides explicit paths to human operators.
FLOW: section
lets you make any part of the conversation deterministic, step by step (see Auto-detection).
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
Required sections
Every agent document must contain:AGENT:— the agent nameGOAL:— the agent’s objective
Recognized top-level sections
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 followed by a colon (:). In the .agent.abl format, section keywords must be uppercase (AGENT:, GOAL:, TOOLS:, …). In the .agent.yaml format, they must be lowercase (agent:, goal:, …). Mixed case is not supported, and the two formats do not accept each other’s casing.
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:Lists
Lists use YAML-style- item syntax with indentation:
Auto-detection
The parser determines the document type from the first meaningful keyword it encounters:
Within an agent document, execution mode is not declared via a global
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.
Compilation
ABL source files are compiled to a typed intermediate representation (AgentIR) at deploy time. The runtime loads and executes the IR directly — there is no code-generation step.AgentIR that gathers the document’s sections into
typed configuration — identity (from GOAL/PERSONA/LIMITATIONS, including a generated system
prompt), tools, gather, constraints and guardrails, coordination (handoffs/delegates/escalation),
completion, and memory. Supervisors are ordinary agents with routing populated, so a project’s
agents and supervisors all live in one registry and can compose hierarchically.