qntx/ovo
Agent behavior that compiles
Ovo는 무엇인가요?
Ovo는 삽입 가능한, 다중 에이전트 런타임 커널을 제공하는 Rust 라이브러리입니다. 호스트 애플리케이션이 Rhai 스크립트 언어로 작성된 격리된 워크플로우를 실행할 수 있는 가벼운 에이전트(turns)를 생성할 수 있게 해줍니다. 런타임은 프로세스 내에서 실행하거나 macOS Seatbelt 또는 Linux Landlock과 같은 사전 설정된 OS 환경에서 샌드박스로 실행하도록 구성할 수 있으며, 액션 승인 또는 거부를 위한 몇 가지 내장 정책을 포함하고 있습니다.
왜 관심을 가져야 할까요?
- 에이전트 중심 설계 – 채팅봇 오케스트레이션, 도구 호출 파이프라인, RAG 스타일 에이전트와 같은 많은 소규모이고 독립적인 AI 또는 자동화 에이전트가 필요한 시스템을 구축 중이라면, Ovo는 에이전트의 수명 주기를 관리할 수 있는 즉시 사용 가능한 커널을 제공합니다.
- 안전성 우선 – 라이브러리는 정책 (에이전트가 수행할 수 있는 작업)과 런타임을 분리하고 OS 수준의 샌드박스를 강제 적용함으로써 악성 또는 버그가 있는 에이전트가 호스트에 영향을 미치는 위험을 줄입니다.
- Rust 네이티브 – 모든 것이 안전한 Rust로 작성되어 있어 일반적인 성능과 메모리 안전성 보장을 받을 수 있습니다.
- 플러그인 백엔드 – macOS Seatbelt 샌드박스, Linux Landlock 헬퍼, 또는 테스트용 샌드박스 없이 실행할 수 있는 백엔드를 선택할 수 있습니다.
핵심 개념
| 개념 | 설명 |
|---|---|
| Turn | 에이전트가 수행하는 최소 단위의 작업입니다. 턴은 커널에 의해 스케줄되며 TurnOptions 정책을 통해 승인/거부될 수 있습니다. |
| TurnOptions | 턴이 어떻게 승인되는지를 결정하는 구성입니다 (AutoApprove는 테스트용, AlwaysDeny는 잠금된 호스트용, 또는 사용자 정의 UI 게이트). |
| Host | 커널을 실행하는 주변 환경입니다. InProcessHost (순수 Rust, OS 샌드박스 없음) 또는 SandboxBackend를 사용하는 sandboxed_host를 생성할 수 있습니다. |
| SandboxBackend | OS 샌드박스 구현을 추상화하는 트레이트입니다. 구현체는 SeatbeltBackend (macOS)와 LandlockBackend (Linux)입니다. |
| Rhai 워크플로우 | 에이전트는 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는 안전한 기본값입니다. 실제 배포에서는 인간이나 정책 엔진이 턴을 진행할 수 있는지 묻는 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 전용 (helper는 PATH에 있어야 하거나 OVO_LANDLOCK_HELPER로 지정 필요) |
| full | toolkit, 상태 관리, 관찰 훅, 선택적 OpenAI/Ollama 통합 포함 | 아님 – 여전히 명시적인 샌드박스 백엔드 필요 |
| --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로 작업하는 데 익숙한 개발자를 위한 것입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트