MCPHub LabRegistryyologdev/yoyo-evolve
yologdev

yologdev/yoyo evolve

Built by yologdev โ€ข 1,386 stars

What is yologdev/yoyo evolve?

A coding agent that evolves itself. One commit per day.

How to use yologdev/yoyo evolve?

1. Install a compatible MCP client (like Claude Desktop). 2. Open your configuration settings. 3. Add yologdev/yoyo evolve using the following command: npx @modelcontextprotocol/yologdev-yoyo-evolve 4. Restart the client and verify the new tools are active.
๐Ÿ›ก๏ธ Scoped (Restricted)
npx @modelcontextprotocol/yologdev-yoyo-evolve --scope restricted
๐Ÿ”“ Unrestricted Access
npx @modelcontextprotocol/yologdev-yoyo-evolve

Key Features

Native MCP Protocol Support
Real-time Tool Activation & Execution
Verified High-performance Implementation
Secure Resource & Context Handling

Optimized Use Cases

Extending AI models with custom local capabilities
Automating system workflows via natural language
Connecting external data sources to LLM context windows

yologdev/yoyo evolve FAQ

Q

Is yologdev/yoyo evolve safe?

Yes, yologdev/yoyo evolve follows the standardized Model Context Protocol security patterns and only executes tools with explicit user-granted permissions.

Q

Is yologdev/yoyo evolve up to date?

yologdev/yoyo evolve is currently active in the registry with 1,386 stars on GitHub, indicating its reliability and community support.

Q

Are there any limits for yologdev/yoyo evolve?

Usage limits depend on the specific implementation of the MCP server and your system resources. Refer to the official documentation below for technical details.

Official Documentation

View on GitHub
<p align="center"> <img src="assets/banner.png" alt="yoyo โ€” a coding agent that evolves itself" width="100%"> </p> <p align="center"> <a href="https://yoyo.yolog.dev/">Website</a> ยท <a href="https://yoyo-gasp.yolog.dev/">GASP</a> ยท <a href="https://yologdev.github.io/yoyo-evolve/">Journal</a> ยท <a href="https://yologdev.github.io/yoyo-evolve/book/">Documentation</a> ยท <a href="https://github.com/yologdev/yoyo-evolve">GitHub</a> ยท <a href="https://deepwiki.com/yologdev/yoyo-evolve">DeepWiki</a> ยท <a href="https://github.com/yologdev/yoyo-evolve/issues">Issues</a> ยท <a href="https://x.com/yuanhao">Follow on X</a> </p> <p align="center"> <a href="https://github.com/yologdev/yoyo-evolve/stargazers"><img src="https://img.shields.io/github/stars/yologdev/yoyo-evolve?style=flat" alt="stars"></a> <a href="https://crates.io/crates/yoyo-agent"><img src="https://img.shields.io/crates/v/yoyo-agent" alt="crates.io"></a> <a href="https://github.com/yologdev/yoyo-evolve/actions"><img src="https://img.shields.io/github/actions/workflow/status/yologdev/yoyo-evolve/evolve.yml?label=evolution&logo=github" alt="evolution"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="license MIT"></a> <a href="https://github.com/yologdev/yoyo-evolve/commits/main"><img src="https://img.shields.io/github/last-commit/yologdev/yoyo-evolve" alt="last commit"></a> </p>

yoyo: A Coding Agent That Evolves Itself

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.

How It Evolves

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.

Live Growth

Watch yoyo evolve in real time:

WhatLink
Latest journaljournals/JOURNAL.md
What it's learnedmemory/active_learnings.md
Family lineageLINEAGE.md
Portable state (GASP)yoyo-gasp โ€” clone + fold to restore yoyo, on any runtime
Evolution runsGitHub Actions
Social sessionsGitHub Actions
Journey websiteyologdev.github.io/yoyo-evolve

Talk to It

Start a GitHub Discussion for conversation, or open a GitHub Issue for bugs and feature requests.

Labels

LabelWhat it does
agent-inputCommunity suggestions, bug reports, feature requests โ€” yoyo reads these every session
agent-selfIssues yoyo filed for itself as future TODOs
agent-help-wantedIssues where yoyo is stuck and asking humans for help

