무료 & 오픈소스 · MIT

당신의 에이전트,
당신의 키,
당신의 터미널.

Arlo는 Rust로 만든 오픈소스 agentic AI 프레임워크입니다. Claude Code 같은 도구가 제공하는 기능을 더 가볍고 범용적으로 다시 만든 것이라고 보면 됩니다. 도구 호출, Human-in-the-Loop(HITL) 권한 제어, 서브 에이전트, MCP 연동, Agent Skills를 갖춘 스트리밍 실행 루프를 대화형 TUI, 원샷 CLI, 임베더블 라이브러리로 제공합니다.

1분이면 실행됩니다

stable 버전 Rust가 필요합니다. rustup으로 설치하세요.

# 클론 후 빌드
git clone https://github.com/kaija/arlo.git
cd arlo
cargo build --release
# 사용할 프로바이더 인증 정보 설정
export OPENAI_API_KEY="sk-..."

cargo run -p agent-cli                          # 대화형 TUI
cargo run -p agent-cli -- "summarize this repo"  # 원샷 프롬프트

arlo [--model PROVIDER:MODEL] [--profile NAME] "prompt"

작은 코어, 충분한 기능

에이전트가 계획하고, 실행하고, 사용자와 계속 호흡을 맞추는 데 필요한 모든 것.

Agentic 실행 루프

턴 단위 루프 — 컨텍스트 압축 → 요청 → 스트리밍 → 도구 실행 → 다음 단계 결정 — 을 타입이 명시된 상태 전이와 자동 오류 복구와 함께 수행합니다.

MCP 클라이언트

Model Context Protocol로 외부 도구 서버에 연결해, 내장 파일 · 셸 · 웹 도구와 함께 사용할 수 있습니다.

Agent Skills

.arlo/skills/(프로젝트)와 ~/.arlo/skills/(사용자)에서 Markdown으로 정의된 스킬을 찾아 불러오며, 템플릿 변수 치환도 지원합니다.

Human-in-the-Loop 권한 제어

4단계 권한 엔진 — glob 패턴, 정적 allow/deny 목록, 대화형 승인 프롬프트 — 으로 모든 도구 호출을 사용자가 통제합니다.

작업 관리와 서브 에이전트

내장 Task/Todo 저장소를 제공하며, 독립된 히스토리를 가진 포그라운드 · 백그라운드 서브 에이전트를 띄울 수 있습니다. 결과는 정확히 한 번만 전달됩니다.

컨텍스트 압축

3단계 파이프라인 — 도구 결과 압축, 세션 메모리, 전체 요약 — 으로 긴 실행에서도 컨텍스트 윈도우를 넘지 않습니다.

하나의 코어, 세 가지 인터페이스

같은 Rust 코어를, 필요한 곳 어디서나.

대화형 TUI

ratatui로 만든 REPL에서 에이전트와 대화하고, 도구 호출 스트림을 지켜보고, 권한을 즉석에서 승인합니다.

원샷 CLI

스크립트나 CI 작업에서 arlo "prompt"를 바로 실행하세요. 프롬프트를 주지 않으면 대화형 REPL이 시작됩니다.

임베더블 라이브러리

crate를 직접 Rust 애플리케이션에 가져와, 실행 루프를 원하는 인터페이스에 연결하세요.

작은 crate 다섯 개, 각각 교체 가능

agent-core agent-llm agent-tools agent-mcp agent-cli

설계부터 프로바이더 비종속

원하는 모델에 Arlo를 연결하세요 — 호스팅형이든 직접 운영하든.

Anthropic

Messages API로 Claude Opus · Sonnet · Haiku 모델을 지원하며, 재시도와 모델 오버라이드가 기본 내장되어 있습니다.

OpenAI 호환

OpenAI 호환 HTTP API라면 무엇이든 — OPENAI_API_KEY만 설정하면 됩니다.

로컬 모델 서버

OPENAI_BASE_URL을 직접 운영하는 로컬 추론 서버로 지정하세요.

어디에나 배포

Arlo는 HTTP + SSE 위에서 AG-UI를 말하는 serve 모드를 제공합니다. 아래 레퍼런스 연동은 추가 인프라 없이 브라우저나 Slack 워크스페이스에 연결하는 방법을 보여줍니다.

웹 채팅

Next.js · Docker

Next.js로 만든 브라우저 채팅 UI가 arlo --serve로 프록시합니다. 텍스트를 스트리밍하고, 도구 호출을 인라인으로 보여주며, Human-in-the-Loop 승인 카드를 렌더링해 브라우저를 벗어나지 않고 각 도구 호출을 허용하거나 거부할 수 있습니다.

브라우저 → Next.js (포트 3000) → Arlo (내부 :8080)
  • 토큰이 도착하는 대로 텍스트를 스트리밍 업데이트
  • 도구 호출을 인라인 표시하고 허용 / 항상 허용 / 거부 선택
  • 승인 요청은 10분 후 만료되어 오래된 버튼이 남지 않음
  • Arlo 컨테이너는 완전히 내부용 — 브라우저는 Next.js 프록시에만 접근
cd integration/web
cp .env.example .env   # ARLO_MODEL과 프로바이더 키 설정
docker compose up --build
# http://localhost:3000 열기
소스 보기

Slack 봇

Python · Socket Mode · Docker

Python 프록시(arlo-slack)가 Slack Socket Mode 웹소켓을 유지하면서 스레드를 AG-UI로 arlo --serve에 재생하고, 응답을 다시 Slack으로 스트리밍합니다. 대화 저장소는 Slack 자체입니다 — 데이터베이스도, 호스트 마운트도 없습니다.

Slack ⇄ slack-proxy ⇄ arlo (웹소켓 / HTTP + SSE)
  • 채널에서 @멘션하거나 DM으로 시작하고, 답장은 스레드를 이어감
  • 메시지가 약 1초 간격으로 갱신되며, 긴 답변은 스레드 답글로 분할
  • 스레드별 큐 — 두 번째 메시지는 대기하며 진행 중인 턴을 방해하지 않음
  • 접근 제어는 SLACK_ALLOWED_CHANNELS / SLACK_ALLOWED_USERS 허용 목록으로
cd integration/slack
cp .env.example .env   # SLACK_BOT_TOKEN, SLACK_APP_TOKEN, ARLO_MODEL 설정
docker compose up --build
소스 보기

serve 모드는 승인 프롬프트 없이 도구를 실행합니다. 두 연동 모두 컨테이너 기반 배포를 사용합니다 — 일회용 컨테이너, 호스트 마운트 없음, 읽기 전용 rootfs, tmpfs 작업 공간, 메모리 및 pid 제한. Arlo 포트를 직접 노출하지 말고 항상 프록시를 거치세요.