<div align="center">
<img src="https://raw.githubusercontent.com/GEMISIS/leviath/HEAD/docs/assets/logo.png" alt="Leviath" width="440">
AI 에이전트를 위한 구조화된 런타임(A structured runtime for AI agents)
모델에게 평평한 메시지 목록 하나와 거대한 단일 파일 읽기만 제공하면 시스템 프롬프트가 창밖으로 나가버립니다. Leviath는 여기에 구조를 부여합니다.
응집성(Coherent). 구조화된 컨텍스트 영역 덕분에 에이전트는 50개의 도구 호출 전의 내용을 여전히 기억할 수 있습니다.<br>
적절한 크기(Right-sized). 작업의 각 단계는 자체 모델, 도구 및 컨텍스트 레이아웃을 가지므로, 파일 읽기에 대해 최첨단 가격을 지불하지 않아도 됩니다.<br>
가벼움(Light). 단일 바이너리에서 수천 개의 에이전트를 하나의 bevy_ecs 프로세스 내에서 실행합니다. Node나 Python, 또는 Docker가 필요 없습니다.
Tests
Coverage
License: MIT
Docs
stable
beta
alpha
Quick Start · Agents · Features · Dashboard · API · Comparison · Why not Leviath · Contributing
</div>
<p align="center">
<img src="https://raw.githubusercontent.com/GEMISIS/leviath/HEAD/docs/assets/hero-final.gif" alt="Leviath's terminal dashboard running several agents concurrently" width="900">
</p>
한눈에 보기 (At a glance)
lev run coder --task "Build a CLI that converts CSV to JSON"
lev run deep-researcher --task "Survey solid-state batteries"
lev ps
...
Quick Start (빠른 시작)
1. 설치 (Install)
macOS 및 Linux:
curl -fsSL https://leviath.dev/install.sh | sh
Windows 환경에서는 PowerShell을 사용합니다 (Windows Terminal이 열리며, Command Prompt가 아님):
irm https://leviath.dev/install.ps1 | iex
두 명령어 모두 미리 빌드된 바이너리를 설치하므로 Rust 툴체인이 필요하지 않습니다. Stable 버전이 기본값이며, beta 또는 alpha 버전을 사용하려면 채널을 인수로 전달합니다:
curl -fsSL https://leviath.dev/install.sh | sh -s -- --channel beta.
릴리스 채널 →
<details>
<summary><b>패키지 관리자(Package managers)</b>: Homebrew와 Scoop을 사용하여 관리하고 싶다면</summary>
<br/>
brew tap gemisis/leviath https://github.com/GEMISIS/leviath-dist.git
brew trust gemisis/leviath
...
# Windows
scoop bucket add leviath https://github.com/GEMISIS/leviath-dist.git
scoop install leviath
</details>
Cargo (모든 플랫폼에서 사용 가능, Rust 필요):
cargo install leviath-cli
cargo install --git https://github.com/GEMISIS/leviath.git --bin lev
Leviath는 라이브러리이기도 합니다: 자체 애플리케이션에 런타임을 임베드(embed)하기 위해 leviath 크레이트를 추가하세요. 임베딩 가이드에서는 월드를 구축하고, 에이전트를 스폰하며, 이벤트를 인-프로세스(in-process)로 스트리밍하는 방법을 다룹니다.
두 명령어 모두 기본적으로 모든 모델 제공업체(model provider)를 포함합니다. 사용하려는 것만으로 빌드하려면, 기본 설정을 끄고 필요한 기능을 지정해야 합니다. 예: cargo install leviath-cli --no-default-features --features anthropic,openai. 제공업체 선택에서 기능 목록을 확인할 수 있습니다.
하나의 제공업체만 있으면 됩니다: Anthropic, OpenAI, Google AI, OpenRouter, 또는 AWS Bedrock의 API 키만 있으면 됩니다. 키가 전혀 없나요? 로컬 Ollama를 실행하세요.
3. 에이전트 실행하기 (Run an agent)
lev run coder --task "/users 엔드포인트에 페이지네이션 추가"
...
lev run은 에이전트를 백그라운드 **데몬(daemon)**으로 전달하여 모든 에이전트를 하나의 공유된 환경에서 호스팅하므로, 터미널을 닫아도 실행이 계속됩니다. 방치되는 에이전트의 경우, lev daemon install을 사용하면 launchd/systemd에 등록되어 로그인 시 시작하고, 실패하면 재시작하며, 중단된 실행을 다시 로드합니다. 데몬 문서 →
4. 자신만의 에이전트 만들기 (Create your own)
lev create my-agent
cd my-agent
lev validate .
...
이렇게 하면 agent.toml이라는 청사진이 작성되며, 여기에서 커스터마이징할 수 있습니다: 필요한 입력값, 단계별 모델(models per stage), 컨텍스트 영역 및 예산(context regions and their budgets), 도구(tools), 그리고 워크플로우 그래프입니다. 청사진 형식 →
에이전트 (Agents)
기본적으로 11개의 에이전트가 제공되며, 코딩, 검토, 연구, 데이터 수집, 로그 분석, 그리고 3D 모델 구축을 다룹니다. 각 에이전트는 구조화된 컨텍스트 영역, 단계별 모델 폴백(model fallback), 오류 복구 기능을 갖춘 다단계 지향 그래프이며, 그중 다섯 개는 하나씩 순차적으로 처리하는 대신 여러 가지를 한 번에 처리하도록 분기됩니다. coder가 가장 크며:
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/agents/coder-dark.svg">
<img src="https://raw.githubusercontent.com/GEMISIS/leviath/HEAD/docs/assets/agents/coder.svg" alt="The coder agent's workflow graph" width="560">
</picture>
</p>
다이아몬드 모양은 LLM(대규모 언어 모델)에 의해 라우팅되거나 인간의 개입(human-in-the-loop)을 거치는 결정이며, 점선 경로는 에이전트의 선택보다는 런타임 조건(예: stuck 감지기)에 따라 자동으로 발동됩니다. 모든 에이전트의 워크플로우 그래프는 agent catalog →에서 확인할 수 있습니다.
주요 기능 (Features)
<table>
<tr
><td width="50%" valign="top">
<b>구조화된 컨텍스트 메모리 (Structured context memory)</b>
<br><br>
컨텍스트 창이 이름 지정된 영역으로 분할되며, 어떤 영역의 정보가 가장 먼저 사라질지 사용자가 결정합니다. 아키텍처는 고정되어 유지되고, 도구 결과가 우선적으로 들어가며, 대화 내용은 요약 형태로 압축되므로 파일 덤프는 자신이 자리 잡은 영역만 밀어낼 수 있습니다. 예산(Budgets)은 컨텍스트 창의 백분율로 설정되어 있어 모델을 전환해도 청사진(blueprint)이 형태를 유지합니다.
<br><br>
<a href="https://leviath.dev/docs/context">컨텍스트 문서 (Context docs) →</a>
</td>
<td width="50%" valign="top">
<b>다단계 워크플로우 (Multi-stage workflows)</b>
<br><br>
각 단계는 자체 모델, 도구 및 컨텍스트 레이아웃을 갖습니다. 이들을 선형적으로 실행하거나 조건부 전환, 오류 복구, LLM 기반 라우팅이 적용된 방향성 그래프로 구성할 수 있습니다. `<code class="stuck">stuck</code>` 경로는 진행하지 못하는 단계를 탈출하게 하며, 정체(stuckness)는 모델 자체 보고가 아닌 런타임에 의해 측정됩니다.
<br><br>
<a href="https://leviath.dev/docs/stages">단계 문서 (Stage docs) →</a>
</td>
</tr>
<tr
><td width="50%" valign="top">
<b>인간의 개입(Human-in-the-loop)</b>
<br><br>
`<code class="lev msg"></code>`는 메시지를 실행 중인 에이전트의 컨텍스트에 직접 추가하며, 모델은 다음 추론 호출에서 이를 인식하므로 재시작 없이 리디렉션할 수 있습니다. `<code class="interactive_points"></code>`는 승인(approve), 수정(revise) 또는 출력을 직접 편집하기 위한 체크포인트를 강제하고, `<code class="ask_user_*"></code>` 도구들은 에이전트가 자체 판단에 따라 사용자에게 질문할 수 있게 합니다.
</td>
</tr>
</table>
<br><br>
<a href="https://leviath.dev/docs/interaction">상호작용 문서 →</a>
</td>
<td width="50%" valign="top">
<b>샌드박스 실행 및 오염 추적(taint tracking)</b>
<br><br>쉘 명령어는 기본적으로 사용자의 기기에서 실행되며, 추가 설치할 것이 없습니다. 강화된 컨테이너(hardened containers) 또는 에이전트별/단계별로 더 가벼운 Linux 네임스페이스를 옵트인 할 수 있으며, 전체 환경에 걸쳐 하나의 설정 블록으로 처리할 수 있습니다. 설치된 에이전트는 샌드박스를 강화할 수는 있지만 절대 해제하지 않습니다. 오염 추적(Taint tracking) 기능(실험적)은 정보 유출 능력이 있는 도구 호출이 실행되기 전에 차단합니다.<br><br>
<a href="https://leviath.dev/docs/security">보안 문서 →</a>
</td>
</tr>
<tr>
<td width="50%" valign="top">
<b>ECS 에이전트 엔진</b>
<br><br>에이전트는 <a href="https://bevyengine.org/">bevy_ecs</a> 세계의 개체(entity)입니다. 따라서 수천 개의 에이전트가 그 많은 OS 프로세스를 사용하는 대신, 게임 엔진 스타일의 스케줄링으로 하나의 프로세스를 공유합니다. 또한 제공자에게 과부하를 주지 않습니다. 모델당 공유 추론 풀(per-model inference pool)이 전역적인 인플라이트 요청(in-flight requests)을 제한하며, 슬롯을 기다리는 에이전트는 단순히 데이터로 존재합니다.<br><br>
<a href="https://leviath.dev/docs/engine">엔진 문서 →</a>
</td>
<td width="50%" valign="top">
<b>서브-에이전트 및 팬아웃(fan-out)</b>
<br><br>에이전트는 서로 다른 청사진(blueprints)을 가진 자식 에이전트를 생성합니다. 팬아웃 단계는 작업을 작업 항목(work items)으로 분할하고, 각 항목당 워커를 동시에 실행하며, 그 결과를 부모에게 다시 병합하는데, 이 모든 과정이 동일한 프로세스 내에서 이루어집니다. 어떤 서브-에이전트든 깊이에 상관없이 직접 질문을 할 수 있습니다.<br><br>
<a href="https://leviath.dev/docs/sub-agents">서브-에이전트 문서 →</a>
</td>
</tr>
</table>
대시보드
<p align="center">
<img src="https://raw.githubusercontent.com/GEMISIS/leviath/HEAD/docs/assets/dashboard-final.png" alt="lev dash - the Leviath terminal dashboard showing the agent list and live activity log" width="900">
lev dash는 동시 에이전트 관리를 위한 완전한 TUI(Text User Interface)입니다: 스테이지 탭, 컨텍스트 창 시각화, 마크다운 렌더링, 서브 에이전트 트리 뷰, 그리고 드래그-투-카피를 포함한 전체 마우스 지원(SSH에서도 작동합니다). **m**을 눌러 대시보드를 벗어나지 않고 MCP 도구 서버를 관리할 수 있습니다. 대시보드 문서 →
API 서버
lev serve는 REST + WebSocket API를 노출하므로, HTTP 통신이 가능한 모든 것이 통합할 수 있습니다. 별도의 SDK가 필요하지 않습니다. 이 API는 에이전트 생명주기(agent lifecycle), 인간 개입형 상호작용(human-in-the-loop interaction), 에이전트별 스트리밍(per-agent streaming), 그리고 완료 시 서명된 웹훅 콜백(signed webhook callbacks)을 다룹니다. The Lair는 이를 구동하는 브라우저 콘솔이며, 따라서 직접 작성하지 않아도 웹 UI를 얻을 수 있습니다. 이 API가 도구 실행 에이전트를 생성할 수 있기 때문에, 토큰 없이는 시작을 거부하며 기본적으로 127.0.0.1에 바인딩됩니다.
export LEVIATH_API_TOKEN="$(openssl rand -hex 16)"
lev serve --port 3000
...
전체 API 참조 →
관측 가능성 (Observability)
프로덕션 배포는 OpenTelemetry를 통해 구조화된 추적(structured traces), 메트릭, 로그를 내보낼 수 있습니다. 모든 실행은 토큰 카운터, 지연 시간 히스토그램, 그리고 해당 실행의 트레이스 ID를 담고 있는 로그 기록과 함께 하나의 추적(trace)이 됩니다 (agent.run → agent.stage → 호출별 agent.inference / agent.tool_call 스팬). 기본적으로 비활성화되어 있으며, 설정 블록 하나로 활성화할 수 있습니다. 관측 가능성 문서 →
에이전트 클라이언트 프로토콜 (Agent Client Protocol)
lev agent-client --agent coder는 모든 Leviath 에이전트를 에이전트 클라이언트 프로토콜을 통해 제공합니다 (stdio를 통한 JSON-RPC 2.0). 따라서 Zed나 Gas City와 같은 호스트는 자식 프로세스로 헤드리스 에이전트를 구동할 수 있습니다. 이를 호스트에 연결하는 것은 코드가 아닌 설정 문제입니다. session/prompt는 실행이 실제로 완료될 때까지 전송 상태를 유지하며, session/request_permission을 가진 호스트는 차례로 대화형 도구 승인을 받습니다. 에디터 통합 문서 →
"ACP"는 두 개의 관련 없는 프로토콜에서 주장하는 명칭입니다. Leviath는 BeeAI의 Agent Communication Protocol이 아닌, 에이전트 클라이언트 프로토콜 (JSON-RPC/stdio)을 구현합니다.
비교 방법
Leviath는 에이전트가 실행되는 런타임 환경입니다. Claude Code, Codex, OpenHands는 사용자가 함께 작업하는 에이전트이며, CrewAI와 LangGraph는 에이전트를 구축하는 프레임워크이고, Gas Town과 Gas City는 어떤 작업이 수행될지 결정하는 오케스트레이터입니다. 이들 중 여러 가지가 Leviath 대신에 사용하는 것보다 함께 실행할 가치가 있습니다.