Об этом проекте

# Omnia: легковесная среда выполнения WebAssembly Omnia — это легковесная безопасная среда выполнения для компонентов WebAssembly (WASI). Она предоставляет тонкую, эргономичную обёртку вокруг [wasmtime](https://github.com/bytecodealliance/wasmtime), позволяющую легко интегрировать хост-сервисы, такие как HTTP, обмен сообщениями, хранилища ключ-значение и генерацию моделью, в ваши приложения WASI. Хотя Omnia можно использовать автономно, в первую очередь она разработана как среда выполнения для **Agent Skills компании Augentic**. Она гарантирует, что код, сгенерированный агентом, выполняется в безопасной изолированной среде, сохраняя при этом контролируемый доступ к необходимой инфраструктуре. ## Почему Omnia? - **Безопасность по умолчанию**: весь гостевой код выполняется в строгой песочнице WebAssembly. Возможности (сеть, файловая система, доступ к модели) предоставляются явно. - **Всё включено**: встроенная поддержка распространённых интерфейсов WASI — HTTP, key-value, обмен сообщениями, SQL, blob- и документное хранилище, секреты, идентификация, WebSockets, наблюдаемость и генерация моделью — каждый с бэкендом по умолчанию без конфигурации. - **Удобство для разработчиков**: типизированные явные гостевые API и хост-макрос `runtime!` делают границы видимыми без повторяющегося связующего кода транспорта. - **Подключаемая архитектура**: заменяйте реализации бэкендов (например, с in-memory на Redis) без изменения или перекомпиляции гостевого кода. Продакшен-бэкенды находятся в соседнем репозитории [`omnia-backends`](https://github.com/augentic/omnia-backends). - **Развёртывания с несколькими гостами**: одна среда выполнения может размещать множество гостей с декларативной маршрутизацией, монтированием рабочих пространств и опосредованной хостом связью гость-гость, всё управляется манифестом TOML. ## Быстрый старт Соберите гостя и запустите его с примером хост-среды выполнения: ```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 ``` Хост-среда выполнения — это один вызов макроса; каждая запись сопоставляет интерфейс WASI с бэкендом, который его реализует: ```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, } }); ``` ## Документация **[Начните с индекса документации](docs/README.md)** — постепенный путь от первого запуска до полных развёртываний: - [Начало работы](docs/getting-started.md) — первая сборка и запуск, ~10 минут - Практические руководства — [написание гостей](docs/guides/writing-guests.md), [компоновка среды выполнения](docs/guides/composing-a-runtime.md), [развёртывания с несколькими гостами](docs/guides/multi-guest-deployments.md), углублённое изучение возможностей ([SQL](docs/guides/sql.md), [документы](docs/guides/document-store.md), [обмен сообщениями](docs/guides/messaging.md), [модель/MCP](docs/guides/model-completions.md)), [продакшен-бэкенды](docs/guides/production-backends.md), [развёртывание](docs/guides/deployment.md), [настройка производительности](docs/guides/performance-tuning.md) - [Архитектура](docs/Architecture.md), [Модель безопасности](docs/security-model.md) и [Глоссарий](docs/glossary.md) - Справочник — [интерфейсы WASI](docs/reference/wasi-interfaces.md), [интерфейс модели](docs/reference/model.md), [CLI](docs/reference/cli.md), [конфигурация](docs/reference/configuration.md) - [Устранение неполадок](docs/troubleshooting.md) Каталог [`examples/`](examples/README.md) содержит полную рабочую пару гость + среда выполнения для каждого интерфейса. ## Крейты | Крейт | Описание | | ----------------------------------------------- | ------------------------------------------------------------------------------------------ | | [`omnia`](crates/omnia) | Корень композиции — сборка, жизненный цикл, композиция опциональных крейтов и `runtime!` | | [`omnia-core`](crates/omnia-core) | SDK живой среды выполнения — движок wasmtime, реестр, диспетчеризация, хранилища и телеметрия | | [`omnia-plugin`](crates/omnia-plugin) | Возможность `omnia:plugins/loader` — хост загрузчика, политики получения и хранилища плагинов; выбирается функцией `plugin` в omnia | | [`omnia-cli`](crates/omnia-cli) | Конечная грамматика `run` — clap плюс приоритет argv; выбирается функцией `cli` в omnia | | [`omnia-sdk`](crates/omnia-sdk) | Гостевой SDK — `Handler`/`Client`/`Context`, маршрутизаторы HTTP/обмена сообщениями и командный фасад, ошибки, возможности и поддержка MCP | | [`omnia-guest-macros`](crates/guest-macros) | Атрибут наблюдаемости `#[instrument]` для гостей | | [`omnia-host-macros`](crates/host-macros) | Процедурный макрос `runtime!` для генерации хост-среды выполнения | | [`omnia-wasi-blobstore`](crates/wasi-blobstore) | Хост- и гостевые привязки wasi:blobstore | | [`omnia-wasi-config`](crates/wasi-config) | Хост- и гостевые привязки wasi:config | | [`omnia-wasi-docstore`](crates/wasi-docstore) | Хост- и гостевые привязки документного хранилища | | [`omnia-wasi-http`](crates/wasi-http) | Хост- и гостевые привязки wasi:http | | [`omnia-wasi-identity`](crates/wasi-identity) | Хост- и гостевые привязки Identity/OAuth | | [`omnia-wasi-keyvalue`](crates/wasi-keyvalue) | Хост- и гостевые привязки wasi:keyvalue | | [`omnia-wasi-messaging`](crates/wasi-messaging) | Хост- и гостевые привязки обмена сообщениями | | [`omnia-wasi-model`](crates/wasi-model) | Хост- и гостевые привязки завершения omnia:model | | [`omnia-wasi-otel`](crates/wasi-otel) | Хост- и гостевые привязки OpenTelemetry | | [`omnia-wasi-sql`](crates/wasi-sql) | Хост- и гостевые привязки wasi:sql | | [`omnia-wasi-vault`](crates/wasi-vault) | Хост- и гостевые привязки хранилища секретов | | [`omnia-wasi-websocket`](crates/wasi-websocket) | Хост- и гостевые привязки WebSocket | ## Лицензия MIT OR Apache-2.0