About this project
# Omnia: Lightweight WebAssembly Runtime
Omnia is a lightweight, secure runtime for WebAssembly (WASI) components. It provides a thin, ergonomic wrapper around [wasmtime](https://github.com/bytecodealliance/wasmtime) to easily integrate host-based services like HTTP, messaging, key-value stores, and model completions into your WASI applications.
While it can be used standalone, Omnia is primarily designed to be the runtime for **Augentic's Agent Skills**. It ensures that agent-generated code runs in a safe, sandboxed environment while still having controlled access to necessary infrastructure.
## Why Omnia?
- **Secure by Default**: All guest code runs in a strict WebAssembly sandbox. Capabilities (network, filesystem, model access) are explicitly granted.
- **Batteries Included**: Built-in support for common WASI interfaces — HTTP, key-value, messaging, SQL, blob and document storage, secrets, identity, WebSockets, observability, and model completions — each with a zero-config default backend.
- **Developer Friendly**: Typed explicit guest APIs and the `runtime!` host macro keep boundaries visible without repetitive transport glue.
- **Pluggable Architecture**: Swap backend implementations (e.g. in-memory to Redis) without changing or recompiling guest code. Production backends live in the sibling [`omnia-backends`](https://github.com/augentic/omnia-backends) repository.
- **Multi-Guest Deployments**: One runtime can host many guests with declarative routing, workspace mounts, and host-mediated guest-to-guest linking, all driven by a TOML manifest.
## Quick start
Build a guest and run it with an example host runtime:
```bash
cargo build --example http-wasm --target wasm32-wasip2
RUST_LOG=info cargo run --example http -- run ./target/wasm32-wasip2/debug/examples/http_wasm.wasm
```
A host runtime is a single macro invocation — each entry pairs a WASI interface with the backend that implements it:
```rust,ignore
use omnia_wasi_http::{HttpDefault, WasiHttp};
use omnia_wasi_keyvalue::{KeyValueDefault, WasiKeyValue};
use omnia_wasi_otel::{OtelDefault, WasiOtel};
omnia::runtime!({
hosts: {
WasiHttp: HttpDefault,
WasiOtel: OtelDefault,
WasiKeyValue: KeyValueDefault,
}
});
```
## Documentation
**[Start with the documentation index](docs/README.md)** — a graduated path from first run to full deployments:
- [Getting Started](docs/getting-started.md) — first build and run, ~10 minutes
- How-to guides — [writing guests](docs/guides/writing-guests.md), [composing a runtime](docs/guides/composing-a-runtime.md), [multi-guest deployments](docs/guides/multi-guest-deployments.md), capability deep dives ([SQL](docs/guides/sql.md), [documents](docs/guides/document-store.md), [messaging](docs/guides/messaging.md), [model/MCP](docs/guides/model-completions.md)), [production backends](docs/guides/production-backends.md), [deployment](docs/guides/deployment.md), [tuning](docs/guides/performance-tuning.md)
- [Architecture](docs/Architecture.md), [Security Model](docs/security-model.md), and [Glossary](docs/glossary.md)
- Reference — [WASI interfaces](docs/reference/wasi-interfaces.md), [model interface](docs/reference/model.md), [CLI](docs/reference/cli.md), [configuration](docs/reference/configuration.md)
- [Troubleshooting](docs/troubleshooting.md)
The [`examples/`](examples/README.md) directory contains a complete working guest + runtime pair for every interface.
## Crates
| Crate | Description |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------ |
| [`omnia`](crates/omnia) | Composition root — assembly, lifecycle, optional-crate composition, and `runtime!` |
| [`omnia-core`](crates/omnia-core) | Live-runtime SDK — wasmtime engine, registry, dispatch, stores, and telemetry |
| [`omnia-plugin`](crates/omnia-plugin) | `omnia:plugins/loader` capability — loader host, acquisition policies, and plugin stores; selected by omnia's `plugin` feature |
| [`omnia-cli`](crates/omnia-cli) | Leaf `run` grammar — clap plus argv-precedence; selected by omnia's `cli` feature |
| [`omnia-sdk`](crates/omnia-sdk) | Guest SDK — `Handler`/`Client`/`Context`, HTTP/messaging routers and the command façade, errors, capabilities, and MCP support |
| [`omnia-guest-macros`](crates/guest-macros) | `#[instrument]` observability attribute for guests |
| [`omnia-host-macros`](crates/host-macros) | `runtime!` proc-macro for host runtime generation |
| [`omnia-wasi-blobstore`](crates/wasi-blobstore) | wasi:blobstore host and guest bindings |
| [`omnia-wasi-config`](crates/wasi-config) | wasi:config host and guest bindings |
| [`omnia-wasi-docstore`](crates/wasi-docstore) | Document-store host and guest bindings |
| [`omnia-wasi-http`](crates/wasi-http) | wasi:http host and guest bindings |
| [`omnia-wasi-identity`](crates/wasi-identity) | Identity/OAuth host and guest bindings |
| [`omnia-wasi-keyvalue`](crates/wasi-keyvalue) | wasi:keyvalue host and guest bindings |
| [`omnia-wasi-messaging`](crates/wasi-messaging) | Messaging host and guest bindings |
| [`omnia-wasi-model`](crates/wasi-model) | omnia:model completion host and guest bindings |
| [`omnia-wasi-otel`](crates/wasi-otel) | OpenTelemetry host and guest bindings |
| [`omnia-wasi-sql`](crates/wasi-sql) | wasi:sql host and guest bindings |
| [`omnia-wasi-vault`](crates/wasi-vault) | Secrets-vault host and guest bindings |
| [`omnia-wasi-websocket`](crates/wasi-websocket) | WebSocket host and guest bindings |
## License
MIT OR Apache-2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.