A template for building autonomously-evolving software projects with Gas Town.
yoyo-evolve — a self-evolving coding agent that grows one commit at a time.
rig-seed is a scaffold you fork to create a new project that evolves itself. Every day (or on your configured schedule), an AI agent:
- Reads the project's specs, roadmap, and recent journal
- Self-assesses the current state of the code
- Picks 1-3 improvements to make
- Implements them with tests
- Journals what happened
- Submits for automated merge (build-gated)
The agent is coordinated by Gas Town's Mayor, executed as a Polecat (worker), and quality-gated by the Refinery (merge queue).
Fork this repo or use it as a GitHub template. This gives you all the evolution state files with sensible defaults.
Open SPECS.md and describe what you want this project to become. Be
specific — the agent uses this to guide its work. If you leave it empty,
the agent will read specs from the bead description on its first run.
gt rig add myproject <your-git-url>Add an evolve section to your rig's config:
{ "evolve": { "enabled": true, "github_repo": "you/your-repo" } }gt rig undock myproject && gt rig start myprojectThe Deacon's evolve plugin triggers daily cycles automatically. Or trigger
one manually by creating a bead with the mol-evolve formula.
- Check
JOURNAL.mdto see what the agent did each session - File GitHub issues with the
agent-inputlabel to steer priorities - Review
ROADMAP.mdfor upcoming work - Adjust
.evolve/config.tomlfor schedule and limits
| File | Purpose | Mutable? |
|---|---|---|
IDENTITY.md |
Project constitution and rules | No (immutable) |
PERSONALITY.md |
Agent voice and communication style | Yes (rarely) |
SPECS.md |
What we're building (filled on first run) | Yes |
ROADMAP.md |
Priorities, milestones, future work | Yes |
JOURNAL.md |
Session log (append-only, never delete) | Append only |
LEARNINGS.md |
Accumulated technical insights | Yes |
NEXT_STEPS.md |
Structured planning intent for next session | Overwritten each session |
SESSION_COUNT |
Current evolution session number | Auto-incremented |
.evolve/config.toml |
Evolution settings (frequency, limits) | Yes |
.evolve/IMMUTABLE.txt |
Files the agent cannot modify | Human only |
formulas/mol-evolve.formula.toml |
Evolution workflow formula | Yes (rarely) |
.claude/CLAUDE.md |
Instructions for evolution workers | Yes |
Run the template validation script to check that all required files are present:
./validate.shThis is also available as an example CI workflow you can add to your forked repo.
View a summary of your project's evolution history:
./metrics.shShows session count, commits per session, velocity, roadmap progress, and more.
Use ./metrics.sh -q for machine-readable key=value output, or
./metrics.sh --format=json for JSON, --format=csv for spreadsheet-friendly CSV.
Quickly see what the last evolution session did:
scripts/recap.sh # Full latest journal entry
scripts/recap.sh --short # Just Goal and Next Steps
scripts/recap.sh --json # JSON output for toolingCompare evolution metrics across multiple rig-seed projects:
scripts/dashboard.sh ~/projects/my-cli ~/projects/my-api ~/projects/my-libOutputs a table with day count, sessions, commits, roadmap progress, learnings,
and velocity for each project. Supports --summary for one-line-per-project
output, --json for dashboard integrations, and -q for machine-readable
key=value output.
Monitor whether your forked project is actively evolving:
./health-check.shChecks SESSION_COUNT progression, journal freshness, recent git activity, and
template validity. Configure thresholds via MAX_COMMIT_AGE_DAYS and
MAX_JOURNAL_AGE_DAYS environment variables (default: 7 days).
After forking, run the quickstart script to reset evolution state and get your project ready:
./quickstart.shThis resets SESSION_COUNT, clears the journal/roadmap/learnings, and walks you through writing your specs. See example specs for starter templates (CLI tool, web API, library).
Run all build/test/lint checks across all detected build systems:
scripts/check.shAuto-detects Go, Node.js, Rust, Python, and Makefile projects (including
subdirectories like frontend/). Also runs any commands configured in the
[build] section of .evolve/config.toml. This is the same script the
evolution agent runs during Step 7 (Build Check) — a broken build is never
submitted.
Verify that a mol-evolve session updated all required state files before submitting:
scripts/check-evolve-state.shChecks that JOURNAL.md, NEXT_STEPS.md, and SESSION_COUNT were modified.
Warns if ROADMAP.md, DAY_COUNT, or DAY_DATE are missing from the diff.
Run this before gt done to catch missing updates early.
Stay up to date with the latest rig-seed template improvements:
scripts/sync-upstream.sh --dry-run # Preview changes
scripts/sync-upstream.sh # Apply updatesMerges infrastructure files (scripts, docs, examples) from upstream while
preserving your project-specific state. Configure in .evolve/config.toml:
[template]
upstream = "https://github.com/totalslacker/rig-seed.git"
sync = "manual"Validate your GitHub Actions workflow files for common issues:
scripts/lint-workflows.shChecks YAML syntax, deprecated action versions, missing required fields,
security anti-patterns (hardcoded secrets, unsafe pull_request_target), and
best practices. Use -q for quiet CI output.
If a broken merge reaches main, revert it safely:
scripts/rollback.sh --dry-run # Preview what will be reverted
scripts/rollback.sh # Revert and verify the build passesCreates a revert commit (non-destructive). Handles both merge commits and regular commits. Automatically runs the build check after reverting to confirm the fix.
If you forked rig-seed a while ago and want to pick up new features:
scripts/migrate.sh --dry-run # See what's missing
scripts/migrate.sh # Add missing filesThe script detects which rig-seed features are present and copies missing ones from upstream. It never overwrites files you've customized.
If you're contributing to a project that was forked from rig-seed, here's how to get oriented quickly:
- Read
SPECS.md— what the project is building - Read
JOURNAL.md(top entries) — what happened recently - Check
ROADMAP.md— what's planned next - Run
./health-check.sh— see the project's current health
File a GitHub issue with the agent-input label. The evolution agent
prioritizes community issues above its own roadmap. Be specific — "the CLI
crashes when given an empty file" works better than "improve error handling."
Pull requests are welcome. Before you start:
- Run
./validate.shto confirm the template is intact - Run
scripts/check.shto verify all builds pass - Don't modify
IDENTITY.mdor files in.evolve/IMMUTABLE.txt - Don't delete journal entries —
JOURNAL.mdis append-only - See
CONTRIBUTING.mdfor full guidelines
Want your own self-evolving project? See Quick Start above or
run the /rig-spawn wizard in Claude Code for interactive setup. The
Day Zero Walkthrough covers everything from fork to first
evolution session.
- Architecture — How state files, scripts, and evolution flow connect
- Forking Guide — What to do after you fork rig-seed
- The Evolution Process — How
mol-evolveworks step by step - Example Specs — Starter SPECS.md files for common project types
- Example Configs —
.evolve/config.tomlvariants for different strategies - Example Roadmaps — Starter ROADMAP.md files for common project types
- Example CI Workflows — GitHub Actions you can copy
- Example Personalities — PERSONALITY.md variants (formal, casual, minimal)
- Example Git Hooks — Pre-commit hook for validation and immutable file protection
- Formula Customization — How to customize mol-evolve for your project
- Day Zero Walkthrough — Step-by-step tutorial for your first evolution session
- Upgrading Your Fork — How to pull new rig-seed features into an existing fork
- External Integrations — Sync beads to Linear, Jira, or other project trackers
- Monitoring with Prometheus + Grafana — Expose evolution metrics for long-running monitoring
- Script Conventions — Output markers, color, flags, and patterns used by all scripts
- Merge Strategy Guide — Choosing between Refinery, PR-based, and hybrid merging
- Planning Investigation — How evolution sessions choose work and how to improve it
- Troubleshooting — Common problems and how to fix them
- Project Plan — Architecture and design decisions
MIT