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.ioovo 이름으로 게시되어 있습니다 (이전 이름은 machi).
  • 문서는 주로 README와 생성된 Rust 문서에 있으며, 별도의 튜토리얼은 아직 없습니다.

라이선스

Ovo는 MITApache-2.0의 이중 라이선스로 제공되어, 프로젝트에 가장 적합한 허용적인 라이선스를 선택할 수 있는 유연성을 제공합니다.


누가 유지보수하나요?

이는 QuantX (https://qntx.org)의 오픈소스 프로젝트로, 정량적 및 AI 기반 작업을 위한 오픈소스 도구에 집중하는 커뮤니티입니다.


TL;DR

Ovo = Rhai 스크립트를 통해 많은 소규모이고 샌드박스화된 에이전트를 실행할 수 있는 Rust 라이브러리이며, 정책과 실행 사이에 명확한 분리를 제공합니다. 안전하고 삽입 가능한 다중 에이전트 런타임이 필요하고 Rust로 작업하는 데 익숙한 개발자를 위한 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트