.agent.abl file must begin with an AGENT: declaration.
AGENT keyword
TheAGENT: keyword declares the agent’s name. This name must be unique within the project and is used as the primary identifier throughout the platform.
Naming rules
- Use
PascalCasewith underscores to separate words - Must start with a letter
- May contain letters, digits, and underscores
- Must be unique within the system
Examples
VERSION
TheVERSION: directive specifies the semantic version of the agent document. The value must be a quoted string in semver format (major.minor.patch).
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
VERSION | string (semver) | No | "1.0.0" | Document version in major.minor.patch format |
meta.version) and is available for compatibility checks, deployment tracking, and audit trails.
Example
DESCRIPTION
TheDESCRIPTION: directive provides a human-readable summary of the agent’s purpose. It supports both single-line and multi-line (pipe block) formats.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
DESCRIPTION | string | No | none | Human-readable summary of the agent’s purpose |
LANGUAGE
TheLANGUAGE: directive sets the primary language the agent operates in. The value is a quoted BCP 47 language tag.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
LANGUAGE | string | No | none | BCP 47 language code (e.g., "en", "es-EC", "fr") |
Complete declaration property reference
The following table summarizes all agent declaration properties:| Property | Type | Required | Default | Description |
|---|---|---|---|---|
AGENT | string | Yes | — | Unique agent name in PascalCase_With_Underscores |
VERSION | string (semver) | No | "1.0.0" | Document version |
DESCRIPTION | string | No | none | Human-readable description |
LANGUAGE | string | No | none | BCP 47 language code |
Identity & Goals
The identity and goals sections define what an agent is trying to achieve, how it presents itself, and what boundaries it operates within. These sections feed directly into the system prompt that guides the LLM’s behavior at runtime.GOAL
TheGOAL: section defines the agent’s primary objective. It is the only required section besides AGENT:. The goal drives the LLM’s reasoning, determines completion conditions, and provides the core purpose statement included in every system prompt.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
GOAL | string | Yes | — | The agent’s primary objective. Used in system prompt and completion detection. |
Goal guidelines
- State the objective from the agent’s perspective, not the user’s
- Be specific about what the agent should accomplish
- Include success criteria when measurable outcomes exist
- When an agent includes a
FLOW:section, the goal also serves as context for any steps that haveREASONING: true
PERSONA
ThePERSONA: section describes how the agent should present itself — its tone, communication style, expertise signaling, and behavioral characteristics. The persona is included in the system prompt to shape the LLM’s response style.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
PERSONA | string | No | "" (empty) | Personality and communication style description |
LIMITATIONS
TheLIMITATIONS: section declares explicit boundaries on what the agent cannot or must not do. Each limitation is a quoted string in a list. Limitations are included in the system prompt as hard constraints.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
LIMITATIONS | string[] | No | [] (empty list) | List of explicit boundaries the agent must not cross |
Limitation guidelines
- State what the agent cannot do, not what it can do
- Be specific — vague limitations are difficult for the LLM to enforce
- Include the reason or consequence when it helps clarity
- Limitations complement
CONSTRAINTS:(which are machine-enforced); limitations are LLM-enforced behavioral rules
INSTRUCTIONS
TheINSTRUCTIONS: section provides operational guidance that supplements the goal. Instructions are appended to the goal in the system prompt. Use instructions for procedural guidance that does not fit naturally in the goal or persona.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
INSTRUCTIONS | string | No | none | Operational guidance appended to the agent’s goal |
Instructions: heading within the goal’s description.
IDENTITY
TheIDENTITY: section is an alternative, structured format that combines role, persona, expertise, and limitations into a single block. When used, its fields are mapped to the equivalent top-level sections.
IDENTITY field reference
| Field | Type | Required | Default | Maps to |
|---|---|---|---|---|
role | string | No | "" | GOAL: (sets the goal description) |
persona | string | No | "" | PERSONA: (sets persona description) |
expertise | string[] | No | [] | Appended to PERSONA: as “Expertise: …” |
limitations | string[] | No | [] | LIMITATIONS: |
Mapping behavior
When the parser encounters anIDENTITY: block:
- The
rolevalue becomes theGOAL:description - The
personavalue becomes thePERSONA:description - The
expertiselist is appended to the persona as a comma-separated string - The
limitationslist populatesLIMITATIONS:
IDENTITY: block or the individual GOAL:, PERSONA:, LIMITATIONS: sections, but if both are present, the individual sections take the values set last in document order.
Combining identity sections
The recommended approach is to use the individual sections (GOAL:, PERSONA:, LIMITATIONS:) for clarity. The IDENTITY: block is available as a compact alternative.
Recommended style
Compact style (using IDENTITY)
Execution Configuration
TheEXECUTION: section configures runtime behavior for the agent, including LLM model selection, temperature, token limits, timeouts, extended thinking, and per-operation model routing.
Syntax
Configuration properties
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | No | Platform default | Primary LLM model identifier |
temperature | number | No | Platform default | Sampling temperature (0.0—1.0). Lower values produce more deterministic output. |
max_tokens | number | No | Platform default | Maximum tokens in LLM response |
tool_timeout | number | No | Platform default | Timeout in milliseconds for tool execution |
llm_timeout | number | No | Platform default | Timeout in milliseconds for LLM inference calls |
session_idle_timeout | number | No | Platform default | Timeout in milliseconds before an idle session expires |
max_reasoning_iterations | number | No | Platform default | Maximum reasoning loop iterations for agents without a flow |
max_flow_iterations | number | No | Platform default | Maximum step transitions in a flow before forced exit |
voice_latency_target | number | No | Platform default | Target latency in milliseconds for voice channel responses |
fallback_model | string | No | none | Model to use when the primary model is unavailable or errors |
enable_thinking | boolean | No | false | Enable extended thinking (Anthropic Claude models) |
thinking_budget | number | No | Platform default | Token budget allocated to extended thinking |
compaction_threshold | number | No | Platform default | Context-usage ratio (0.0—1.0) that triggers auto-compaction |
inline_gather | boolean | No | false | When true, gather fields are collected inline during conversation rather than as a separate phase |
Extended thinking
Extended thinking allows Claude models to perform internal reasoning before producing a response. This is useful for complex multi-step reasoning tasks where the agent needs to plan before acting.| Property | Type | Required | Default | Description |
|---|---|---|---|---|
enable_thinking | boolean | No | false | Enable the extended thinking capability |
thinking_budget | number | No | Platform default | Maximum tokens the model can use for internal reasoning |
thinking_budget controls how many tokens are allocated to this internal reasoning.
Context compaction
As conversations grow, the context window fills with message history. Context compaction automatically summarizes older messages when the context usage exceeds a threshold, preventing context-window overflow.| Property | Type | Required | Default | Description |
|---|---|---|---|---|
compaction_threshold | number | No | Platform default | Ratio (0.0—1.0) of context usage that triggers compaction |
Per-operation model routing
Themodels: sub-block within EXECUTION: allows you to route different operations to different LLM models. This enables cost optimization by using faster, cheaper models for simple tasks and more capable models for complex reasoning.
models: block maps operation names to model identifiers. The model property serves as the default for any operation not explicitly listed.
Recognized operation names
| Operation | Description |
|---|---|
extraction | Extracting structured data from user messages (e.g., gather field extraction) |
response_gen | Generating user-facing responses |
reasoning | Complex reasoning, planning, and decision-making |
coordination | Multi-agent coordination and routing decisions |
Complete execution example
Complete example
Related
- Language overview — file structure, syntax rules, and auto-detection
- Tools — tool-level timeout configuration
- FLOW — per-step GOAL overrides and
MAX_TURNSfor reasoning steps