Skip to content

Glossary

Names in Axle are load-bearing — they show up in event types, span names, option names, and your own code. So these definitions are normative: if a page on this site contradicts one, the page is wrong and we'd like to know.

If you're meeting these for the first time, Anatomy of a send walks through them properly. This page is the quick-reference version.

The three strata

LayerUnitContainsLives at
WireMessagecontent partsagent.messages
ExecutionStepone request + its falloutthe send() loop
RenderTurnparts (+ annotations)the host's Transcript

One send() = one or more steps, producing one user turn and one agent turn, carried on the wire as messages.

Terms

Message — the wire-layer unit: a role-tagged (user / assistant / tool) AxleMessage whose content is a list of parts. Messages are what providers consume and what compaction rewrites. Never render state; never host-level chat input.

Part — the atomic content unit: text, thinking, tool-call, file, citation. Parts are the shared vocabulary of the wire layer (AxleMessage.content) and the render layer (Turn.parts) — the same concept at both. A subagent invocation is a tool-call part like any other.

Step — one pass of the execution loop inside a send(): one provider request, the assistant message it yields, and the tool batch that message requests, if any. A send ends with the first step whose message requests no tools, or when a budget (maxSteps, maxContextTokens) or a boundary control stops the loop. Steps are invisible in conversation state — each step's output is flattened into messages and into the agent turn's parts. Spans are named step-N; stream events are step:start / step:complete.

Turn — the render-layer unit only: one conversation entry in a transcript, a user turn or an agent turn. One send produces one of each; the agent turn accumulates parts from every step. Turns can also be opened and closed by compaction. Never a single assistant message; never a provider request.

Send — the Agent API verb: one scheduled conversation exchange (agent.send(...)), executed as a FIFO queue item. The host-facing unit of "the agent took its turn."

Transcript — the host-owned, reader-facing fold of TurnEvents into turns and annotations. The exported Transcript class is the shipped in-memory implementation; hosts persist its turns and pass them to the constructor on restore. The Agent holds no transcript — it emits events and keeps only the active messages. Lose the turns, lose the transcript.

Session — the continuable identity of a conversation (sessionId). AgentSession is its serialized form: the pure continuation { sessionId, messages } that agent.snapshot() captures and the Agent constructor restores. The transcript is not part of it.

Compaction — replacing the active conversation with a condensed rewrite, recorded on the transcript as a compaction turn part. Old messages cease to exist; lookback is served by the transcript.

Trace — observability only: the span tree produced by the tracer and consumed by span writers. Never the conversation transcript.

Annotation — host-owned render state attached to a turn or a part. Never model state, never sent to a provider.

Tool — an executable capability. Four sources: local ExecutableTools, provider-managed tools, MCP tools, and subagents. All share one ToolRegistry and one flat namespace.

Renamed terms

WasIsSince
turn (execution loop)step0.29.0
maxIterationsmaxSteps0.29.0
"max-iterations""max-steps"0.29.0
generateTurngenerateStep0.29.0
TurnAccumulatorTranscript0.30.0
agent.history.logagent.messages0.26.0 / 0.30.0

See Upgrading.