Thorsten Hans helps developers build practical applications with server-side WebAssembly, connecting reusable components and fast startup with familiar development tools and runtime observability. His work spans enterprise application consulting, open-source tooling, and developer advocacy at Fermyon. At AI Engineer World’s Fair 2026, he spoke as a Senior Developer Advocate at Akamai about deploying MCP servers and AI agents with WebAssembly.
Hans’s technical writing explains how runtime capabilities change application design, from separating reusable logic to preparing data before a request arrives:
Reusable WebAssembly components: His component-composition example separates message classification from HTTP handling. A dedicated component exposes a defined interface; the surrounding application validates requests and returns responses. Custom templates and generated bindings reduce the setup needed to connect the pieces. The example gives the WebAssembly Component Model a concrete purpose: reuse application logic without coupling it to the code that receives and answers requests.
Build-time initialization: In his GeoIP application using Wizer, Hans loads a geolocation database during the build and snapshots the initialized memory into the WebAssembly module. Requests then use the prepared data without retrieving the database remotely or parsing it again. Moving suitable initialization out of the request path addresses both startup work and data-access latency, especially when an application runs near its users while its data would otherwise remain far away.
Agent tools with explicit behavior: His TypeScript support-agent example combines Spin with the OpenAI Agents SDK. The model chooses between an FAQ tool and a human-support escalation tool, while application code determines what those tools do. The escalation example logs a request; it does not implement a complete ticketing integration. That distinction makes the division of responsibility clear: the model selects an action, and the application supplies its behavior.
Observability during development: His OpenTelemetry integration with the .NET Aspire dashboard brings Spin’s logs, metrics, and traces into a local dashboard through its observability plugin. Developers can inspect WebAssembly applications through familiar operational signals, connecting the runtime’s execution to the debugging practices they already use.
Carrying applications across environments
Hans’s World’s Fair 2026 talk applies these concerns to AI infrastructure. He demonstrates composing MCP tools written in TypeScript and Rust with wasmcp, testing the resulting server, and deploying it through Spin to Akamai Functions. He also shows an agent built with the Vercel AI SDK and explains how memory snapshots prepare application state for fast startup. The emphasis is on making globally distributed deployment accessible through familiar languages and tools.
In August 2026, Hans announced Building Serverless Applications With WebAssembly & Spin, a book in development. Its planned progression follows a multi-component Rust application from construction to deployment on the global edge and Kubernetes without rewriting the application. It extends a recurring concern in his work: helping developers understand an application’s structure and behavior well enough to carry it across environments.
Thorsten Hans builds a WebAssembly MCP server, deploys a persistent decision log across service regions, and runs a tool-using agent. The walkthrough explains component composition, deployment health checks and JavaScript memory snapshots—and separates fast startup from the time spent calling a model.
“Zero cold starts” describes negligible claimed startup overhead: Akamai Functions still starts the application per request, with Hans reporting an average below half a millisecond.
WasmCP separates tool implementation from server assembly. A compiled tools component becomes an MCP server through composition with the required supporting components.
The decision-log example connects intent, approval, a remote tool call and persistence: an IDE request inserts a decision that a later list operation can retrieve.
JavaScript memory snapshots move runtime and dependency initialization into the build. The artifact must also carry the JavaScript runtime, given as roughly ten megabytes.
A globally deployed agent can still call a model in one location. The successful coin-toss demo reports roughly 820–866 milliseconds for the model loop, separate from application startup.