Expand description
§Omnia Wasm Runtime
The Omnia Wasm runtime provides a thin wrapper around wasmtime for ergonomic integration of host-based services for WASI components.
It allows you to declaratively assemble a runtime that provides specific capabilities (like HTTP, Key-Value, Messaging) to guest components, backed by real host implementations.
§Quick Start
Use the runtime! macro to configure which WASI interfaces and backends your host runtime needs. This generates a runtime_run function that handles the entire lifecycle.
use omnia::runtime;
use omnia_wasi_http::WasiHttpCtx;
use omnia_wasi_keyvalue::KeyValueDefault;
use omnia_wasi_otel::DefaultOtel;
// Define the runtime with required capabilities
omnia::runtime!({
"http": WasiHttpCtx,
"keyvalue": KeyValueDefault,
"otel": DefaultOtel,
});
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Parse command line arguments (provided by the macro-generated Cli)
let cli = Cli::parse();
// Run the runtime
runtime_run(cli).await
}§Core Traits
The runtime is built around a set of traits that allow services to be plugged in:
| Trait | Purpose |
|---|---|
Host<T> | Links a WASI interface (e.g., wasi:http) into the wasmtime::Linker. |
Server<S> | Starts a server (e.g., HTTP listener, NATS subscriber) to handle incoming requests. |
Backend | Connects to an external service (e.g., Redis, Postgres) during startup. |
State | Manages per-request state and provides access to the component instance. |
FromEnv | Configures backend connections from environment variables. |
§Features
jit(default): Enables Cranelift JIT compilation, allowing you to run.wasmfiles directly. Disable this to only support pre-compiled.bincomponents (useful for faster startup in production).
§Configuration
The runtime and its included services are configured via environment variables:
RUST_LOG: Controls logging verbosity (e.g.,info,debug,omnia=trace).OTEL_GRPC_URL: Endpoint for OpenTelemetry collector (ifomnia-otelis used).
§Architecture
See the workspace documentation for the full architecture guide and list of available WASI interface crates.
§License
MIT OR Apache-2.0
Macros§
- runtime
- Generates the runtime infrastructure based on the configuration.
Structs§
- Cli
- Command line interface for omnia.
- Compiled
- A compiled WebAssembly component with its associated Linker.
Enums§
- Command
- Subcommands for the omnia CLI.
Traits§
- Backend
- Implemented by backend resources to allow the backend to be connected to a WASI component.
- FromEnv
- Trait for creating connection options from environment variables.
- Host
- Implemented by all WASI hosts in order to allow the runtime to link their dependencies.
- Parser
- Parse command-line arguments into
Self. - Server
- Implemented by WASI hosts that are servers in order to allow the runtime to start them.
- State
- State trait for WASI components.
Functions§
Type Aliases§
- Future
Result - Result type for asynchronous operations.
Derive Macros§
- Parser
- Generates the
Parserimplementation.