Skip to main content

Core Concepts & Protocol

Ante models agent interactions as a hierarchy of concepts, connected by a typed message-passing protocol.

Concept hierarchy

Project
└── Session
└── Task
└── Turn
└── Step
ConceptDescription
ProjectA git repo or root directory. Can have multiple sessions.
SessionOne episode of interaction between user and Ante. Manages dialog state, token usage, and context compaction.
TaskOne piece of work the user wants to accomplish. Can span multiple turns.
TurnOne back-and-forth with the agent. Starts with user input, ends with agent message or approval request.
StepOne interaction from agent with LLM. Handles tool calls and other mechanics.
note

Generally, if there is no approval interruption, one task consists of one turn.

Protocol: Ops and Events

Ante uses a message-passing protocol between the client (TUI or headless runner) and the daemon. Operations (Op) flow from client to daemon, and events (Evt) flow from daemon to client.

Message IDs

Every message has a custom Id type with a 4-byte prefix for tracing:

  • op_ — operations
  • evt_ — events
  • ses_ — sessions
  • step_ — steps

Operations reference

Operations (Op) are sent from the client to the daemon, wrapped in an OpMsg envelope with a unique Id.

OpPayloadDescription
StartSessionSessionConfigInitialize a new session with model, provider, policy, and options
UpdateSessionSessionUpdateUpdate the active session (e.g. switch models) without restarting
UserInputStringSubmit a user prompt
SteerStringAdditional user guidance for the active turn
ApprovalResponseturn_id, responses: [(tool_id, ReviewDecision)]Respond to tool approval requests
SlashCommandname, argsInvoke a skill by name
OfflineModeOfflineModeOpOffline mode operations (init, install, load model, etc.)
InterruptAbort the current running operation
ShutdownGraceful shutdown

Events reference

Events (Evt) are sent from the daemon to the client, wrapped in an EventMsg envelope with a timestamp, unique Id, and optional parent ID linking back to the originating operation.

EvtPayloadDescription
SessionStartSessionInitializedSession initialized with model, provider, session ID, working directory
SessionUpdatedSessionInitializedSession updated in place (e.g. model changed)
SessionEndSession terminated
TurnStartturn_idA new turn has begun
TurnPauseturn_id, reasonTurn paused (e.g. waiting for tool approval)
TurnEndturn_id, statusTurn completed, interrupted, or errored
AgentMessageStringComplete text response from agent
ThinkingStringComplete chain-of-thought block
MessageDeltaStringStreaming message content chunk
ThinkingDeltaStringStreaming thinking content chunk
ToolStartToolUseTool execution began
ToolUpdatetool_use_id, seq, messageTool execution progress update
ToolEndtool_use_id, status, result_json, is_errorTool execution completed
UsageUpdateusageToken usage statistics
CompactStartDialog compaction started
CompactEndDialog compaction completed
ExtensionRefreshedskills, subagentsSkills and subagents refreshed
OfflineModeOfflineModeEvtOffline mode events (init status, progress, ready, etc.)
InfoStringInformational message
ErrorStringError message
GoodbyeFinal message before disconnect
note

For the full protocol reference with wire format examples and all type definitions, see the Protocol Reference page.

Flow examples

Basic UI flow

A single user input where one turn pauses for approval (TurnPause) and then resumes:

Interruption flow

Interrupting a running turn and continuing with new input:

Context management

Ante automatically manages context windows:

  • Token budget — Each turn tracks token usage against the model's context limit
  • Auto-compaction — When the dialog approaches the context limit, Ante uses the LLM to summarize the conversation history, preserving important context while freeing tokens
  • Tool result trimming — Large tool outputs are automatically trimmed to fit within budget

Permissions

Ante has a permission system that gates tool execution. Rules are evaluated in first-match-wins order, with three possible decisions: Allow, Ask, or Deny. See the Permissions page for full details.