Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/Footer.astro
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</div>
<p>Contract-driven WASM runtime for device-independent business capabilities.</p>
<div style="margin-top:1rem;display:flex;gap:0.5rem">
<span class="badge">v0.8.1</span>
<span class="badge">v0.9.1</span>
<span class="badge">Apache 2.0</span>
</div>
<div class="footer-social">
Expand Down
4 changes: 2 additions & 2 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import BaseLayout from '@layouts/BaseLayout.astro';

const _body = "<!-- ── Hero ── -->\n<section class=\"hero\">\n <div class=\"hero-gradient\"></div>\n <div class=\"hero-content\">\n <div class=\"hero-eyebrow animate-fade-up\">\n <span class=\"hero-eyebrow-dot\"></span>\n v0.8.1 · Apache 2.0 · Open source\n </div>\n <h1 class=\"hero-title animate-fade-up animate-delay-1\">\n Define once.<br>Run anywhere.\n </h1>\n <p class=\"hero-sub animate-fade-up animate-delay-2\">\n Traverse is a contract-driven WASM runtime. Write business logic once with a machine-readable contract, run it natively or in the browser today, and let AI agents call it safely over MCP.\n </p>\n <div class=\"hero-actions animate-fade-up animate-delay-3\">\n <a href=\"/docs/quickstart.html\" class=\"btn btn-primary btn-lg\">Get started →</a>\n <a href=\"/docs.html\" class=\"btn btn-ghost btn-lg\">Read the docs</a>\n </div>\n </div>\n</section>\n\n<!-- ── How it works ── -->\n<section class=\"section\" style=\"background:var(--bg);\">\n <div class=\"container\">\n <div class=\"hiw-grid\">\n <!-- Code visual -->\n <div>\n <div class=\"code-block\">\n <div class=\"code-header\">\n <div class=\"code-dots\"><span></span><span></span><span></span></div>\n <span class=\"code-filename\">pricing.toml</span>\n </div>\n <div class=\"code-body\">\n <pre><span class=\"tok-section\">[capability]</span>\n<span class=\"tok-key\">name</span> = <span class=\"tok-str\">\"calculate-price\"</span>\n<span class=\"tok-key\">version</span> = <span class=\"tok-str\">\"1.2.0\"</span>\n<span class=\"tok-key\">wasm</span> = <span class=\"tok-str\">\"pricing.wasm\"</span>\n\n<span class=\"tok-section\">[governing_spec]</span>\n<span class=\"tok-key\">title</span> = <span class=\"tok-str\">\"Pricing Policy v3\"</span>\n<span class=\"tok-key\">source</span> = <span class=\"tok-str\">\"docs/pricing-policy.md\"</span>\n\n<span class=\"tok-section\">[input]</span>\n<span class=\"tok-key\">type</span> = <span class=\"tok-str\">\"object\"</span>\n<span class=\"tok-key\">properties</span>.sku = <span class=\"tok-str\">\"string\"</span>\n<span class=\"tok-key\">properties</span>.quantity = <span class=\"tok-str\">\"integer\"</span>\n<span class=\"tok-key\">properties</span>.region = <span class=\"tok-str\">\"string\"</span>\n<span class=\"tok-key\">required</span> = <span class=\"tok-str\">[\"sku\", \"quantity\"]</span>\n\n<span class=\"tok-section\">[output]</span>\n<span class=\"tok-key\">type</span> = <span class=\"tok-str\">\"object\"</span>\n<span class=\"tok-key\">properties</span>.total = <span class=\"tok-str\">\"number\"</span>\n<span class=\"tok-key\">properties</span>.currency = <span class=\"tok-str\">\"string\"</span>\n<span class=\"tok-key\">required</span> = <span class=\"tok-str\">[\"total\", \"currency\"]</span></pre>\n </div>\n </div>\n <div style=\"margin-top:1rem\">\n <div class=\"terminal\">\n <div class=\"terminal-header\">\n <div class=\"code-dots\"><span></span><span></span><span></span></div>\n <span class=\"terminal-title\">terminal</span>\n </div>\n <div class=\"terminal-body\">\n <div class=\"terminal-line\"><span class=\"terminal-prompt\">$</span><span class=\"terminal-cmd\">traverse run pricing --input '{\"sku\":\"PRO\",\"quantity\":5}'</span></div>\n <div class=\"terminal-line\" style=\"margin-top:0.5rem\"><span class=\"terminal-out success\">✓ Contract validated</span></div>\n <div class=\"terminal-line\"><span class=\"terminal-out success\">✓ WASM executed (2.1ms)</span></div>\n <div class=\"terminal-line\"><span class=\"terminal-out accent\">→ {\"total\": 249.95, \"currency\": \"USD\"}</span></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Steps -->\n <div>\n <div class=\"section-label\">How Traverse works</div>\n <h2 style=\"font-family:var(--font-display);font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:600;letter-spacing:-0.01em;line-height:1.15;margin-bottom:1rem;\">\n Write a contract.<br>Ship a capability.\n </h2>\n <p style=\"font-size:1rem;color:var(--fg-muted);line-height:1.7;margin-bottom:3rem;\">\n Three steps from idea to a portable, contract-governed piece of business logic running in any environment.\n </p>\n <div class=\"hiw-steps\">\n <div class=\"hiw-step\">\n <div class=\"hiw-step-num\">01</div>\n <div class=\"hiw-step-body\">\n <h3>Define the contract</h3>\n <p>Write a TOML file with your capability name, the WASM binary path, and JSON Schema definitions for inputs and outputs. Link it to the governing spec document your team actually works from.</p>\n </div>\n </div>\n <div class=\"hiw-step\">\n <div class=\"hiw-step-num\">02</div>\n <div class=\"hiw-step-body\">\n <h3>Compile to WASM</h3>\n <p>Implement the logic in Rust and compile to <code style=\"font-family:var(--font-mono);font-size:0.85em;background:var(--bg-input);border-radius:4px;padding:0.1em 0.35em;color:var(--accent)\">wasm32-wasi</code>. The same binary runs on every placement target without recompilation.</p>\n </div>\n </div>\n <div class=\"hiw-step\">\n <div class=\"hiw-step-num\">03</div>\n <div class=\"hiw-step-body\">\n <h3>Register and run</h3>\n <p>Add the capability to the registry with <code style=\"font-family:var(--font-mono);font-size:0.85em;background:var(--bg-input);border-radius:4px;padding:0.1em 0.35em;color:var(--accent)\">traverse add</code>. Call it from the CLI, from an AI agent via MCP, or from your app directly. Every call is validated and traced.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</section>\n\n<!-- ── Features ── -->\n<section class=\"section\" style=\"background:var(--bg-elevated);border-top:1px solid var(--border);border-bottom:1px solid var(--border);\">\n <div class=\"container\">\n <div class=\"section-header\">\n <div class=\"section-label\">Features</div>\n <h2>Everything business logic needs</h2>\n <p>From contract validation to AI agent discovery, Traverse handles the entire lifecycle.</p>\n </div>\n <div class=\"feature-grid\">\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"/></svg>\n </div>\n <h3>Contract-first validation</h3>\n <p>Every capability call validates inputs against a JSON Schema precondition before execution. Postconditions validate the output. Bad data never reaches your logic.</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"/><path d=\"M8 21h8M12 17v4\"/></svg>\n </div>\n <h3>WASM sandbox isolation</h3>\n <p>Each capability runs in its own Wasmtime WASM instance with linear memory isolation. A capability cannot access host resources it was not explicitly granted.</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M12 2v3M12 19v3M4.22 4.22l2.12 2.12M17.66 17.66l2.12 2.12M2 12h3M19 12h3M4.22 19.78l2.12-2.12M17.66 6.34l2.12-2.12\"/></svg>\n </div>\n <h3>AI agent integration</h3>\n <p>Expose your entire capability registry to AI agents via the MCP stdio server. Claude, GPT-4, and any MCP-compatible agent can discover and call capabilities safely.</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\"/></svg>\n </div>\n <h3>Cross-platform portability</h3>\n <p>One WASM binary runs on the native target today, and directly in the browser via the Web embedder SDK. Edge and cloud placement are on the roadmap, not yet shipped.</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"/></svg>\n </div>\n <h3>Trace artifacts</h3>\n <p>Every execution produces a trace artifact: the input, the output, the contract version, and a timestamp. Audit any past run without re-executing anything.</p>\n </div>\n <div class=\"feature-card\">\n <div class=\"feature-card-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M4 6h16M4 10h16M4 14h16M4 18h16\"/></svg>\n </div>\n <h3>Governing specs</h3>\n <p>Every contract links to the governing spec document it implements. When the policy changes, you update the spec and bump the contract version. The paper trail is built in.</p>\n </div>\n </div>\n </div>\n</section>\n\n<!-- ── Stats ── -->\n<section class=\"section\" style=\"background:var(--bg);\">\n <div class=\"container\">\n <div class=\"section-header\">\n <div class=\"section-label\">By the numbers</div>\n <h2>One runtime. Any environment.</h2>\n </div>\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-value\">1</div>\n <div class=\"stat-label\">WASM binary runs identically on every placement target that has actually shipped — see the honest status on <a href=\"/platforms.html\" style=\"text-decoration:underline\">Platforms</a>.</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-value\">0</div>\n <div class=\"stat-label\">Logic rewrites when moving between environments. Same contract, same binary, same behavior everywhere.</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-value\">2ms</div>\n <div class=\"stat-label\">Typical contract execution time on the local target. WASM startup is fast. Contract validation adds negligible overhead.</div>\n </div>\n </div>\n </div>\n</section>\n\n<!-- ── Use cases ── -->\n<section class=\"section\" style=\"background:var(--bg-elevated);border-top:1px solid var(--border);border-bottom:1px solid var(--border);\">\n <div class=\"container\">\n <div class=\"section-header\">\n <div class=\"section-label\">Use cases</div>\n <h2>Built for real business logic</h2>\n <p>Pricing rules, eligibility checks, compliance logic — any deterministic computation that needs to run reliably everywhere.</p>\n </div>\n <div class=\"usecase-grid\">\n <div class=\"usecase-card\">\n <div class=\"feature-card-icon\" style=\"margin-bottom:1rem;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);border:1px solid color-mix(in srgb, var(--accent) 20%, transparent);\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--accent)\" stroke-width=\"1.5\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z\"/></svg>\n </div>\n <h3>Pricing and discount logic</h3>\n <p>Encode complex pricing rules as a contract with a link to your pricing policy document. The same capability runs in your frontend, your backend, and inside AI agent pipelines with identical results.</p>\n <a href=\"/questions/can-i-use-traverse-for-pricing-logic.html\">Learn more →</a>\n </div>\n <div class=\"usecase-card\">\n <div class=\"feature-card-icon\" style=\"margin-bottom:1rem;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);border:1px solid color-mix(in srgb, var(--accent) 20%, transparent);\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--accent)\" stroke-width=\"1.5\"><path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></svg>\n </div>\n <h3>Eligibility and access rules</h3>\n <p>Run eligibility logic as a sandboxed WASM capability so an AI agent can check a user's eligibility for a product, service, or feature without risk of hallucinating the answer.</p>\n <a href=\"/questions/can-i-use-traverse-for-eligibility-checking.html\">Learn more →</a>\n </div>\n <div class=\"usecase-card\">\n <div class=\"feature-card-icon\" style=\"margin-bottom:1rem;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);border:1px solid color-mix(in srgb, var(--accent) 20%, transparent);\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--accent)\" stroke-width=\"1.5\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/><polyline points=\"14 2 14 8 20 8\"/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"/><polyline points=\"10 9 9 9 8 9\"/></svg>\n </div>\n <h3>Compliance and audit logic</h3>\n <p>Capture regulatory and compliance rules in versioned contracts with governing spec links. Every execution is traced. Auditors can replay any historical decision from the trace artifact.</p>\n <a href=\"/questions/how-does-traverse-help-with-compliance.html\">Learn more →</a>\n </div>\n <div class=\"usecase-card\">\n <div class=\"feature-card-icon\" style=\"margin-bottom:1rem;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--accent-dim);border:1px solid color-mix(in srgb, var(--accent) 20%, transparent);\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"var(--accent)\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M12 2v3M12 19v3M4.22 4.22l2.12 2.12M17.66 17.66l2.12 2.12M2 12h3M19 12h3M4.22 19.78l2.12-2.12M17.66 6.34l2.12-2.12\"/></svg>\n </div>\n <h3>AI agent guardrails</h3>\n <p>Give your AI agents a set of contract-governed capabilities to call. The agent cannot exceed the contract's boundaries. Postcondition checks block invalid outputs before they propagate.</p>\n <a href=\"/questions/how-does-traverse-prevent-ai-agent-errors.html\">Learn more →</a>\n </div>\n </div>\n </div>\n</section>\n\n<!-- ── CTA ── -->\n<div class=\"cta-gradient\">\n <div class=\"cta-gradient-bg\"></div>\n <div class=\"cta-gradient-content\">\n <h2>Start building with Traverse</h2>\n <p>Install the CLI, write your first contract, and run it in under five minutes.</p>\n <div class=\"cta-actions\">\n <a href=\"/docs/quickstart.html\" class=\"btn btn-primary btn-lg\">Get started →</a>\n <a href=\"https://github.com/traverse-framework/traverse\" target=\"_blank\" rel=\"noopener\" class=\"btn btn-ghost btn-lg\">View on GitHub</a>\n </div>\n </div>\n</div>\n\n<!-- ── Footer ── -->";
const _jsonLd = "{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"Traverse\",\"description\":\"A contract-driven Rust and WASM runtime for device-independent business capabilities. Capabilities run on any client by default; the client can heuristically delegate a subset of execution to the server when it decides to.\",\"url\":\"https://traverse-framework.com\",\"author\":{\"@type\":\"Person\",\"name\":\"Enrico Piovesan\"},\"license\":\"https://www.apache.org/licenses/LICENSE-2.0\",\"applicationCategory\":\"DeveloperApplication\",\"softwareVersion\":\"0.7.0\",\"codeRepository\":\"https://github.com/traverse-framework/traverse\"}";
const _jsonLd = "{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"Traverse\",\"description\":\"A contract-driven Rust and WASM runtime for device-independent business capabilities. Capabilities run on any client by default; the client can heuristically delegate a subset of execution to the server when it decides to.\",\"url\":\"https://traverse-framework.com\",\"author\":{\"@type\":\"Person\",\"name\":\"Enrico Piovesan\"},\"license\":\"https://www.apache.org/licenses/LICENSE-2.0\",\"applicationCategory\":\"DeveloperApplication\",\"softwareVersion\":\"0.9.1\",\"codeRepository\":\"https://github.com/traverse-framework/traverse\"}";
---
<BaseLayout
title={"Traverse: Contract-Driven WASM Runtime for Portable Business Capabilities"}
Expand All @@ -12,5 +12,5 @@ const _jsonLd = "{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplic
class="home"
>
<link rel="stylesheet" href="/assets/css/home.css" slot="head" />
<Fragment set:html={_body} />
<Fragment set:html={_body.replace("v0.8.1 · Apache 2.0 · Open source", "v0.9.1 · Apache 2.0 · Open source")} />
</BaseLayout>
Loading