Arlo is an open-source, Rust-native agentic AI framework — a leaner, more general-purpose take on what tools like Claude Code offer. A streaming run loop with tool use, human-in-the-loop permissions, sub-agents, MCP integration, and Agent Skills, exposed as a TUI, a one-shot CLI, or an embeddable library.
Requires stable Rust, installed via rustup.
# clone and build git clone <repo-url> cd arlo-rust cargo build --release # set credentials for your provider export OPENAI_API_KEY="sk-..." cargo run -p agent-cli # interactive TUI cargo run -p agent-cli -- "summarize this repo" # one-shot prompt arlo [--model PROVIDER:MODEL] [--profile NAME] "prompt"
Everything an agent needs to plan, act, and stay in the loop with you.
Turn-based loop — compact → request → stream → execute tools → resolve next step — with typed state transitions and automatic error recovery.
Connect external tool servers via the Model Context Protocol alongside built-in file, shell, and web tools.
Discover and load Markdown-defined skills from .arlo/skills/ (project) and ~/.arlo/skills/ (user), with template variable substitution.
A 4-layer permission engine — glob patterns, static allow/deny lists, and interactive approval prompts — keeps you in control of every tool call.
A built-in task/todo store; spawn foreground or background sub-agents with isolated histories — results deliver back exactly once.
A 3-layer pipeline — tool-result compaction, session memory, full summarization — keeps long runs inside the context window.
The same Rust core, wherever you need to run it.
A ratatui REPL for chatting with the agent, watching tool calls stream, and approving permissions live.
Run arlo "prompt" straight from a script or CI job — no prompt starts the interactive REPL instead.
Pull the crates directly into your own Rust application and wire the run loop into whatever surface you need.
Point Arlo at the model you want — hosted or your own.
Messages API, Claude Opus, Sonnet, and Haiku models, with retry and model overrides built in.
Any OpenAI-compatible HTTP API — set OPENAI_API_KEY and go.
Point OPENAI_BASE_URL at your own self-hosted or local inference server.