Rust 기반 멀티 에이전트 CLI/TUI 플랫폼입니다.
- 메인 오케스트레이터 + 역할 기반 서브 에이전트
- DAG 기반 의존성 실행(직렬/병렬), 실패 정책, 폴백 노드
- 멀티 모델 라우팅(OpenAI/Anthropic/Gemini/vLLM/Claude Code CLI/Codex CLI/Mock)
- reviewer 기반 후속 planner/sub-agent continuation loop로 미완료 요구사항 재실행
- 세션 이벤트 JSONL 저장(
data/sessions/{session_id}.jsonl) - SQLite 기반 장기 메모리 + TTL 단기 메모리
- 컨텍스트 계층화 및 토큰 예산 최적화
- REST + Webhook 인터페이스
- API Key + HMAC 인증(
X-API-Key/X-Signature/X-Timestamp/X-Nonce)
cargo test# 동기 실행(완료까지 대기)
cargo run -- run --task "build a webhook enabled agent" --profile coding
# 비동기 제출
cargo run -- run --task "do something" --profile general --no-wait
# TUI
cargo run -- tui
# API 서버
cargo run -- serve --host 0.0.0.0 --port 8080
# 세션 리플레이
cargo run -- replay --session <SESSION_UUID>
# 메모리 운영
cargo run -- memory compact --session <SESSION_UUID>
cargo run -- memory vacuum- URL:
http://127.0.0.1:8080/dashboard - 기능:
- 최근 run 목록 조회
- run 선택 후 behavior 시각화(타임라인 lane, action mix, critical path, 병목 노드)
- live polling 모드(주기/limit 조정 가능)
- 인증:
- 대시보드에서
API Key+API Secret를 입력하면 브라우저가 HMAC 헤더를 직접 생성해 API를 호출합니다.
- 대시보드에서
SKILLS_DIR아래 YAML/JSON 스킬은validator노드에서git_commands를 선언해 로컬gitCLI를 직접 실행할 수 있습니다.
name: Repo Inspector
description: Check the current repository state
nodes:
- id: git_status
role: validator
instructions: Inspect the repository with git
git_commands:
- status --short
- diff --stat- 포커스/이동:
Tab,↑/↓또는j/k - 빠른 이동:
PageUp/PageDown,Home/End - 검색 필터:
/(현재 패널 필터 입력),Enter/Esc종료,0필터 초기화 - 작업 실행:
i(입력 모드) -> 작업 입력 ->Enter - 세션 이어하기: 세션 선택 후
Enter또는c - 새 세션:
n - 활성 세션 해제:
x - 세션 삭제: 세션 선택 후
d->y확인 - 세션 요약(compact):
m - 세션 리플레이 미리보기:
v - 실행 제어:
s(cancel),z(pause),u(resume),t(retry),g(clone) - 프로필 변경:
1(planning),2(extraction),3(coding),4(general),p(순환) - 자동 새로고침 간격:
[감소,]증가 - 세션 목록 크기:
,감소,.증가 - 실행 목록 크기:
-감소,=증가 - 활성 세션 필터 토글:
f - 도움말 오버레이:
? - 수동 새로고침:
r - 종료:
q
TUI 사용자 설정은 data/tui-settings.json에 저장됩니다.
TUI의 Details 패널에는 선택한 런의 동작 기반 시각화가 표시됩니다.
Behavior Graph: 노드 상태(WAIT/RUN/OK/ERR/SKIP), 의존성, 선택 모델Execution Timeline: 노드 실행 구간을 시간축 lane으로 표시Action Mix: 행동 타입 분포 카운트Recent Actions: 최신 런타임 행동 이벤트 시퀀스(node_started,model_selected,dynamic_node_added등)
POST /v1/sessionsGET /v1/sessionsGET /v1/sessions/{session_id}GET /v1/sessions/{session_id}/runsPOST /v1/runsGET /v1/runsGET /v1/runs/{run_id}POST /v1/runs/{run_id}/cancelPOST /v1/runs/{run_id}/pausePOST /v1/runs/{run_id}/resumePOST /v1/runs/{run_id}/retryPOST /v1/runs/{run_id}/cloneGET /v1/runs/{run_id}/behaviorGET /v1/runs/{run_id}/traceGET /v1/runs/{run_id}/stream(SSE)POST /v1/webhooks/endpointsGET /v1/webhooks/endpointsGET /v1/webhooks/deliveriesPOST /v1/webhooks/deliveries/{delivery_id}/retryPOST /v1/webhooks/test
trace는 동작 이벤트와 그래프 스냅샷을 반환합니다.
behavior는 시각화 친화적인 실행 lane/오프셋/행동 분포와 요약 지표(critical path, peak parallelism, bottleneck)를 반환합니다.
stream은 실시간 행동 이벤트를 SSE로 전송합니다.
stream쿼리:poll_ms,behavior=true,behavior_limit=<n>/v1/webhooks/deliveries?dead_letter=true로 DLQ 대상 전달 이력을 조회할 수 있습니다.
action_event: 런타임 행동 이벤트 payloadbehavior_snapshot: 동작 시각화 스냅샷 payload (behavior=true일 때)run_terminal: 런 종료 상태 이벤트error: 스트림 오류
queuedcancellingcancelledpausedrunningsucceededfailed
시그니처 원문:
{timestamp}.{nonce}.{raw_body}
알고리즘:
HMAC-SHA256- hex 인코딩 문자열을
X-Signature에 전달
필수 헤더:
X-API-KeyX-SignatureX-Timestamp(unix seconds)X-Nonce(재사용 금지)
AGENT_DATA_DIR(default:data)AGENT_DATABASE_URL(default:sqlite://data/agent.db)AGENT_API_KEY(default:local-dev-key)AGENT_API_SECRET(default:local-dev-secret)AGENT_SERVER_HOST(default:0.0.0.0)AGENT_SERVER_PORT(default:8080)AGENT_MAX_PARALLELISM(default:8)AGENT_MAX_GRAPH_DEPTH(default:6)AGENT_MAX_CONTEXT_TOKENS(default:16000)AGENT_WEBHOOK_TIMEOUT_SECS(default:5)VLLM_BASE_URL(default:http://127.0.0.1:8000)OPENAI_API_KEYANTHROPIC_API_KEYGEMINI_API_KEYMODEL_CLI_BACKEND(claude_code|codex)MODEL_CLI_COMMAND(default: backend별claude또는codex)MODEL_CLI_ARGSMODEL_CLI_TIMEOUT_MS(default:300000)MODEL_CLI_ONLY(default:true, 설정 시 planner/reviewer/tool-caller 포함 전체 AI 라우팅을 CLI provider로 고정)CODER_BACKEND(llm|claude_code|codex)CODER_COMMANDCODER_ARGSCODER_WORKING_DIRCODER_TIMEOUT_MS
MODEL_CLI_BACKEND를 설정하면 coder 노드뿐 아니라 planner/analyzer/reviewer/tool-caller 같은 일반 에이전트 노드도 CLI provider를 통해 실행됩니다. 규정상 OAuth/API key를 직접 쓰기 어려운 환경에서는 MODEL_CLI_ONLY=true로 두고 로컬에 로그인된 claude 또는 codex CLI를 사용하면 됩니다.