qntx/ovo
Agent behavior that compiles
Ovo とは何か?
Ovo は、埋め込み可能でマルチエージェント対応のランタイムカーネルを提供する Rust ライブラリ です。ホストアプリケーションは、Rhai スクリプト言語で書かれた隔離されたワークフローを実行できる軽量なエージェント(turns と呼ばれる)を起動できます。ランタイムはプロセス内またはサンドボックス化された OS 環境(macOS Seatbelt または Linux Landlock)でエージェントを実行できるように構成でき、アクションの承認または拒否を制御する少数の組み込みポリシーを備えています。
なぜ注目すべきか
- エージェント中心の設計 – 複数の小さな独立した AI や自動化エージェント(例:チャットボットのオーケストレーション、ツール呼び出しパイプライン、RAG スタイルのエージェント)が必要なシステムを開発している場合、Ovo はそれらのライフサイクルを管理する完成済みのカーネルを提供します。
- 安全最優先 – ポリシー(エージェントが実行できる操作)とランタイムを分離でき、OS レベルのサンドボックスを強制することで、悪意あるまたはバグのあるエージェントがホストに影響を与えるリスクを低減できます。
- Rust ネイティブ – すべてが安全な Rust で記述されているため、通常のパフォーマンスとメモリ安全性の保証を得られます。
- プラグイン可能なバックエンド – macOS Seatbelt サンドボックス、Linux Landlock ヘルパー、またはテスト用にサンドボックスなしで実行できるように、バックエンドを切り替えることができます。
コアコンセプト
| コンセプト | 説明 |
|---|---|
| Turn | エージェントが実行する最小単位の作業。カーネルによってスケジュールされ、TurnOptions ポリシーで承認/拒否が可能。 |
| TurnOptions | 1 つの turn が承認される方法を決定する設定(テスト用に AutoApprove、ロックダウンされたホスト用に AlwaysDeny、またはカスタム UI ゲート)。 |
| Host | カーネルを実行する周囲の環境。InProcessHost(純粋な Rust、OS サンドボックスなし)または SandboxBackend を使用する sandboxed_host を作成できます。 |
| SandboxBackend | OS サンドボックス実装を抽象化するトレイト。実装は SeatbeltBackend(macOS)と LandlockBackend(Linux)があります。 |
| Rhai workflow | エージェントは Rhai という軽量な埋め込みスクリプト言語で記述されます。ワークフローは ジャーナル化 されており、アクションを再実行または検査できます。 |
セットアップ方法(コードスニペット)
use std::sync::Arc;
use ovo::{AlwaysDeny, TurnOptions, sandboxed_host};
// サンドボックスバックエンドを選択(例:Linux で Landlock ヘルパーを使用)
let backend = Arc::new(ovo::LandlockBackend::with_helper()?);
// エージェントを閉じ込められたディレクトリ内で実行するサンドボックスホストを作成
let host = sandboxed_host(sampler, backend, jail_path)?;
// TurnOptions はホストがユーザーにアクションの承認を求める方法を制御します。
let opts = TurnOptions::for_host(Arc::new(AlwaysDeny)); // 本番環境では UI ゲートに置き換える
sampler– エージェントに乱数を提供するオブジェクト(例:PRNG)。jail_path– ファイルシステムサンドボックスとして使用されるディレクトリ。AlwaysDenyは安全なデフォルトです。実際の展開では、人間またはポリシーエンジンに turn の実行を許可するか否かを尋ねる UI ベースのゲートを提供する必要があります。
機能マトリクス
| 機能フラグ | 追加される機能 | サンドボックス対応 |
|---|---|---|
default (runtime + workflow) |
コアカーネル + Rhai ワークフロー エンジン;ovo-sandbox をリンク(デフォルトではサンドボックスなし) |
– |
| toolkit | 閉じ込められたファイルシステムシェル(cwd が閉じ込められる)を追加 |
seatbelt(macOS)または landlock(Linux)が有効になっている必要あり |
| sandbox | ポリシー型と SandboxBackend トレイトを公開 |
– |
| seatbelt | macOS /usr/bin/sandbox-exec サンドボックスを有効化 |
macOS 専用 |
| landlock | ovo-landlock ヘルパー実行ファイル経由で Linux Landlock サンドボックスを有効化 |
Linux 専用(PATH に存在するか、OVO_LANDLOCK_HELPER で指定) |
| full | toolkit、ステート管理、観測フック、およびオプションの OpenAI/Ollama インテグレーションをバンドル | No – 明示的なサンドボックスバックエンドが必要 |
| --all-features | すべてをコンパイル(full + seatbelt + landlock) |
コンパイル時バックエンド;Linux ではヘルパー実行ファイルが必要 |
完成度と安定性
- 現在のシリーズは 0.9.x で、前安定性 とラベル付けされています。互換性レイヤーなしで破壊的変更が発生する可能性があるため、1.0 ステーブル API ではなく、急速に進化するライブラリとみなしてください。
- クレートは crates.io で
ovo(以前はmachi)として公開されています。 - ドキュメントは主に README と生成された Rust ドキュメントにあり、別途チュートリアルはまだありません。
ライセンス
Ovo は MIT および Apache‑2.0 の二重ライセンスで提供されており、プロジェクトに最適な許容性の高いライセンスを選択できる柔軟性があります。
誰がメンテナンスしていますか?
これは QuantX(https://qntx.org)のオープンソースプロジェクトであり、定量的および AI ベースの作業に特化したオープンソースツールに焦点を当てたコミュニティです。
TL;DR
Ovo = Rhai スクリプトで実行される多数の小さなサンドボックス対応エージェントを扱うための Rust ライブラリ。ポリシーと実行の明確な分離が特徴です。安全で埋め込み可能なマルチエージェントランタイムが必要で、Rust で作業することに慣れている開発者向けです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト