Skip to content

Packet Format

The AXL packet is the atomic unit of agent communication. Every message, command, signal, and payment flows as a single pipe-delimited packet string.


Template

Every AXL packet follows this structure:

@rosetta_url|π:ID:SIG:GAS|T:timestamp|S:DOMAIN.TIER|fields...|FLAGS

Anatomy

A packet is composed of four sections: preamble, selector, body, and flags.

1. Preamble

The preamble contains three required segments:

Segment Format Purpose
Rosetta link @rosetta_url Points to the Rosetta spec the packet conforms to. Enables self-bootstrapping - any agent that receives this packet can fetch the spec and learn the grammar.
Payment proof π:AXL_ID:SIG:GAS Cryptographic proof-of-payment. See Payment Proof.
Timestamp T:unix_epoch Integer Unix timestamp. Provides total ordering.

2. Selector

S:DOMAIN.TIER

The selector declares the domain (one of 10 namespaces) and the tier (severity or priority level). See Domains for the full list.

Tiers are domain-dependent but generally follow: CRITICAL, HIGH, MEDIUM, LOW, INFO.

3. Body Fields

Body fields are pipe-delimited key:value pairs. The keys and their order are defined by the domain schema. Values carry type determinatives - sigil prefixes that declare the value's type:

target:db-primary|status:!DOWN|metric:latency|value:%312.5|threshold:#100|action:failover

See Type System for the full set of determinatives.

4. Flags

Zero or more trailing flags appear at the end of the packet. Flags are bare uppercase tokens - they carry no value, only presence.

LOG|STRM|ACK

See Flags for all six flags.


Examples

OPS - Critical Infrastructure Alert

@https://axlprotocol.org/rosetta|π:axl_7f3a:ed25519_sig_abc:0.001|T:1719422400
|S:OPS.CRITICAL|target:db-primary|status:!DOWN|metric:latency|value:%312.5
|threshold:#100|action:failover|LOG

Reads as: "Database db-primary is asserted DOWN. Latency is 312.5ms against a threshold of 100ms. Action: failover. Log this event."

COMM - Inter-Agent Request

@https://axlprotocol.org/rosetta|π:axl_9b2c:ed25519_sig_def:0.0005|T:1719422500
|S:COMM.HIGH|from:@agent-alpha|to:@agent-beta|intent:REQUEST
|detail:need security audit on repo frontend-v2|ACK

Reads as: "Agent alpha requests agent beta to perform a security audit on frontend-v2. Acknowledge receipt."

SIG - Trading Signal

@https://axlprotocol.org/rosetta|π:axl_4e1d:ed25519_sig_789:0.002|T:1719423000
|S:SIG.HIGH|asset:$ETH|price:$3450.00|direction:!LONG|pattern:ascending_triangle
|confidence:%0.87|SIG

Reads as: "ETH at $3,450.00, asserting LONG based on ascending triangle pattern with 87% confidence."

DEV - Code Review Result

@https://axlprotocol.org/rosetta|π:axl_c8f2:ed25519_sig_456:0.001|T:1719423100
|S:DEV.MEDIUM|repo:backend-api|branch:feat/auth-refactor|status:!PASS
|action:merge|author:@dev-agent-3|confidence:%0.92|R_risk:%0.15|LOG

Reads as: "Repo backend-api, branch feat/auth-refactor asserted PASS. Recommended action: merge. Risk score 15%."


Parsing Rules

  1. Split on | (pipe) to extract segments.
  2. First segment starting with @ is the Rosetta link.
  3. Segment starting with π: is the payment proof.
  4. Segment starting with T: is the timestamp.
  5. Segment starting with S: is the selector; split on . for domain and tier.
  6. Remaining key:value pairs form the body.
  7. Bare uppercase tokens at the end are flags.

Validity

A packet is valid if and only if:

  • It contains a Rosetta link, payment proof, timestamp, and selector.
  • The domain in the selector is one of the 10 recognized domains.
  • All required fields for that domain are present.
  • All typed values carry correct determinatives.