caxton 0.1.2

A modern, efficient typesetting and document preparation system
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Caxton - Multi-Agent Orchestration Platform</title>
    <link rel="stylesheet" href="css/style.css">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
</head>
<body>
    <nav class="navbar">
        <div class="container">
            <div class="nav-content">
                <div class="nav-brand">
                    <div class="logo-container">
                        <img src="img/logo.svg" alt="Caxton Logo" class="logo">
                    </div>
                    <span class="brand-text">Caxton</span>
                </div>
                <div class="nav-links">
                    <a href="#features" class="nav-link">Features</a>
                    <a href="#architecture" class="nav-link">Architecture</a>
                    <a href="#getting-started" class="nav-link">Get Started</a>
                    <a href="caxton/" class="nav-link">API Docs</a>
                    <a href="https://github.com/jwilger/caxton" class="nav-link github-link">
                        <svg class="github-icon" viewBox="0 0 24 24" fill="currentColor">
                            <path d="M12 2C6.477 2 2 6.477 2 12c0 4.42 2.865 8.17 6.84 9.49.5.09.68-.22.68-.48 0-.24-.01-.87-.01-1.71-2.78.6-3.37-1.34-3.37-1.34-.46-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.83.09-.65.35-1.09.63-1.34-2.22-.25-4.56-1.11-4.56-4.93 0-1.09.39-1.98 1.03-2.68-.1-.25-.45-1.27.1-2.64 0 0 .84-.27 2.75 1.02.8-.22 1.65-.33 2.5-.33.85 0 1.7.11 2.5.33 1.91-1.29 2.75-1.02 2.75-1.02.55 1.37.2 2.39.1 2.64.64.7 1.03 1.59 1.03 2.68 0 3.84-2.34 4.68-4.57 4.93.36.31.68.92.68 1.85 0 1.34-.01 2.42-.01 2.75 0 .27.18.58.69.48C19.14 20.16 22 16.42 22 12c0-5.523-4.477-10-10-10z"/>
                        </svg>
                        GitHub
                    </a>
                </div>
            </div>
        </div>
    </nav>

    <section class="hero">
        <div class="container">
            <div class="hero-content">
                <div class="hero-text">
                    <h1 class="hero-title">
                        <span class="title-line">Build Multi-Agent Systems</span>
                        <span class="title-line gradient-text">That Don't Wake You Up</span>
                    </h1>
                    <p class="hero-subtitle">
                        WebAssembly isolation. Observable by design. Production-ready from day one.
                        Build resilient multi-agent systems with <span class="highlight">< 50μs overhead</span>.
                    </p>
                    <div class="hero-actions">
                        <a href="#getting-started" class="btn btn-primary">Get Started</a>
                        <a href="#architecture" class="btn btn-secondary">View Architecture</a>
                    </div>
                </div>
                <div class="hero-visual">
                    <div class="floating-card">
                        <img src="img/logo.svg" alt="Caxton Logo" class="hero-logo">
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section id="problem-solution" class="problem-solution">
        <div class="container">
            <h2 class="section-title">Why Caxton Exists</h2>
            <div class="problem-grid">
                <div class="problem-card">
                    <h3 class="problem-title">Current Pain Points</h3>
                    <ul class="problem-list">
                        <li>Debugging distributed agent state is a nightmare</li>
                        <li>Agent crashes affect the entire system</li>
                        <li>No standard communication protocols</li>
                        <li>Observability is an afterthought</li>
                    </ul>
                </div>
                <div class="solution-card">
                    <h3 class="solution-title">How Caxton Solves Them</h3>
                    <ul class="solution-list">
                        <li>Built-in distributed tracing for every message</li>
                        <li>WebAssembly isolation with zero blast radius</li>
                        <li>FIPA standard protocols out of the box</li>
                        <li>OpenTelemetry from day one</li>
                    </ul>
                </div>
            </div>
        </div>
    </section>

    <section id="features" class="features">
        <div class="container">
            <h2 class="section-title">Core Features</h2>
            <div class="features-grid">
                <div class="feature-card">
                    <div class="feature-icon">🛡️</div>
                    <h3>WebAssembly Agent Isolation</h3>
                    <p>Each agent runs in its own WebAssembly sandbox. When an agent crashes, the blast radius is zero. Like containers but 100x lighter.</p>
                    <div class="feature-metrics">
                        <span class="metric">45μs spawn time</span>
                        <span class="metric">2MB baseline memory</span>
                    </div>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">💬</div>
                    <h3>FIPA Protocol Messaging</h3>
                    <p>Industry-standard agent communication protocols. Not just another message bus - semantic protocols with state machines.</p>
                    <div class="feature-protocols">
                        <span class="protocol">Contract Net</span>
                        <span class="protocol">Request/Reply</span>
                        <span class="protocol">Subscribe/Notify</span>
                    </div>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🔍</div>
                    <h3>Observable by Design</h3>
                    <p>Built-in OpenTelemetry from day one. Every message traced, every decision logged, every metric captured.</p>
                    <div class="feature-observability">
                        <span class="observable">Distributed Tracing</span>
                        <span class="observable">Structured Logs</span>
                        <span class="observable">Real Metrics</span>
                    </div>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🚀</div>
                    <h3>Production Performance</h3>
                    <p>Designed for real workloads, not demos. Microsecond latencies, predictable resource usage, graceful degradation.</p>
                    <div class="feature-performance">
                        <span class="perf">12μs p50 latency</span>
                        <span class="perf">67μs p99 latency</span>
                        <span class="perf">10k agents/core</span>
                    </div>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🛠️</div>
                    <h3>Debugging Tools</h3>
                    <p>Purpose-built tools for 3 AM debugging. Trace conversations, replay events, inspect agent state, all without restarts.</p>
                    <div class="feature-tools">
                        <code>caxton trace</code>
                        <code>caxton top</code>
                        <code>caxton replay</code>
                    </div>
                </div>
                <div class="feature-card">
                    <div class="feature-icon">🔌</div>
                    <h3>Tool Integration</h3>
                    <p>MCP (Model Context Protocol) bridges to external tools. Connect your agents to databases, APIs, and services.</p>
                    <div class="feature-integrations">
                        <span class="integration">Database Tools</span>
                        <span class="integration">HTTP APIs</span>
                        <span class="integration">File Systems</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section id="three-am-test" class="three-am-test">
        <div class="container">
            <h2 class="section-title">The 3 AM Test</h2>
            <p class="section-subtitle">Every feature designed to be debugged in production</p>
            <div class="debugging-scenario">
                <h3>Real Debugging Scenario: Agent Conversation Timeout</h3>
                <div class="debug-steps">
                    <div class="debug-step">
                        <div class="step-number">1</div>
                        <div class="step-content">
                            <h4>Alert fires: "Agent conversation timeout"</h4>
                            <pre><code>$ caxton trace --conversation-id abc123 --last 5m</code></pre>
                        </div>
                    </div>
                    <div class="debug-step">
                        <div class="step-number">2</div>
                        <div class="step-content">
                            <h4>See exactly where conversation stalled</h4>
                            <pre><code>[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"</code></pre>
                        </div>
                    </div>
                    <div class="debug-step">
                        <div class="step-number">3</div>
                        <div class="step-content">
                            <h4>Root cause: Agent had a slow tool call</h4>
                            <pre><code>$ caxton debug agent InventoryChecker --show-metrics
Memory: 45MB/512MB | Queue: 1,523 messages | Tool calls: 15/s (p99: 5.2s)</code></pre>
                        </div>
                    </div>
                    <div class="debug-step">
                        <div class="step-number">4</div>
                        <div class="step-content">
                            <h4>Fix: Adjust circuit breaker configuration</h4>
                            <pre><code>$ caxton config set --agent InventoryChecker \
  --circuit-breaker.timeout=10s \
  --circuit-breaker.threshold=3</code></pre>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section id="architecture" class="architecture">
        <div class="container">
            <h2 class="section-title">Architecture</h2>
            <div class="architecture-content">
                <div class="architecture-text">
                    <h3>Built for Production</h3>
                    <p>Caxton follows type-driven development with a functional core and imperative shell architecture. Every architectural decision prioritizes debuggability and operational excellence.</p>
                    <ul>
                        <li><strong>Agent Runtime</strong> - WebAssembly-based isolation and execution</li>
                        <li><strong>Message Router</strong> - FIPA protocol implementation with full tracing</li>
                        <li><strong>Observability Layer</strong> - OpenTelemetry integration from the ground up</li>
                        <li><strong>Tool Bridge</strong> - MCP protocol for external integrations</li>
                    </ul>
                    <div class="architecture-links">
                        <a href="adr/" class="link-card">
                            <span class="link-icon">📚</span>
                            <span>View Architecture Decision Records</span>
                        </a>
                    </div>
                </div>
                <div class="architecture-visual">
                    <div class="architecture-views">
                        <h4>Three Views of the System</h4>
                        <div class="view-tabs">
                            <button class="view-tab active" data-view="logical">Logical View</button>
                            <button class="view-tab" data-view="physical">Physical View</button>
                            <button class="view-tab" data-view="failure">Failure View</button>
                        </div>
                        <div class="view-content">
                            <div class="view-pane active" id="logical-view">
                                <p>How developers think about it: Agents as circles, messages as arrows, clean conceptual model.</p>
                            </div>
                            <div class="view-pane" id="physical-view">
                                <p>How it actually runs: WebAssembly instances, message queues, event store, real boxes and wires.</p>
                            </div>
                            <div class="view-pane" id="failure-view">
                                <p>What happens when things break: Isolation boundaries, supervisor hierarchy, circuit breakers.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <section id="getting-started" class="getting-started">
        <div class="container">
            <h2 class="section-title">Getting Started</h2>
            <p class="section-subtitle">From zero to multi-agent system in 5 minutes</p>
            <div class="steps-grid">
                <div class="step-card">
                    <div class="step-number">1</div>
                    <h3>Install Caxton</h3>
                    <div class="code-snippet">
                        <pre><code># Install with observability stack included
curl -sSL https://caxton.dev/install.sh | sh
caxton init my-system --with-observability</code></pre>
                    </div>
                </div>
                <div class="step-card">
                    <div class="step-number">2</div>
                    <h3>Create Your First Agent</h3>
                    <div class="code-snippet">
                        <pre><code># Create an agent from template
caxton agent create order-processor \
  --template request-handler \
  --capability order-processing</code></pre>
                    </div>
                </div>
                <div class="step-card">
                    <div class="step-number">3</div>
                    <h3>Deploy and Monitor</h3>
                    <div class="code-snippet">
                        <pre><code># Start with full observability
docker-compose up  # Includes Jaeger, Prometheus
caxton deploy
caxton monitor --dashboard</code></pre>
                    </div>
                </div>
            </div>
            <div class="quick-example">
                <h3>Simple Multi-Agent Example</h3>
                <pre><code class="language-rust">use caxton::prelude::*;

#[agent]
struct OrderProcessor;

impl Agent for OrderProcessor {
    async fn handle(&self, msg: Message) -> Result<Response> {
        match msg {
            Message::ProcessOrder(order) => {
                // Automatic distributed tracing
                let inventory = self.request("inventory-checker",
                    CheckInventory { items: order.items }).await?;

                // Type-safe contract negotiation
                let shipping = self.negotiate_contract(
                    ShippingRequest { items: order.items,
                                     address: order.address }).await?;

                Ok(Response::OrderConfirmed {
                    tracking: shipping.tracking_number
                })
            }
        }
    }
}</code></pre>
            </div>
        </div>
    </section>

    <section id="resources" class="resources">
        <div class="container">
            <h2 class="section-title">Resources</h2>
            <div class="resources-grid">
                <a href="caxton/" class="resource-card">
                    <div class="resource-icon">📖</div>
                    <h3>API Documentation</h3>
                    <p>Full rustdoc API reference and guides</p>
                </a>
                <a href="adr/" class="resource-card">
                    <div class="resource-icon">🏛️</div>
                    <h3>Architecture Decisions</h3>
                    <p>Understand the why behind every architectural choice</p>
                </a>
                <a href="#releases" class="resource-card">
                    <div class="resource-icon">📦</div>
                    <h3>Releases</h3>
                    <p>Latest updates, changelog, and roadmap</p>
                </a>
                <a href="https://github.com/jwilger/caxton/discussions" class="resource-card">
                    <div class="resource-icon">💬</div>
                    <h3>Community</h3>
                    <p>Join discussions, get help, contribute</p>
                </a>
            </div>
        </div>
    </section>

    <section id="releases" class="releases">
        <div class="container">
            <h2 class="section-title">Latest Release</h2>
            <div class="release-card">
                <div class="release-status">
                    <span class="status-badge">Early Development</span>
                    <span class="release-date">Project Status</span>
                </div>
                <h3 class="release-title">Foundation Phase</h3>
                <p class="release-description">
                    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.
                </p>
                <div class="release-actions">
                    <a href="https://github.com/jwilger/caxton/releases" class="btn btn-outline">
                        View All Releases
                    </a>
                    <a href="https://github.com/jwilger/caxton/blob/main/ROADMAP.md" class="btn btn-outline">
                        View Roadmap
                    </a>
                </div>
            </div>
        </div>
    </section>

    <footer class="footer">
        <div class="container">
            <div class="footer-content">
                <div class="footer-left">
                    <img src="img/logo.svg" alt="Caxton Logo" class="footer-logo">
                    <p>MIT License</p>
                </div>
                <div class="footer-links">
                    <a href="https://github.com/jwilger/caxton">GitHub</a>
                    <a href="adr/">Architecture</a>
                    <a href="https://github.com/jwilger/caxton/blob/main/CONTRIBUTING.md">Contributing</a>
                    <a href="https://github.com/jwilger/caxton/security">Security</a>
                </div>
            </div>
        </div>
    </footer>

    <script src="js/caxton.js"></script>
</body>
</html>