Grow Your Own Agent
Fork yoyo-evolve, edit two files, and run your own self-evolving coding agent on GitHub Actions.
What You Get
A coding agent that:
- Runs on GitHub Actions every ~8 hours
- Reads its own source code, picks improvements, implements them
- Writes a journal of its evolution
- Responds to community issues in its own voice
- Gets smarter over time through a persistent memory system
Quick Start
1. Fork the repo
Fork yologdev/yoyo-evolve on GitHub.
2. Edit your agent's identity
IDENTITY.md — your agent's constitution: name, mission, goals, and rules.
PERSONALITY.md — your agent's voice: how it writes, speaks, and expresses itself.
These are the only files you need to edit. Everything else auto-detects.
3. Choose your provider
yoyo supports 13+ providers out of the box. Pick the one that fits your budget and preferences:
| Provider | Env Var | Default Model | Notes |
|---|---|---|---|
anthropic | ANTHROPIC_API_KEY | claude-opus-4-6 | Default. Best overall quality. |
openai | OPENAI_API_KEY | gpt-4o | GPT-4o and o-series models |
google | GOOGLE_API_KEY | gemini-2.0-flash | Gemini models |
openrouter | OPENROUTER_API_KEY | anthropic/claude-sonnet-4-20250514 | Multi-provider gateway |
deepseek | DEEPSEEK_API_KEY | deepseek-chat | Very cost-effective |
groq | GROQ_API_KEY | llama-3.3-70b-versatile | Fast inference |
mistral | MISTRAL_API_KEY | mistral-large-latest | Mistral and Codestral models |
xai | XAI_API_KEY | grok-3 | Grok models |
ollama | (none — local) | llama3.2 | Free, runs on your hardware |
For the full list of providers and models, see Models & Providers.
Tip: Anthropic is the default and what yoyo itself uses to evolve. If you're unsure, start there. If cost is a concern, DeepSeek and Groq offer strong results at a fraction of the price. Ollama is free but requires local hardware.
4. Create a GitHub App
Your agent needs a GitHub App to commit code and interact with issues.
- Go to Settings > Developer settings > GitHub Apps > New GitHub App
- Give it your agent's name
- Set permissions:
- Repository > Contents: Read and write
- Repository > Issues: Read and write
- Repository > Discussions: Read and write (optional, for social features)
- Install it on your forked repo
- Note the App ID, Private Key (generate one), and Installation ID
- Installation ID: visit
https://github.com/settings/installationsand click your app — the ID is in the URL
- Installation ID: visit
5. Set repo secrets
In your fork, go to Settings > Secrets and variables > Actions and add:
| Secret | Description |
|---|---|
| Provider API key | API key for your chosen provider (see table in step 3) |
APP_ID | GitHub App ID |
APP_PRIVATE_KEY | GitHub App private key (PEM) |
APP_INSTALLATION_ID | GitHub App installation ID |
Set the API key secret matching your chosen provider. For example, if using Anthropic, add ANTHROPIC_API_KEY. If using OpenAI, add OPENAI_API_KEY. If using DeepSeek, add DEEPSEEK_API_KEY, and so on.
6. Enable the Evolution workflow
Go to Actions in your fork and enable the Evolution workflow. Your agent will start evolving on its next scheduled run, or trigger it manually with Run workflow.
What Each File Does
| File | Purpose |
|---|---|
IDENTITY.md | Agent's constitution — name, mission, goals, rules |
PERSONALITY.md | Agent's voice — writing style, personality traits |
ECONOMICS.md | What money/sponsorship means to the agent |
journals/JOURNAL.md | Chronological log of evolution sessions (auto-maintained) |
DAY_COUNT | Tracks the agent's current evolution day |
memory/ | Persistent learning system (auto-maintained) |
SPONSORS.md | Sponsor recognition (auto-maintained) |
Costs
Costs vary by provider and model:
- Anthropic Claude Opus —
$3-8 per session ($10-25/day at 3 sessions/day) - Anthropic Claude Sonnet — ~$1-3 per session, good balance of quality and cost
- DeepSeek — significantly cheaper, strong coding performance
- Groq — fast and affordable for smaller models
- Ollama — free (runs locally), but requires capable hardware
The default schedule runs ~3 sessions per day (8-hour gap between runs). To reduce costs, switch to a cheaper provider/model or reduce session frequency.
Customization
Change the provider and model
Set PROVIDER and MODEL environment variables in .github/workflows/evolve.yml:
env:
PROVIDER: openai
MODEL: gpt-4o
Or set just MODEL to use a different model within the default provider (Anthropic):
env:
MODEL: claude-sonnet-4-6
You can also edit the default directly in scripts/evolve.sh.
Change session frequency
Edit the cron schedule in .github/workflows/evolve.yml. The default 0 * * * * (every hour) is gated by an 8-hour gap in the script, so the agent runs ~3 times/day.
Add custom skills
Create markdown files with YAML frontmatter in the skills/ directory. The agent loads them automatically via --skills ./skills.
Sponsor system
The sponsor system auto-detects your GitHub Sponsors. No configuration needed — just set up GitHub Sponsors on your account.
The /update Command
The yoyo binary's /update command checks for releases from yologdev/yoyo-evolve, not your fork. This is expected behavior. As a fork maintainer, rebuild from source after pulling changes:
cargo build --release
In the future, an evolve portal will provide guided setup including custom update targets.
Optional: Dashboard Notifications
If you have a dashboard repo that accepts repository dispatch events, set a repo variable:
gh variable set DASHBOARD_REPO --body "your-user/your-dashboard" --repo your-user/your-fork
And add the DASHBOARD_TOKEN secret with a token that can dispatch to that repo.