How to submit

  1. Open a new issue
  2. Add the agent-input label
  3. Describe what you want โ€” be specific about the problem or idea
  4. Add a thumbs-up reaction to other issues you care about (higher votes = higher priority)

What to ask

  • 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

What happens after

  • 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 ๐Ÿ™.

Shape Its Evolution

yoyo's growth isn't just autonomous โ€” you can influence it.

Guard 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.

Sponsor

<a href="https://github.com/sponsors/yologdev">GitHub Sponsors</a> ยท <a href="https://ko-fi.com/yuanhao">Ko-fi</a>

Every run uses the same flat 8h gap โ€” sponsorship buys benefit tiers, not speed. And every sponsor, any amount, is listed in this README permanently. Recognition doesn't expire here.

Monthly sponsors:

AmountBenefits
$5/moIssue priority (๐Ÿ’–)
$10/moPriority + shoutout issue

One-time sponsors:

AmountBenefits
$5Issue priority (14 days)
$10Above + shoutout issue (30 days)
$1,000 ๐Ÿ’ŽGenesis โ€” permanent priority + top billing

Features

๐Ÿ™ Agent Core

  • 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 โ€” /spawn delegates 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 โ€” --fallback flag switches to backup provider on API failure with configurable priority

๐Ÿ› ๏ธ Tools

ToolWhat it does
bashRun shell commands with interactive confirmation, optional RTK token compression
read_fileRead files with optional offset/limit
write_fileCreate or overwrite files with content preview
edit_fileSurgical text replacement with colored inline diffs
searchRegex-powered grep across files
list_filesDirectory listing with glob filtering
rename_symbolProject-wide symbol rename across all git-tracked files
ask_userAsk the user questions mid-task for clarification (interactive mode only)
web_searchSearch 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.

๐Ÿ”Œ Multi-Provider Support

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)

๐Ÿ“‚ Git Integration

  • /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 for status, log, diff, branch, stash
  • /pr โ€” full PR workflow: list, view, create [--draft], diff, comment, checkout
  • /review โ€” AI-powered code review of staged/unstaged changes

๐Ÿ—๏ธ Project Tooling

  • /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 strict for Rust; /lint fix to auto-fix with AI; /lint unsafe to 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 accuracy grades past predictions)

๐Ÿ’พ Session Management

  • /save and /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

๐Ÿง  Context & Memory

  • 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, /forget for persistent cross-session notes

๐Ÿ” Permission System

  • 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

๐Ÿงฉ Extensibility

  • Custom slash commands โ€” drop .md files in .yoyo/commands/ (project) or ~/.yoyo/commands/ (global) to register custom /commands
  • MCP servers โ€” --mcp <cmd> or mcp = [...] in .yoyo.toml connects 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-rtk to disable)

โœจ REPL Experience

  • 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 โ€” /search with highlighted matches
  • Shell escape โ€” /run <cmd> and !<cmd> bypass the AI entirely

Quick Start

Install (macOS & Linux)

curl -fsSL https://raw.githubusercontent.com/yologdev/yoyo-evolve/main/install.sh | bash

Install (Windows PowerShell)

irm https://raw.githubusercontent.com/yologdev/yoyo-evolve/main/install.ps1 | iex

Or install from crates.io

cargo install yoyo-agent

Or build from source

git clone https://github.com/yologdev/yoyo-evolve && cd yoyo-evolve && cargo install --path .

Run

# 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 --yes

Configure

Create .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"]

Project Context

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.

All Commands

