Skip to main content
Install @runloop/remote-agents-sdk to follow along. See the SDK repository and full SDK documentation.

Overview

Working with agents means sending messages and managing sessions through an event-oriented model. Devboxes provide the security and isolation agents need, but there is no built-in infrastructure for managing the lifecycle of the Devbox and the agent running inside it. Axons solve this. They give agents a persistent event stream that lets them suspend when idle, wake on demand, recover state, and hand off between agents — without you building the plumbing. Under the hood, an Axon is an append-only event stream that assigns each event a monotonic sequence number and exposes the stream to publishers, subscribers, and brokers.

Broker

Bridges Axons to agents running in Devboxes, forwarding events one turn at a time.

Shared Journal

Coordinates work across users, agents, and external systems via an ordered event stream.

SQL Database

Embedded SQLite for structured state such as configuration, task queues, or key-value pairs.
For a step-by-step Broker + ACP walkthrough with runnable TypeScript, see the Axon + ACP tutorial. Protocol details and mount configuration are in ACP protocol adapter.

Quick Start

Step 1: Create an Axon

The name parameter is optional. If omitted, an unnamed axon is created.

Step 2: Publish Events

Each publish call returns a PublishResultView with the assigned sequence number and timestamp_ms. Sequence numbers are monotonically increasing, so you can use them to track ordering.

Step 3: Subscribe to Events

The SSE stream delivers AxonEventView objects in sequence order. The stream stays open until you break out of the loop or the connection is closed.

How It Works

  1. Create an Axon — each Axon is a named event stream scoped to your account.
  2. Publish input events — users, orchestrators, webhooks, and other systems append structured events to the stream.
  3. Bridge through Broker — Broker reads incoming events and forwards them to the agent one turn at a time.
  4. Record agent output — broker-emitted events such as turn.message_chunk and turn.completed are appended back to the same Axon.
  5. Subscribe via SSE — clients observe the stream in order using sequence numbers.

Event Structure

Each event carries:
  • A source identifying where it came from (e.g. github, slack, my-agent)
  • An event type describing what happened (e.g. push, task_complete, review_requested)
  • An origin classifying who produced it (EXTERNAL_EVENT, AGENT_EVENT, USER_EVENT)
  • A payload containing the event data as a JSON string
  • A monotonic sequence number for ordering
Each event delivered via SSE includes the full event metadata stored in the Axon stream:

Origins

Origins classify who produced the event. When publishing, you can use three origin types: When subscribing, you may also receive:

Use Cases

User-To-Agent Turns

Publish user input into an Axon, then subscribe for broker-published turn output from the attached agent. The Broker handles forwarding messages to the agent and streaming responses back through the Axon. For a complete walkthrough with code, see Send a simple message to an ACP agent.

Webhook and Automation Fan-In

Use a single Axon as the shared journal for events coming from external systems, then let downstream subscribers and brokers react in order.

Reconnecting to an Existing Axon

If you already have an axon ID (e.g. stored from a previous session), you can reconnect without creating a new one.

Managing Axons

List active Axons or retrieve an existing one by ID:

Limitations

  • Axon events are immutable. Once an event is published, it cannot be modified or deleted.
  • Axons are currently limited to 10GB of event data.
  • Remote Agents SDK — TypeScript client for interacting with remote agents over Axon
  • SQL Database — Embedded SQLite for structured state within an Axon
  • Broker — Learn how Runloop bridges Axons to agents running in Devboxes
  • Devbox Overview — Learn about Runloop’s isolated development environments
  • Tunnels — Expose services running in a Devbox
  • Agent Gateways — Securely proxy API requests