無料・オープンソース · MIT

あなたのエージェント、
あなたの鍵、
あなたのターミナル。

Arlo は Rust 製のオープンソース agentic AI フレームワークです。Claude Code が提供するような機能を模しつつ、よりシンプルで汎用的に作られています。ツール呼び出し、Human-in-the-Loop(HITL)権限制御、sub-agent、MCP 連携、Agent Skills を備えたストリーミング実行ループを、対話型 TUI・ワンショット CLI・組み込み可能なライブラリとして提供します。

1 分ではじめる

stable 版 Rust が必要です(rustup からインストール)。

# clone してビルド
git clone https://github.com/kaija/arlo.git
cd arlo
cargo build --release
# 使用する provider の認証情報を設定
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 経由で外部ツールサーバーに接続し、組み込みのファイル・shell・web ツールと併用できます。

Agent Skills

.arlo/skills/(プロジェクト単位)と ~/.arlo/skills/(ユーザー単位)から Markdown 定義のスキルを検出・読み込み。テンプレート変数の置換にも対応します。

Human-in-the-Loop 権限制御

4 層構成の権限エンジン —— glob パターン、静的な allow/deny リスト、対話的な承認プロンプト —— により、すべてのツール呼び出しをあなたの管理下に置きます。

タスク管理と sub-agent

組み込みの Task/Todo ストア。独立した履歴を持つフォアグラウンド/バックグラウンドの sub-agent を起動でき、結果は確実に一度だけ返されます。

コンテキスト圧縮

3 層のパイプライン —— ツール結果の圧縮、セッションメモリ、完全な要約 —— により、長時間の実行でもコンテキストウィンドウに収めます。

ひとつのコア、3 つのインターフェース

同じ Rust コアを、必要な場所どこでも。

対話型 TUI

ratatui 製の REPL。エージェントと対話し、ツール呼び出しのストリームを眺め、その場で権限を承認できます。

ワンショット CLI

スクリプトや CI ジョブから arlo "prompt" をそのまま実行。プロンプトなしで起動すると対話型 REPL になります。

組み込みライブラリ

crate を自作の Rust アプリケーションに直接取り込み、実行ループを好きなインターフェースに接続できます。

5 つの小さな 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 ワークスペースに組み込む方法を示すものです。

Web チャット

Next.js · Docker

Next.js で作られたブラウザ用チャット UI が arlo --serve にプロキシします。テキストをストリーミング表示し、ツール呼び出しをインラインで見せ、Human-in-the-Loop の承認カードを描画するので、ブラウザを離れずに各ツール呼び出しを許可/拒否できます。

ブラウザ → Next.js(port 3000)→ Arlo(内部 :8080)
  • トークン到着に合わせてテキストをストリーミング更新
  • ツール呼び出しをインライン表示し、許可/常に許可/拒否を選択
  • 承認リクエストは 10 分で失効し、古いボタンが残らない
  • Arlo コンテナは完全に内部 —— ブラウザは Next.js プロキシにしか到達しない
cd integration/web
cp .env.example .env   # ARLO_MODEL と provider の鍵を設定
docker compose up --build
# http://localhost:3000 を開く
ソースを見る

Slack ボット

Python · Socket Mode · Docker

Python 製のプロキシ(arlo-slack)が Slack の Socket Mode websocket を保持し、スレッドを AG-UI 経由で arlo --serve に再生して、応答を Slack にストリーミングで返します。会話の保存先は Slack 自体 —— データベースもホストのマウントも不要です。

Slack ⇄ slack-proxy ⇄ arlo(websocket / HTTP + SSE)
  • チャンネルでの @mention か DM で開始。返信はスレッドを継続
  • メッセージは約 1 秒ごとに更新、長い回答はスレッド返信に分割
  • スレッドごとのキュー —— 2 通目は待機し、実行中のターンを壊さない
  • アクセス制御は 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 モードは承認プロンプトなしでツールを実行します。どちらのインテグレーションもコンテナ化された構成です —— 使い捨てコンテナ、ホストマウントなし、read-only な rootfs、tmpfs のワークスペース、メモリと pid の制限。Arlo のポートを直接公開せず、必ずプロキシ経由でアクセスしてください。