Run untrusted code.
Trust nothing.
Steel is a plugin runtime that executes WebAssembly components with per-call authorization, zero-trust isolation, and policy-as-code. Every function call is verified. Every session is sandboxed.
Get StartedWhat is Steel?
Steel is a Rust-based runtime for loading, binding, and executing WebAssembly plugins with built-in security. It enforces authorization on every function call before it reaches your code.
Plugins are packaged as OCI artifacts and distributed through standard
container registries. Interfaces are defined with WIT (WebAssembly Interface
Types), compiled to wasm32-wasip2, and executed inside
wasmtime sandboxes.
Why Steel?
Zero-Trust by Default
No implicit permissions. Every call is denied unless a policy explicitly allows it. Even if your application has a bug, the plugin can only do what the policy permits.
Per-User Isolation
Each user gets their own Wasm sandbox, linker, and policy engine. One user cannot see or affect another user's execution, even within the same plugin.
Policy-as-Code
Authorization rules are written in Rego and evaluated at runtime. Change policies without redeploying your application. Audit every decision.
OCI-Native Distribution
Ship plugins as OCI artifacts. Pull from GHCR, ECR, Docker Hub, or load from local archives. Use the container tooling you already have.
How It Works
- Your application starts a Steel runtime and loads plugins from OCI archives.
- A user authenticates and Steel opens an isolated session for them.
- The user invokes a function — Steel evaluates the Rego policy against the call arguments.
- If the policy returns
true, the call executes inside a Wasm sandbox. - If not, the call is denied. No code runs.
Built for Real Security Requirements
Steel was designed for environments where plugins execute sensitive operations and every call must be authorized. It provides the building blocks for zero-trust plugin systems:
- Fine-grained, per-call authorization with Rego policies.
- Per-user session isolation with separate Wasm sandboxes.
- Defense-in-depth: policy engine and linker are independent enforcement layers.
- Content-addressed plugin distribution with integrity verification.
- C-compatible FFI for embedding in non-Rust applications.
Crate Overview
| Crate | Role |
|---|---|
steel-core | Types, traits, policy engine, calling conventions |
steel-runtime | Runtime, plugin loading, FFI, OCI loader |
steel-sdk-schema | OCI artifact schema and media types |
steel-sdk | Developer SDK and bindgen! macros |
steel-tools | CLI for building and inspecting plugins |