Build Multi-Agent Systems That Don't Wake You Up

WebAssembly isolation. Observable by design. Zero external dependencies. Build distributed, resilient multi-agent systems with < 50μs overhead.

Why Caxton Exists

Current Pain Points

  • Debugging distributed agent state is a nightmare
  • Agent crashes affect the entire system
  • No standard communication protocols
  • Network partitions break everything
  • Requires external databases for coordination
  • Observability is an afterthought

How Caxton Solves Them

  • Built-in distributed tracing for every message
  • WebAssembly isolation with zero blast radius
  • FIPA standard protocols out of the box
  • Graceful degradation during network partitions
  • No external dependencies - SWIM protocol built-in
  • OpenTelemetry from day one

Core Features

🛡️

WebAssembly Agent Isolation

Each agent runs in its own WebAssembly sandbox. When an agent crashes, the blast radius is zero. Like containers but 100x lighter.

45μs spawn time 2MB baseline memory
💬

FIPA Protocol Messaging

Industry-standard agent communication protocols at the application layer. Semantic messaging that works across cluster boundaries.

Contract Net Request/Reply Cross-Cluster
🔍

Observable by Design

Built-in OpenTelemetry from day one. Every message traced, every decision logged, every metric captured.

Distributed Tracing Structured Logs Real Metrics
🚀

Production Performance

Designed for real workloads, not demos. Microsecond latencies, predictable resource usage, graceful degradation.

12μs p50 latency 67μs p99 latency 10k agents/core
🛠️

Debugging Tools

Purpose-built tools for 3 AM debugging. Trace conversations, replay events, inspect agent state, all without restarts.

caxton trace caxton top caxton replay
🔌

Tool Integration

MCP (Model Context Protocol) bridges to external tools. Connect your agents to databases, APIs, and services.

Database Tools HTTP APIs File Systems
🌐

Distributed & Resilient

Built-in clustering with SWIM protocol. No external coordination service needed. Graceful handling of network partitions.

Auto-Discovery Partition Tolerance Self-Healing

The 3 AM Test

Every feature designed to be debugged in production

Real Debugging Scenario: Agent Conversation Timeout

1

Alert fires: "Agent conversation timeout"

$ caxton trace --conversation-id abc123 --last 5m
2

See exactly where conversation stalled

[03:23:45.123] agent="OrderProcessor" message="propose" status="sent"
[03:23:45.567] agent="InventoryChecker" message="propose" status="received"
[03:23:50.568] agent="InventoryChecker" error="tool timeout" tool="database_query"
3

Root cause: Agent had a slow tool call

$ caxton debug agent InventoryChecker --show-metrics
Memory: 45MB/512MB | Queue: 1,523 messages | Tool calls: 15/s (p99: 5.2s)
4

Fix: Adjust circuit breaker configuration

$ caxton config set --agent InventoryChecker \
  --circuit-breaker.timeout=10s \
  --circuit-breaker.threshold=3

Architecture

Built for Production

Caxton follows type-driven development with a functional core and imperative shell architecture. Every architectural decision prioritizes debuggability and operational excellence.

  • Agent Runtime - WebAssembly-based isolation and execution
  • Message Router - FIPA protocol for semantic agent messaging across clusters
  • Coordination Layer - SWIM protocol for membership, failure detection, and partition handling
  • Observability Layer - OpenTelemetry integration from the ground up
  • Tool Bridge - MCP protocol for external integrations and state management
  • No External Dependencies - Everything built-in: SQLite for local state, SWIM for coordination

Three Views of the System

External API
gRPC API
:50051
REST Gateway
:8080
Deployed Agents
Order
Processor
Inventory
Checker
Payment
Handler
FIPA: propose correlation: abc123
MCP Tool Bridge
Database
External API
File System

caxton-server (systemd service)

API Gateway
:8080 (REST)
:50051 (gRPC)
Actor System
tokio runtime
message routing
WASM Runtime
wasmtime
512MB/instance
Coordination Layer
Local State
SQLite (embedded)
Cluster Info
SWIM Protocol
Configuration
TOML files
Observability Exports
Prometheus
:9090
OTLP
:4317
Health
:8081
WebAssembly Isolation
Failed Agent 💥
Blast Radius: ZERO
Other Agent ✓
Other Agent ✓
Recovery Hierarchy
Root Supervisor
Agent Supervisor
Restart Policy: Max 3 restarts/min
Circuit Breakers
External API OPEN
Database CLOSED
Debug Points
Distributed Traces
Structured Logs
Metrics & Alerts
Health Endpoints

Getting Started

From zero to multi-agent system in 5 minutes

1

Install Caxton

# Install with observability stack included
curl -sSL https://caxton.dev/install.sh | sh
caxton init my-system --with-observability
2

Create Your First Agent

# Create an agent from template
caxton agent create order-processor \
  --template request-handler \
  --capability order-processing
3

Deploy and Monitor

# Start with full observability
docker-compose up  # Includes Jaeger, Prometheus
caxton deploy
caxton monitor --dashboard

Simple Multi-Agent Example

1

Define Your Agent Configuration

# agent-config.yaml
name: order-processor
version: 1.0.0
runtime: wasm
capabilities:
  - order-processing
  - inventory-checking
resources:
  memory: 128MB
  timeout: 30s
2

Deploy to Caxton Server

# Deploy your compiled WebAssembly agent
caxton agent deploy order-processor.wasm \
  --config agent-config.yaml \
  --replicas 3

# Verify deployment
caxton agent status order-processor
✓ Running (3/3 instances healthy)
3

Invoke Your Agent

// Using any language with the Caxton client
const client = new CaxtonClient('https://caxton.local');

const result = await client.invoke('order-processor', {
  order: {
    items: ['item-123', 'item-456'],
    address: { street: '123 Main St', ... }
  }
});

console.log(result.tracking_number);

Latest Release

Early Development v0.1.4 • 2025-08-11

Foundation Phase

Caxton is currently in early development. Core architecture is being implemented with a focus on getting the fundamentals right: WebAssembly isolation, FIPA messaging, and comprehensive observability.