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
TESTS: is a reserved section name the parser accepts but currently ignores — content under
it is parsed and discarded with no effect. It exists to avoid “unknown section” errors; do not
rely on it for behavior.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.
The
MODE: keyword is deprecated and produces a parser error if used. Remove it and use per-step REASONING: declarations within FLOW: 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.