Comparisons

How is Traverse different from WASI?

WASI is a specification — it defines how WASM modules interact with the host operating system through a standard set of system call interfaces. Traverse is a runtime that uses WASI underneath. They operate at different levels and are not alternatives to each other.

What WASI is

WASI (WebAssembly System Interface) standardizes how a WASM module can call host functions for things like file I/O, networking, environment variables, and clocks. Without WASI, a WASM module runs in a pure sandbox with no way to reach the outside world. WASI defines the interface for breaking out of that sandbox in a controlled, portable way.

What Traverse adds on top

Traverse compiles capabilities to wasm32-wasi targets — WASM binaries that use the WASI interface. Then it adds its own layer on top:

  • A contract system that defines what a capability accepts and returns
  • Precondition and postcondition enforcement before and after execution
  • A registry for storing, versioning, and discovering capabilities
  • A state machine execution model that tracks every phase of a call
  • A trace artifact produced on every execution
  • An MCP server that exposes capabilities to AI agents

The analogy

WASI is to Traverse roughly as POSIX is to a web framework. POSIX defines how programs call the OS. A web framework builds on top of those OS calls and adds routing, middleware, and request handling. You use the web framework — it uses POSIX under the hood. You use Traverse — it uses WASI under the hood.

Why this matters for portability

Traverse capabilities compile to the WASI target, which means the same binary runs on any WASI-compatible runtime: Wasmtime, WasmEdge, browser via polyfill, edge runtimes. WASI provides the portability foundation. Traverse provides the contract governance layer on top of it.