Extism

The framework for building with WebAssembly: load, run, and extend apps with wasm plugins.

Framework
Cargo
v1.30.0
5,723stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
63/100Good
Development Activity44
Maintenance56
Community56
Maturity56
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
81/100Excellent
Architecture90
Code Quality84
Innovation90
Learning Curve58

Extism is a framework for building extensible applications with WebAssembly. The extism crate is its runtime and Rust SDK: it loads wasm modules, moves data in and out of them, calls their exported functions, and links host functions back into the sandbox, letting you safely execute arbitrary, untrusted user code inside your program. Built on Wasmtime, it adds practical conveniences over a bare wasm runtime — persistent memory, host-controlled HTTP, runtime limits and timeouts, and a simple plugin API — so you can build plugin systems, FaaS platforms, and other extensible software.

What You Get

  • A Wasmtime-based runtime that loads wasm plugins from files, bytes, or URLs and calls their exports
  • A host-function mechanism to expose native Rust capabilities back into the sandbox
  • Built-in conveniences: persistent module-scope memory, host-controlled HTTP, and runtime limits and timers

Common Use Cases

  • Adding a safe plugin system that runs third-party or user-supplied code inside your app
  • Building a Functions-as-a-Service or edge platform that executes wasm workloads on demand
  • Embedding extensible logic — code generators, rules engines, transforms — that users can customize

Under The Hood

Architecture - The extism crate lives in the runtime/ member of a multi-language monorepo workspace. Its core types — Plugin, PluginBuilder, CurrentPlugin, Function, and a Pool for reuse — wrap a Wasmtime instance, managing linear memory, the host/guest calling convention, and a bundled extism-runtime.wasm kernel that mediates data transfer. Companion workspace crates (extism-manifest, extism-convert) define the plugin manifest and Rust-to-wasm value conversions. Tech Stack - Written for the Rust 2021 edition, it builds on Wasmtime 43 (with WASI support via wasi-common and wiggle), plus serde/serde_json/toml for manifests and anyhow for error handling. Code Quality - The runtime carries an in-tree test suite under runtime/src/tests, is maintained by a 40-plus contributor team, and backs SDKs in more than a dozen languages, evidencing rigorous cross-platform testing. API Design - A PluginBuilder assembles a plugin from a manifest and host functions, after which plugin.call(name, input) runs an export; the ergonomics deliberately hide Wasmtime’s complexity behind a small, consistent surface shared conceptually across every Extism SDK.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search