Agents that evolve their own skills. Self-healing multi-agent systems.
Project description
EvoAgents
Agents that evolve their own skills. Self-healing multi-agent systems.
Build multi-agent pipelines with structured skills. EvoAgents watches them run, detects failures with an LLM evaluator, generates targeted prompt patches, validates them via replay on past traces, and promotes winners — automatically. Your agents get better every time they run.
pip install evoagents
evoagents init --preset research
evoagents run "What are the latest breakthroughs in quantum computing?"
evoagents autofix
evoagents run "What are the latest breakthroughs in quantum computing?"
# Score: 0.67 → 0.83 → 1.00
The Self-Healing Loop
flowchart LR
R["evoagents run"] --> E["LLM Evaluator\n(per-skill scoring)"]
E -->|"failure tags"| P["Patcher\n(LLM generates patches)"]
P -->|"candidates"| G["Replay Gate\n(validate on past traces)"]
G -->|"winner"| M["Promote\n(versioned SKILL.md)"]
M --> R
- Run — Execute your pipeline of skills sequentially. Each skill has a prompt, optional tools, and produces structured output.
- Evaluate — An LLM judge scores each skill against its own constraints. No regex, no heuristics.
- Patch — An LLM generates 2-3 minimal, targeted patches to the failing skill's SKILL.md (constraints, examples, output format).
- Replay — Each patch candidate is replayed on recent traces. Only patches that improve scores pass.
- Promote — Winners are versioned (
v1→v2→v3). Rollback is always one command away.
Before & After
Run 1 (fresh skills, no autofix):
Score: 0.67
┃ perception │ 1.00 │ ok
┃ planner │ 0.50 │ findings cut off mid-sentence
┃ synthesizer │ 0.50 │ missing key points from planner
After evoagents autofix (synthesizer v1 → v2, planner v1 → v2):
Score: 0.90
┃ perception │ 1.00 │ ok
┃ planner │ 0.80 │ ok
┃ synthesizer │ 1.00 │ ok
The patcher added constraints like "MUST include all named entities from the planner output" and updated the examples to demonstrate correct behavior — automatically.
Quickstart
Install
pip install evoagents
Initialize a project
mkdir my-agent && cd my-agent
evoagents init --preset research
This creates:
my-agent/
evoagents.yaml # Pipeline config
skills/
perception/ # Extracts intent from queries
SKILL.md
planner/ # Searches web + gathers findings
SKILL.md
synthesizer/ # Produces final answer
SKILL.md
Set your API key
export OPENAI_API_KEY=sk-...
Run and improve
evoagents run "What is the latest on quantum computing?"
evoagents autofix # patches + replay + promote
evoagents run "What is the latest on quantum computing?" # see improvement
Guide the healing
Tell the patcher what to prioritize:
evoagents autofix --guide "prioritize citation accuracy over completeness"
evoagents autofix --guide "never remove existing constraints, only add new ones"
The --guide message becomes the highest-priority instruction for the patcher, overriding default rules.
Create Your Own Skills
Interactive creation
$ evoagents create-skill
Skill name: weather_checker
Description: Check current weather for any city using a weather API
Generating SKILL.md... done
Created skills/weather_checker/SKILL.md (v1)
Add to pipeline? [y/N]: y
Added weather_checker to pipeline
The LLM generates a complete SKILL.md with frontmatter, constraints, output format, and examples — ready to run.
SKILL.md Format
Every skill is a single markdown file with YAML frontmatter:
---
name: my_skill
description: >
What this skill does.
version: v1
tools: []
judge:
rubric:
constraints: 0.35
tool_use: 0.05
grounding: 0.20
helpfulness: 0.40
rules:
confidence_min: 0.55
---
# My Skill
One-line description.
## When to Use
USE this skill when:
- Condition 1
## Constraints
- MUST do X
- NEVER do Y
## Output Format
Respond with ONLY a JSON object:
{"field": "description"}
## Examples
Query: "example"
Expected output:
{"field": "value"}
Patchable sections: The autofix loop can modify constraints, output_format, examples, and tools — but never touches your When to Use or core description.
Configure your pipeline
evoagents.yaml:
pipeline:
- name: step_one
skill: my_skill
- name: step_two
skill: another_skill
skills_dir: ./skills
models:
executor:
provider: openai
model: gpt-5.2
judge:
provider: openai
model: gpt-5.2
CLI Reference
| Command | Description |
|---|---|
evoagents init [--preset NAME] |
Scaffold a new project |
evoagents run "query" |
Run the pipeline |
evoagents autofix [--guide "..."] |
Auto-patch + replay + promote |
evoagents autofix --skill NAME |
Target a specific skill |
evoagents create-skill |
Interactively create a new skill |
evoagents trace last |
Inspect the last run |
evoagents list-runs |
List recent runs |
evoagents score last |
Score/re-score a run |
evoagents failures last |
Show failure tags |
evoagents rollback --skill NAME |
Revert to previous version |
evoagents versions --skill NAME |
List skill versions |
evoagents diff --skill NAME v1 v2 |
Diff two prompt versions |
evoagents stats |
Aggregate statistics |
Architecture
evoagents (pip package)
├── core/ Pipeline runtime, config, skill loader, trace store
├── scoring/ LLM per-skill evaluator, pairwise judge
├── improve/ Autopatcher, replay gate, promotion manager
├── providers/ LLM abstraction (OpenAI, Anthropic)
├── tools/ Tool registry (web_search, http_get)
├── presets/ Project templates (research, demo, blank)
└── cli/ Typer CLI (run, autofix, create-skill, trace, etc.)
How It's Different
- Skills, not prompts — Structured SKILL.md with frontmatter, constraints, output format, examples. Not a blob of text.
- LLM evaluates LLM — No regex validators. An LLM judge scores each skill against its own constraints.
- Section-level patching — The patcher modifies specific sections (constraints, examples), not the entire prompt. Minimal, targeted fixes.
- Replay gate — No patch gets promoted without proving it improves scores on real past traces.
- Versioned everything — Every change creates a new version. Rollback is instant.
Safety
- Versioning: Every prompt change creates a new version. Nothing is ever deleted.
- Replay gate: No promotion without winning on past traces.
- Rollback:
evoagents rollback --skill NAMEto revert any skill instantly. - Minimal patches: The patcher only modifies the sections that caused the failure.
- Local by default: All data stays in
.selfheal/in your project.
License
MIT
evoagents
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evoagents-0.1.0.tar.gz.
File metadata
- Download URL: evoagents-0.1.0.tar.gz
- Upload date:
- Size: 42.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5e1ee09c02527ebcc9770078205279a6e62f22c753ab434a5b021caeb76b23a
|
|
| MD5 |
8755b47ce8cb0755b4f7957ba1e0cae1
|
|
| BLAKE2b-256 |
1c61af8d98c808837a4a9c8c7843ebed7350155b89bd5a29a21cf72b1cd8cea5
|
File details
Details for the file evoagents-0.1.0-py3-none-any.whl.
File metadata
- Download URL: evoagents-0.1.0-py3-none-any.whl
- Upload date:
- Size: 62.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c7a6f70b065e60eea6d3401de30d6cae0996e5a6e23416b1d23f7334b07efd8
|
|
| MD5 |
bfba09d5253a81d073b2344e77bd36f3
|
|
| BLAKE2b-256 |
5863f78112129bb76dc69d52f58adfa3e59c42c8db470abc8e6f71548653cbcd
|