CommandDescription
/add <file|url>Add file or URL contents to the conversation
/apply <patch>Apply a diff or patch file
/architectToggle 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)
/changesShow files modified during this session
/checkpoint [sub]Named file-state snapshots (save, list, restore, diff, delete)
/clearClear conversation history
/clear!Force-clear conversation without confirmation
/commit [msg]Commit staged changes (AI-generates message if omitted)
/compactCompact 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
/copyCopy text to the system clipboard
/costShow session cost breakdown
/diffGit diff summary of uncommitted changes
/docs <crate>Look up docs.rs documentation
/doctorRun environment diagnostics
/evolution [N]Show evolution history, session stats, and CI run status
/exit, /quitExit yoyo
/explain <file>Ask the agent to explain code from a file
/exportExport the conversation as markdown
/extended <task>Run the agent autonomously on a long task
/extractExtract a function or block to a new file
/find <pattern>Fuzzy-search project files by name
/fixAuto-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
/healthRun project health checks
/helpGrouped command reference
/history [detail]Conversation summary (detail for a per-turn breakdown)
/hooksShow active hooks (pre/post tool execution)
/indexBuild a lightweight codebase index
/initGenerate 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
/mapStructural repo map of file symbols (ast-grep backend)
/mark <name>Bookmark current point in conversation
/marksList all conversation bookmarks
/mcpList and manage MCP server connections
/memoriesList or search project memories
/model <name|list|info>Switch, list, or inspect models
/moveMove a method between files
/open <file>Open a file in your editor
/outline [symbol]Search for symbols or show file structure
/permissionsShow 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
/profileSession statistics (tokens, cost, time, turns)
/provider <name>Switch or show the current provider
/quick <question>Fast answer without tools (single-turn, no agent loop)
/readToggle read-only oracle mode โ€” analyze but not modify
/refactorRefactoring tools (extract, rename, move)
/remember <note>Save a persistent project memory
/rename <old> <new>Rename a symbol across the project
/retryRe-send the last input (--with "..." to refine)
/review [path]AI code review (--quick, --thorough)
/revisitReview closed/shelved issues that may now be feasible
/rewindRestore 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
/securityRun 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)
/stashStash conversation and start fresh
/statusShow session dashboard (model, modes, goal, watch, changes)
/teach [on|off]Toggle teach mode โ€” explains reasoning as it works
/testAuto-detect and run project tests
/think [level]Show or change thinking level
/tipsContext-sensitive feature suggestions
/todo [subcmd]Track tasks (add, done, remove, clear, board)
/tokensShow token usage, context window, and per-category breakdown
/tree [depth]Show project directory tree
/undoUndo last turn's changes, all uncommitted, or last commit
/updateSelf-update to the latest release
/versionShow version, build metadata, and target
/watchAuto-run lint + test after file changes
/web <url|search>Fetch a web page or search the web

Grow Your Own

Want your own self-evolving agent? Fork this repo, edit two files, and you're running:

  1. Fork yologdev/yoyo-evolve
  2. Edit IDENTITY.md (goals, rules) and PERSONALITY.md (voice, tone)
  3. Create a GitHub App and set secrets (ANTHROPIC_API_KEY, APP_ID, APP_PRIVATE_KEY, APP_INSTALLATION_ID)
  4. Enable the Evolution workflow

Everything else auto-detects. See the full guide for details.

Architecture

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

Test Quality

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 mutants

See mutants.toml for the configuration and docs/src/contributing/mutation-testing.md for the full guide.

Built On

yoagent โ€” minimal agent loop in Rust. The library that makes this possible.

Citation

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}
}

Star History

Star History Chart

Sponsors

<!-- SPONSORS_START --> <!-- This block is auto-maintained by scripts/refresh_sponsors.py โ€” do not edit by hand. -->

๐Ÿ’Ž Genesis Sponsors:

<a href="https://github.com/zhenfund" title="@zhenfund โ€” $1,000"><img src="https://github.com/zhenfund.png?size=160" width="80" height="80" alt="@zhenfund" /></a>

๐Ÿš€ Sponsors:

<a href="https://github.com/kojiyang" title="@kojiyang โ€” $200"><img src="https://github.com/kojiyang.png?size=128" width="64" height="64" alt="@kojiyang" /></a>

<!-- SPONSORS_END -->

License

MIT

Global Ranking

8.5
Trust ScoreMCPHub Index

Based on codebase health & activity.

Manual Config

{ "mcpServers": { "yologdev-yoyo-evolve": { "command": "npx", "args": ["yologdev-yoyo-evolve"] } } }