How a Message Executes
When a user sends a message, the Runtime processes it through a structured pipeline before returning a response. The cycle repeats until the agent produces a final text response or reaches the iteration limit. The default is 10 tool call iterations per turn, configurable in the agent’s execution settings.Channels
The Runtime accepts messages from the following channels: Realtime (WebSocket or persistent connection):
Async / webhook (inbound event, outbound REST):
Channel connections are configured per project in Studio under Settings → Connections. Each connection maps a channel to its authentication credentials, routing rules, and channel-specific options.
Tool Execution
Tools extend agent capabilities. When the LLM requests a tool call, the Runtime dispatches it to the appropriate executor and returns the result to the reasoning loop.Execution Pipeline
When a tool executes, the Runtime processes it in sequence:- Resolves the tool binding from the deployment configuration.
- Validates inputs against declared parameter types before the call.
- Makes the external call with the appropriate authentication.
- Processes the result — available in conversation context for reasoning agents, or as session variables for agents with steps.
- Handles errors using
ON_ERRORhandlers: retry logic, fallback responses, or escalation triggers.
Session Management
Each conversation is represented as a session. A session stores the conversation history, variables, agent state, and execution metadata.Session Lifecycle
Sessions time out after 24 hours of inactivity. Conversation history is retained for 90 days.
Conversation Window and Compaction
The Runtime maintains a sliding window over the conversation history to control how much context is sent to the LLM on each turn. The default window is 40 messages. When the window fills, the Runtime can compact older turns into a summary rather than discarding them. This preserves context from earlier in long conversations without increasing token usage. Compaction is disabled by default and can be enabled in Runtime Config in Studio.Concurrency
The Runtime uses a configurable strategy to handle multiple messages arriving within the same session:Multi-Agent Orchestration
The Runtime executes multi-agent topologies defined in ABL. When routing rules match, the Runtime transitions the active thread to the target agent, forwards context, and manages the return path.Thread Hierarchy
When a supervisor hands off to a specialist, the Runtime creates a thread within the existing session — not a new session. Threads form a stack: handoffs push new threads, completions pop back to the parent. The user experiences one continuous conversation regardless of how many agents participate. Each thread maintains its own conversation history and gathered variables, but can read data from parent threads. For configuration, syntax reference, and examples, see Multi-Agent Orchestration.Observability
Every execution path emits structured trace events. Traces are accessible from the Sessions page in Studio.
Each session also captures summary metrics: total messages, runtime cost, token consumption, response latency, tool latency, and model usage breakdown.
For details on navigating sessions and traces in Studio, see Sessions and Runtime Diagnostics.
Rate Limits
The Runtime enforces per-tenant rate limits on a rolling 1-minute window.
When a limit is exceeded, the Runtime returns HTTP
429. The response includes a Retry-After header (seconds to wait) and X-RateLimit-Remaining. Contact your account team to adjust limits for your plan.
Limits Reference
Troubleshooting
Agent stops responding mid-conversation Open the session in Studio and check the Traces tab. Look for anerror event or a tool_result with a non-200 status. Tool failures that aren’t handled by an ON_FAILURE block can cause the reasoning loop to stall.
Earlier context is missing in long conversations
Once the conversation window fills (40 messages by default), older messages are no longer sent to the LLM. Enable compaction in Runtime Config to preserve earlier context as a summary rather than dropping it.
Tool calls return unexpected results
Check the tool_call and tool_result trace events in Studio for the exact request sent and response received. Verify that the tool’s auth profile and endpoint are correct in Settings → Connections.
HTTP 429 — Too Many Requests
The Retry-After header tells you how many seconds to wait before retrying. If you hit limits consistently during evaluation, check whether multiple concurrent test sessions are sharing the same tenant quota.
Agents route to the wrong specialist
HANDOFF rules evaluate top-to-bottom and the first match wins. Check rule ordering in the Supervisor — overly broad conditions placed above specific ones will capture requests before the intended rule is reached. See Orchestration Troubleshooting.