Website · GASP · Journal · Documentation · GitHub · DeepWiki · Issues · Follow on X
200 lines of Rust. Zero human code. One rule: evolve or die. yoyo reads its own source, picks what to improve, implements it, runs tests, and commits — every few hours, on its own. 128 days later: 115,000+ lines, 4,300+ tests, 77 source files.
A free, open-source coding agent for your terminal. It navigates codebases, makes multi-file edits, runs tests, manages git, understands project context, and recovers from failures — all from a streaming REPL with 90+ slash commands.
No human writes its code. No roadmap tells it what to do. It decides for itself.
Every ~8 hours, yoyo wakes up and:
→ Reads its own source code
→ Checks GitHub issues for community input
→ Plans what to improve
→ Makes changes, runs tests
→ If tests pass → commit. If not → revert.
→ Replies to issues as 🐙 yoyo-evolve[bot]
→ Pushes and goes back to sleep
Every 4 hours (offset), yoyo runs a social session:
→ Reads GitHub Discussions
→ Replies to conversations it's part of
→ Joins new discussions if it has something real to say
→ Occasionally starts its own discussion
→ Learns from interacting with humans
Daily, a synthesis job regenerates active memory:
→ Reads JSONL archives (learnings + social learnings)
→ Applies time-weighted compression (recent=full, old=themed)
→ Writes active context files loaded into every prompt
The entire history is in the git log and the journal.
Watch yoyo evolve in real time:
| What | Link |
|---|---|
| Latest journal | journals/JOURNAL.md |
| What it's learned | memory/active_learnings.md |
| Family lineage | LINEAGE.md |
| Portable state (GASP) | yoyo-gasp — clone + fold to restore yoyo, on any runtime |
| Evolution runs | GitHub Actions |
| Social sessions | GitHub Actions |
| Journey website | yologdev.github.io/yoyo-evolve |
Start a GitHub Discussion for conversation, or open a GitHub Issue for bugs and feature requests.
| Label | What it does |
|---|---|
agent-input |
Community suggestions, bug reports, feature requests — yoyo reads these every session |
agent-self |
Issues yoyo filed for itself as future TODOs |
agent-help-wanted |
Issues where yoyo is stuck and asking humans for help |
- Open a new issue
- Add the
agent-inputlabel - Describe what you want — be specific about the problem or idea
- Add a thumbs-up reaction to other issues you care about (higher votes = higher priority)
- Suggestions — tell it what to learn or build
- Bugs — tell it what's broken (include steps to reproduce)
- Challenges — give it a task and see if it can do it
- UX feedback — tell it what felt awkward or confusing
- Fixed: yoyo comments on the issue and closes it automatically
- Partial: yoyo comments with progress and keeps the issue open
- Won't fix: yoyo explains its reasoning and closes the issue All responses come with yoyo's personality — look for the 🐙.
yoyo's growth isn't just autonomous — you can influence it.
Every issue is scored by net votes: thumbs up minus thumbs down. yoyo prioritizes high-scoring issues and deprioritizes negative ones.
- See a great suggestion? Thumbs-up it to push it up the queue.
- See a bad idea, spam, or prompt injection attempt? Thumbs-down it to protect yoyo.
You're the immune system. Issues that the community votes down get buried — yoyo won't waste its time on them.
Every run uses the same flat 8h gap — sponsorship buys benefit tiers, not speed.
Monthly sponsors:
| Amount | Benefits |
|---|---|
| $5/mo | Issue priority (💖) |
| $10/mo | Priority + shoutout issue |
| $25/mo | Above + SPONSORS.md listing |
| $50/mo | Above + README listing |
One-time sponsors get the same tiers, time-limited (Genesis is permanent):
| Amount | Benefits |
|---|---|
| $5 | Issue priority (14 days) |
| $10 | Above + shoutout issue (30 days) |
| $20 | Above + SPONSORS.md listing (30 days) |
| $50 | Above + README listing (60 days) |
| $1,000 💎 | Genesis — all of the above, permanent |
- Streaming output — tokens arrive as they're generated, not after completion
- Multi-turn conversation with full history tracking
- Extended thinking — adjustable reasoning depth (off / minimal / low / medium / high)
- Subagent spawning —
/spawndelegates focused tasks to a child agent, now with parallel (--parallel) and background (--bg+/spawn collect) execution and an optional per-subagent--model; the model can also delegate subtasks automatically via a built-in sub-agent tool - Parallel tool execution — multiple tool calls run simultaneously
- Automatic retry with exponential backoff and rate-limit awareness
- Auto-continue — detects when the model stops mid-work and automatically sends follow-up prompts (up to 3 per user turn)
- Provider failover —
--fallbackflag switches to backup provider on API failure with configurable priority
| Tool | What it does |
|---|---|
bash |
Run shell commands with interactive confirmation, optional RTK token compression |
read_file |
Read files with optional offset/limit |
write_file |
Create or overwrite files with content preview |
edit_file |
Surgical text replacement with colored inline diffs |
search |
Regex-powered grep across files |
list_files |
Directory listing with glob filtering |
rename_symbol |
Project-wide symbol rename across all git-tracked files |
ask_user |
Ask the user questions mid-task for clarification (interactive mode only) |
web_search |
Search the web and read result snippets |
Sub-agents also auto-receive sub_agent and shared_state tools for delegating subtasks and sharing memory across a multi-agent run.
Works with 15 providers out of the box — switch mid-session with /provider:
Anthropic · OpenAI · Google · Ollama · OpenRouter · xAI · Groq · DeepSeek · Mistral · Cerebras · AWS Bedrock · GitHub Models · Zhipu (ZAI) · MiniMax · Custom (any OpenAI-compatible endpoint)
/diff— full status + diff with insertion/deletion summary/blame— colorized git blame with optional line ranges/commit— AI-generated commit messages from staged changes/undo— revert last commit, clean up untracked files/git— shortcuts forstatus,log,diff,branch,stash/pr— full PR workflow:list,view,create [--draft],diff,comment,checkout/review— AI-powered code review of staged/unstaged changes
/health— run build/test/clippy/fmt diagnostics (auto-detects Rust, Node, Python, Go, Make)/fix— run checks and auto-apply fixes for failures/test— detect project type and run the right test command/lint— detect project type and run the right linter (/lint pedantic,/lint strictfor Rust;/lint fixto auto-fix with AI;/lint unsafeto scan for unsafe code)/update— self-update to the latest release from GitHub/init— scan project and generate a starter YOYO.md context file/index— build a codebase index: file counts, language breakdown, key files/docs— look up docs.rs documentation for any Rust crate/tree— project structure visualization/find— fuzzy file search with scoring and ranked results/ast— structural code search using ast-grep (optional)/map— structural repo map showing file symbols and relationships with ast-grep backend/architect— dual-model mode: plan with a strong model, implement with a cheaper one/risk— per-file risk scoring from git-history signals (/risk accuracygrades past predictions)
/saveand/load— persist and restore sessions as JSON--continue/-c— resume last session on startup- Auto-save on exit — sessions saved automatically, including crash recovery
- Auto-compaction at 80% context usage, plus manual
/compact --context-strategy checkpoint— exit with code 2 when context is high (for pipeline restarts)/tokens— visual token usage bar with per-category context breakdown (system, user, assistant, tool calls, tool results, thinking)/cost— per-model input/output/cache pricing breakdown, with fleet pricing (Opus 4.8 / Sonnet 5 / Fable 5 / Haiku 4.5) read live from yoagent presets
- Project context files — auto-loads YOYO.md, CLAUDE.md, or
.yoyo/instructions.md - Git-aware context — recently changed files injected into system prompt
- Project memories —
/remember,/memories,/forgetfor persistent cross-session notes
- Interactive tool approval — confirm prompts for bash, write_file, and edit_file with preview
- "Always" option — approve once per session
--yes/-y— auto-approve all executions--allow/--deny— glob-based allowlist/blocklist for commands--allow-dir/--deny-dir— directory restrictions with path traversal prevention- Config file support via
[permissions]and[directories]sections
- Custom slash commands — drop
.mdfiles in.yoyo/commands/(project) or~/.yoyo/commands/(global) to register custom/commands - MCP servers —
--mcp <cmd>ormcp = [...]in.yoyo.tomlconnects to MCP servers via stdio transport - OpenAPI tools —
--openapi <spec>registers tools from OpenAPI specifications - Skills system —
--skills <dir>loads markdown skill files with YAML frontmatter; search GitHub for community skills (/skill search), install from local paths or GitHub repos (/skill install gh:user/repo) - RTK integration — auto-detects RTK and uses it to compress tool output by 60-90% (
--no-rtkto disable)
- Rustyline — arrow keys, Ctrl-A/E/K/W, persistent history
- Tab completion — slash commands with descriptions, file paths, model names, git subcommands, inline hints
- Multi-line input — backslash continuation and fenced code blocks
- Markdown rendering — headers, bold, italic, code blocks with syntax-labeled headers
- Syntax highlighting — Rust, Python, JS/TS, Go, Shell, C/C++, JSON, YAML, TOML
- Braille spinner while waiting for responses
- Conversation bookmarks —
/mark,/jump,/marks - Conversation search —
/searchwith highlighted matches - Shell escape —
/run <cmd>and!<cmd>bypass the AI entirely
curl -fsSL https://raw.githubusercontent.com/yologdev/yoyo-evolve/main/install.sh | bashirm https://raw.githubusercontent.com/yologdev/yoyo-evolve/main/install.ps1 | iexcargo install yoyo-agentgit clone https://github.com/yologdev/yoyo-evolve && cd yoyo-evolve && cargo install --path .# Interactive REPL (default)
ANTHROPIC_API_KEY=sk-... yoyo
# Single prompt (bare or with flag)
yoyo "explain this codebase"
yoyo -p "explain this codebase"
# Pipe input
echo "write a README" | yoyo
# Use a different provider
OPENAI_API_KEY=sk-... yoyo --provider openai --model gpt-4o
# With extended thinking
yoyo --thinking high
# With project skills
yoyo --skills ./skills
# Resume last session
yoyo --continue
# Write output to file
yoyo -p "generate a config" -o config.toml
# Auto-approve all tool use
yoyo --yesCreate .yoyo.toml in your project root, ~/.yoyo.toml in your home directory, or ~/.config/yoyo/config.toml globally:
model = "claude-sonnet-4-6"
provider = "anthropic"
thinking = "medium"
mcp = ["npx open-websearch@latest"]
[permissions]
allow = ["cargo *", "npm *"]
deny = ["rm -rf *"]
[directories]
allow = ["."]
deny = ["../secrets"]Create a YOYO.md (or CLAUDE.md) in your project root with build commands, architecture notes, and conventions. yoyo loads it automatically as system context. Or run /init to generate one.
| Command | Description |
|---|---|
/add <file|url> |
Add file or URL contents to the conversation |
/apply <patch> |
Apply a diff or patch file |
/architect |
Toggle architect mode — plan with a strong model, implement with a cheap one |
/ast <pattern> |
Structural code search via ast-grep (optional) |
/bg [subcmd] |
Manage background shell processes: run, list, output, kill |
/blame <file> |
Git blame with colored output (/blame file:10-20 for ranges) |
/cd [dir] |
Change the working directory (~ and relative paths supported) |
/changelog [N] |
Show recent git commit history (default: 15) |
/changes |
Show files modified during this session |
/checkpoint [sub] |
Named file-state snapshots (save, list, restore, diff, delete) |
/clear |
Clear conversation history |
/clear! |
Force-clear conversation without confirmation |
/commit [msg] |
Commit staged changes (AI-generates message if omitted) |
/compact |
Compact conversation to save context |
/config [show|edit] |
Show settings, config file path, or open it in $EDITOR |
/context [system|tokens|files] |
Show project context, system prompt, token budget, or referenced files |
/copy |
Copy text to the system clipboard |
/cost |
Show session cost breakdown |
/diff |
Git diff summary of uncommitted changes |
/docs <crate> |
Look up docs.rs documentation |
/doctor |
Run environment diagnostics |
/evolution [N] |
Show evolution history, session stats, and CI run status |
/exit, /quit |
Exit yoyo |
/explain <file> |
Ask the agent to explain code from a file |
/export |
Export the conversation as markdown |
/extended <task> |
Run the agent autonomously on a long task |
/extract |
Extract a function or block to a new file |
/find <pattern> |
Fuzzy-search project files by name |
/fix |
Auto-fix build/lint errors |
/forget <n> |
Remove a saved memory by index |
/fork [subcmd] |
Branch conversations and switch between them |
/git <subcmd> |
Quick git: status, log, add, diff, branch, stash |
/goal [subcmd] |
Set, view, or check progress on a session goal |
/grep <pattern> |
Search file contents |
/health |
Run project health checks |
/help |
Grouped command reference |
/history [detail] |
Conversation summary (detail for a per-turn breakdown) |
/hooks |
Show active hooks (pre/post tool execution) |
/index |
Build a lightweight codebase index |
/init |
Generate a starter YOYO.md |
/jump <name> |
Jump to a conversation bookmark |
/lint [pedantic|strict|fix|unsafe] |
Auto-detect and run project linter (strictness levels for Rust) |
/load [path] |
Load session from file |
/loop <N|until-pass> <prompt> |
Repeat a prompt in a polling loop |
/map |
Structural repo map of file symbols (ast-grep backend) |
/mark <name> |
Bookmark current point in conversation |
/marks |
List all conversation bookmarks |
/mcp |
List and manage MCP server connections |
/memories |
List or search project memories |
/model <name|list|info> |
Switch, list, or inspect models |
/move |
Move a method between files |
/open <file> |
Open a file in your editor |
/outline [symbol] |
Search for symbols or show file structure |
/permissions |
Show active security and permission configuration |
/plan [subcmd] |
Plan mode toggle, one-shot plan, show/apply/clear |
/pr [subcmd] |
PR workflow: list, view, create, diff, comment, checkout |
/profile |
Session statistics (tokens, cost, time, turns) |
/provider <name> |
Switch or show the current provider |
/quick <question> |
Fast answer without tools (single-turn, no agent loop) |
/read |
Toggle read-only oracle mode — analyze but not modify |
/refactor |
Refactoring tools (extract, rename, move) |
/remember <note> |
Save a persistent project memory |
/rename <old> <new> |
Rename a symbol across the project |
/retry |
Re-send the last input (--with "..." to refine) |
/review [path] |
AI code review (--quick, --thorough) |
/revisit |
Review closed/shelved issues that may now be feasible |
/rewind |
Restore the conversation auto-stashed by /clear |
/risk [subcmd] |
Per-file risk scoring from git history (/risk accuracy) |
/run <cmd> |
Run a shell command directly (no AI, no tokens) |
/save [path] |
Save session to file |
/search <query> |
Search conversation history |
/security |
Run a dependency vulnerability scan |
/side <question> |
Ask a quick question without affecting the conversation |
/skill [subcmd] |
List, inspect, install, and search for skills |
/spawn <task> |
Run a task in a sub-agent (--parallel, --bg, --model) |
/stash |
Stash conversation and start fresh |
/status |
Show session dashboard (model, modes, goal, watch, changes) |
/teach [on|off] |
Toggle teach mode — explains reasoning as it works |
/test |
Auto-detect and run project tests |
/think [level] |
Show or change thinking level |
/tips |
Context-sensitive feature suggestions |
/todo [subcmd] |
Track tasks (add, done, remove, clear, board) |
/tokens |
Show token usage, context window, and per-category breakdown |
/tree [depth] |
Show project directory tree |
/undo |
Undo last turn's changes, all uncommitted, or last commit |
/update |
Self-update to the latest release |
/version |
Show version, build metadata, and target |
/watch |
Auto-run lint + test after file changes |
/web <url|search> |
Fetch a web page or search the web |
Want your own self-evolving agent? Fork this repo, edit two files, and you're running:
- Fork yologdev/yoyo-evolve
- Edit
IDENTITY.md(goals, rules) andPERSONALITY.md(voice, tone) - Create a GitHub App and set secrets (
ANTHROPIC_API_KEY,APP_ID,APP_PRIVATE_KEY,APP_INSTALLATION_ID) - Enable the Evolution workflow
Everything else auto-detects. See the full guide for details.
src/ 77 modules, ~115,000 lines of Rust
main.rs Entry point, CLI flags, run modes (REPL / single-prompt / piped)
agent_builder.rs AgentConfig, build_agent, MCP collision detection, provider fallback
cli.rs · cli_config.rs CLI parsing, Config, constants, system prompt
dispatch.rs · dispatch_sub.rs REPL /command routing + bare `yoyo <subcmd>` routing
commands*.rs 30+ focused modules — one cluster of slash commands each
(git, info, project, search, skill, map, bg, goal, session, …)
repl.rs Interactive REPL: tab completion, multi-line input, auto-continue
prompt.rs Prompt execution + streaming (prompt_retry / prompt_utils / prompt_budget)
tools.rs Builtin tools; tool_wrappers.rs decorators; smart_edit.rs fuzzy edit recovery
format/ Rendering: mod, diff, output, highlight, cost, markdown, tools (7 modules)
hooks.rs Hook trait, registry, AuditHook, tool wrapping
context.rs · memory.rs Project context loading; cross-session project memory
watch.rs Watch mode (lint → fix → test → fix) + post-prompt auto-fix loop
rtk.rs · safety.rs · update.rs · providers.rs · config.rs RTK, bash safety, self-update, providers, config
tests/
integration.rs 89 subprocess-based integration tests
docs/ mdbook source (book.toml + src/)
site/ gitignored build output (built by the Pages workflow)
scripts/
evolve.sh Evolution pipeline (plan → implement → respond)
skill_evolve.sh Autonomous skill evolution (refine / create / retire its own skills)
social.sh Social session (discussions → reply → learn)
extract_trajectory.py Trajectory awareness — recent outcomes injected into planning
format_issues.py · format_discussions.py · yoyo_context.sh · refresh_sponsors.py · build_site.py
memory/
learnings.jsonl · social_learnings.jsonl Append-only archives (source of truth, never compressed)
active_learnings.md · active_social_learnings.md Synthesized prompt context (regenerated daily)
skills/ 14 skills — 7 core (immutable): self-assess, evolve, communicate, research,
skill-evolve, skill-creator, analyze-trajectory
+ social, family, release, blindspot, synthesis, explore-codebase, yopedia
4,300+ tests (unit + integration) covering CLI flags, command parsing, error quality, exit codes, output formatting, edge cases, project detection, fuzzy scoring, git operations, session management, markdown rendering, cost calculation, permission logic, streaming behavior, and more.
yoyo also uses mutation testing (cargo-mutants) to find gaps in the test suite. Every surviving mutant is a line of code that isn't truly tested.
cargo install cargo-mutants
cargo mutantsSee mutants.toml for the configuration and docs/src/contributing/mutation-testing.md for the full guide.
yoagent — minimal agent loop in Rust. The library that makes this possible.
If you use yoyo-evolve in a research paper, please cite our work as follows:
@misc{yoyo2026yoyoevolve,
title = {yoyo-evolve: A Coding Agent That Evolves Itself},
author = {Yuanhao and {yoyo}},
year = {2026},
howpublished = {\url{https://github.com/yologdev/yoyo-evolve}},
note = {Open-source self-evolving coding agent}
}💎 Genesis Sponsors:

