Technical Edge Cases

Can Traverse run without WASM?

No. WASM is not optional in Traverse. The entire capability model is built on it. Capabilities must be compiled to WASM binaries, and the runtime uses WASM execution for isolation and portability. There is no way to register a native code capability in the current design.

Why WASM is non-negotiable

Traverse's two core properties — sandbox isolation and cross-runtime portability — both depend on WASM. WASM provides memory isolation so a capability cannot access host resources it was not granted. WASM provides a portable binary format so the same compiled output runs on Wasmtime, in a browser, or on an edge runtime without recompilation.

If you removed WASM, you would have a contract validation framework around arbitrary native code. You would lose the sandbox, lose the portability, and get different behavior across runtimes. That undermines the whole point.

What this means for you

You need to compile your implementation to wasm32-wasi. Rust is the primary language because it has first-class wasm32-wasi support and compiles cleanly to WASM. Other languages that compile to WASM also work in principle.

If your capability needs to call external services (databases, APIs), you need to design that interaction carefully. The WASM sandbox restricts outbound calls. You can pass external data in through the contract input rather than fetching it inside the capability, which is often the right design anyway.

Future language support

The roadmap includes SDKs for Python, TypeScript, and Go. Those SDKs will still compile to WASM — they will just make the compilation step transparent. The runtime stays WASM-based.

See do I need to know Rust and the security model for more context on the WASM requirement.