Skip to main content
Agent Blueprint Language (ABL) is the enterprise control plane for agentic AI — a schema-driven language purpose-built for multi-agent orchestration where deterministic governance meets autonomous reasoning. ABL spans the full control spectrum: delegate autonomously, supervise selectively, or lock down as a deterministic state machine. Agent definitions compile into immutable artifacts, and AI can author blueprints just as humans do.

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.
  1. Goal-oriented — agents work toward a declared GOAL:, not through hard-coded scripts.
  2. Constraint-guarded — business rules are enforced by CONSTRAINTS: and GUARDRAILS:, independent of step order.
  3. Memory-enabled — agents can remember user and session state across turns and sessions.
  4. Composable — agents can DELEGATE: to sub-agents or HANDOFF: to peers and supervisors.
  5. Human-in-the-loopESCALATE: provides explicit paths to human operators.
Reasoning and determinism are not either/or. An agent reasons by default; adding a 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 the AGENT: declaration comes first.
AGENT: Customer_Support

GOAL: |
  Help customers resolve billing questions.

PERSONA: |
  Friendly, patient support representative.

TOOLS:
  lookup_account(account_id: string) -> {name: string, balance: number}
    description: "Retrieve account details"
    type: http
    endpoint: "/api/accounts/lookup"
    method: POST

GATHER:
  account_id:
    prompt: "What is your account number?"
    type: string
    required: true

File extensions

ExtensionContents
.agent.ablAgent definition (most common)
.tools.ablReusable tool library (see Tool file imports)
.agent.yamlAgent definition in YAML format

Required sections

Every agent document must contain:
  • AGENT: — the agent name
  • GOAL: — the agent’s objective
All other sections are optional. If a section is omitted, its value defaults to empty (empty list, empty object, or platform defaults as specified in each section’s reference).

Recognized top-level sections

SectionPurposeReference
AGENT:Agent name declarationAgent declaration
VERSION:Semantic versionAgent declaration
DESCRIPTION:Human-readable descriptionAgent declaration
LANGUAGE:Agent language codeAgent declaration
GOAL:Agent objectiveAgent declaration
PERSONA:Agent personality descriptionAgent declaration
LIMITATIONS:Explicit boundariesAgent declaration
IDENTITY:Combined identity blockAgent declaration
INSTRUCTIONS:Operational instructionsAgent declaration
EXECUTION:Model and runtime configurationAgent declaration
TOOLS:Tool definitionsTools
GATHER:Information collection fieldsGATHER
FLOW:Structured execution stepsFLOW
MEMORY:Session and persistent stateMemory & Constraints
CONSTRAINTS:Business rule enforcementMemory & Constraints
GUARDRAILS:Input/output safety checksGuardrails
DELEGATE:Sub-agent delegationMulti-Agent & Supervisor
HANDOFF:Agent transferMulti-Agent & Supervisor
ESCALATE:Human escalationMulti-Agent & Supervisor
COMPLETE:Completion conditionsMulti-Agent & Supervisor
ON_ERROR:Error handlersLifecycle & Hooks
ON_START:Session initializationLifecycle & Hooks
MESSAGES:Customizable system messages
TEMPLATES:Reusable response templatesRich Content & Expressions
HOOKS:Lifecycle event handlersLifecycle & Hooks
NLU:Natural language understandingNLU
MULTI_INTENT:Multi-intent configurationNLU
INTENTS:Intent categories (routing)NLU
ENTITIES:Reusable named entitiesNLU
LOOKUP_TABLES:Reference data for validationData Types & Utilities
SYSTEM_PROMPT:Custom system prompt templateAgent declaration
ATTACHMENTS:File/media collectionData Types & Utilities
DESTINATIONS:Outbound HTTP delivery targets
TRANSFER_FLOW_POLICIES:Named policies referenced by escalation routing
RETURN_HANDLERS:Named parent-resume handlers for returnable handoffsMulti-Agent & Supervisor
ACTION_HANDLERS:Reusable interactive-action handlers
CONVERSATION:Conversation-behavior configuration

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.
TOOLS:
  search(query: string) -> {results: string[]}
    description: "Search the catalog"
    type: http
    endpoint: "/api/search"
    method: GET

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.
# This is a comment
AGENT: My_Agent

GOAL: "Help with orders"  # Inline comments are NOT supported in ABL format

Strings

Strings can be written in several forms:
FormSyntaxUse case
Quoted"value"Single-line values
UnquotedvalueSimple values without special characters
Pipe block| followed by indented linesMulti-line text (preserves newlines)
GOAL: "Single line goal"

GOAL: |
  Multi-line goal that preserves
  line breaks within the block.

LANGUAGE: "en"

Lists

Lists use YAML-style - item syntax with indentation:
LIMITATIONS:
  - "Cannot access external systems"
  - "Cannot process payments directly"

Auto-detection

The parser determines the document type from the first meaningful keyword it encounters:
First keywordDocument type
AGENT:Agent document
SUPERVISOR:Supervisor document
BEHAVIOR_PROFILE:Behavior profile document
TOOLS: (at root level in a .tools.abl file)Tool file document
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: 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.).
agent: Customer_Support

goal: |
  Help customers resolve billing questions.

persona: |
  Friendly, patient support representative.

tools:
  - name: lookup_account
    parameters:
      - name: account_id
        type: string
    returns:
      type: object
      fields:
        name: string
        balance: number
    description: Retrieve account details
    type: http
    endpoint: /api/accounts/lookup
    method: POST
Both formats produce the same intermediate representation (AST) and compile to identical runtime artifacts.

Version declaration

The optional VERSION: directive specifies the document version in semver format:
VERSION: "2.0.0"
When omitted, the version defaults to "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.
ABL source (.agent.abl / .agent.yaml)


   Parser        → parses the document into an AST


   Compiler      → produces a CompilationOutput: a map of AgentIR
        │           instances (one per agent, including supervisors)
        │           plus the entry agent

   Runtime       → loads the IR and executes it (reasoning loop,
                   flow steps, routing, constraint checking)
Each agent (and supervisor) compiles to a single 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.

Template interpolation

Throughout ABL, string values support template interpolation using double-brace syntax:
"Hello, {{customer_name}}. Your balance is {{balance}}."
Conditional blocks use Handlebars-style helpers:
"{{#if exchange_rate}}Rate: {{exchange_rate}}{{/if}}"
Template expressions are resolved at runtime against session variables and tool results.