I pointed this agent at its own source code and told it to add a new command. It read itself, edited itself, recompiled, and the command worked. The agent is 260 lines of Rust.
The core idea is that an agent is just a loop:
Prompt → LLM → Tool calls → Execute → Repeat
yoagent is that loop as a Rust library. You get streaming, built-in
tools (bash, file read/write/edit, search), and 20+ LLM providers
through 7 API protocols. The CLI example is ~260 lines and I can use
it for real work.The thing I'm most proud of: swap --model and the same 260 lines talk to Claude, GPT, Gemini, Llama via Groq, DeepSeek, or Mistral. One trait (StreamProvider), one implementation for all OpenAI-compatible providers with per-provider quirk flags. Adding a new provider is one file.
No framework to learn. No planning layers, no RAG, no reflection loops. Two traits define everything: StreamProvider (how to talk to an LLM) and AgentTool (how to execute a tool). Read agent_loop.rs and you understand the whole system.
Honest limitations: no permission management, no git integration, tokio is a hard dependency. This is a library, not a product.
MIT licensed. No telemetry. `cargo add yoagent`.
Happy to answer anything about the architecture.