Meet riribot 🤖
The AI agent that
has it all
Magical ✨ — Readable 📖 — Blazing Fast ⚡
Built in Python, under 2,000 lines of code.
✨
🐍
⚡
Standing on the shoulders
of open source giants
riribot didn't emerge from nowhere. It studied the best AI agents in the wild and distilled their finest qualities into one lean, magical package.
fluid agent experience
beautifully under 4,000 lines
and blazing throughput
riribot ✨
The synthesis of everything great. Took openclaw's magic, nanobot's readability, and zeroclaw's speed — then cut the code in half.
Everything you need.
Nothing you don't.
riribot ships with a surprisingly powerful feature set for its tiny footprint.
Magical DX
Inspired by openclaw's TypeScript magic — riribot feels delightful to use and extend. Agent flows that just work.
Human-Readable Code
The entire codebase fits under 2,000 lines of clean Python. Audit it, fork it, understand it in an afternoon.
Blazing Performance
Took zeroclaw's obsession with speed and applied it in Python — async-first, minimal overhead, maximum throughput.
Plug & Play Tools
Dead-simple tool registration. Define a function, decorate it, and riribot's agent runtime handles the rest.
LLM Agnostic
Swap models at will. OpenAI, Anthropic, Gemini, local Ollama — one config change and you're running.
Truly Open Source
MIT licensed. No telemetry, no SaaS lock-in. Fork it, ship it, sell it. It's yours to build on.
How does riribot stack up?
Seeing is believing. Here's how riribot compares to its inspiration sources.
| Feature | openclaw 🪄 | nanobot 📖 | zeroclaw ⚡ | riribot ✨ |
|---|---|---|---|---|
| Language | TypeScript | Python | Rust | Python 🐍 |
| Lines of Code | Large | <4,000 | Medium | <2,000 📏 |
| Magical DX | ✓ Yes | ~ Partial | ✗ No | ✓ Yes ✨ |
| Readability | ~ Partial | ✓ Yes | ✗ Rust | ✓ Yes 📖 |
| Performance | ~ OK | ~ OK | ✓ Blazing | ✓ Blazing ⚡ |
| Open Source | ✓ | ✓ | ✓ | ✓ MIT 🔓 |
| Easy to Audit | ✗ | ✓ | ✗ | ✓ Tiny 🔬 |
Hello, riribot
This is what clean, magical Python looks like.
# riribot — magical, tiny, fast ✨ from riribot import Agent, tool # Define a tool — it's just a function 🍃 @tool def search_web(query: str) -> str: """Search the web and return results.""" return fetch(query) # Spin up your agent ⚡ agent = Agent( name="my-agent", model="gemini-2.0-flash", tools=[search_web], ) # Run it — magic happens here ✨ result = await agent.run("What is riribot?") print(result) # <2000 lines made this possible
Ready to build something magical? ✨
Join the riribot community. Star the repo, open a PR, and help us keep it under 2,000 lines 😄