Blog posts: IBM announcement | Hugging Face blog Coding agents repeat the same mistakes because they start fresh every session. Evolve gives agents memory — they learn from what worked and what didn't, so each session is better than the last.
FAQ
altk-evolve is a Claude Code plugin with 51 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes agent-wiki-consolidate-guidelines, agent-wiki-consult, agent-wiki-extract-guidelines. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add AgentToolkit/altk-evolve> /plugin install evolve-lite@evolve-marketplace
Repo: AgentToolkit/altk-evolve
Blog posts: IBM announcement | Hugging Face blog
Coding agents repeat the same mistakes because they start fresh every session. Evolve gives agents memory — they learn from what worked and what didn't, so each session is better than the last.
Evolve is a system designed to help agents improve over time by learning from their trajectories. The Lite version is designed to effortlessly slot into existing agent assistants like Claude Code and Codex. It uses a combination of an MCP server for tool integration, vector storage for memory, and LLM-based conflict resolution to refine its knowledge base.
On the AppWorld benchmark, Evolve improved agent reliability by +8.9 points overall, with a 74% relative increase on hard multi-step tasks. Evolve is a system designed to help agents improve over time by learning from their trajectories. It uses a combination of an MCP server for tool integration, vector storage for memory, and LLM-based conflict resolution to refine its knowledge base.
[!IMPORTANT] ⭐ Star the repo: it helps others discover it.
Prerequisites:
uv (recommended) or pipFrom Source
# Clone the repository and install dependencies
git clone https://github.com/agenttoolkit/altk-evolve.git
cd altk-evolve
uv venv --python=3.12 && source .venv/bin/activate
uv sync
# Build the UI
cd frontend/ui
npm ci && npm run build
cd ../..
From PyPI
pip install altk-evolve
Optional Backend Dependencies:
The default filesystem backend uses simple text matching and requires no additional dependencies. For semantic vector similarity search, install one of these backends:
For PostgreSQL with pgvector support (recommended for production):
uv sync --extra pgvector
For Milvus support (optimized for large-scale vector search):
uv sync --extra milvus
See the Backend Configuration Guide for detailed comparison and setup instructions.
For direct OpenAI usage:
export OPENAI_API_KEY=sk-...
For LiteLLM proxy usage and model selection (including global fallback via EVOLVE_MODEL_NAME), see the configuration guide.
Start the Web UI and MCP server
uv run evolve-mcp
The Web UI can be accessed from: http://127.0.0.1:8000/ui/
If you only want to access the Web UI and API (without the MCP server stdio blocking the terminal), you can run the FastAPI application directly using uvicorn:
uv run uvicorn altk_evolve.frontend.mcp.mcp_server:app --host 127.0.0.1 --port 8000
Then navigate to http://127.0.0.1:8000/ui/.
If you're attaching Evolve to an MCP client that requires a direct command (like Claude Desktop):
uv run evolve-mcp
Or for SSE transport:
uv run evolve-mcp --transport sse --port 8201
Verify it's running:
npx @modelcontextprotocol/inspector@latest http://127.0.0.1:8201/sse --cli --method tools/list
Available tools:
get_entities(task: str, entity_type: str = "guideline", include_public: bool = False): Get relevant entities for a specific task. Set include_public=True to merge in public entities from all other namespaces; those results are annotated with [public: {owner_id}].get_guidelines(task: str): Get relevant guidelines for a specific task (backward compatibility alias for get_entities).save_trajectory(trajectory_data: str, task_id: str | None, owner_id: str | None): Save a conversation trajectory and generate new guidelines.create_entity(content: str, entity_type: str, metadata: str | None, enable_conflict_resolution: bool, owner_id: str | None, visibility: str = "private"): Create a single entity. Pass visibility="public" and owner_id to make it immediately discoverable by other namespaces.publish_entity(entity_id: str, user_id: str | None): Make an entity publicly visible to all namespaces. Records the caller as owner and stamps published_at.unpublish_entity(entity_id: str, user_id: str | None = None): Revert an entity to private visibility. Ownership is enforced server-side: if the entity has an owner_id, user_id must match it.delete_entity(entity_id: str): Delete a specific entity by its ID.Entity search filters reserve bare keys for top-level schema columns only: id, type, content, and created_at.
If you need to filter on JSON metadata, use the metadata.<key> form. For example, use filters={"type": "trajectory", "metadata.task_id": "123"} instead of filters={"type": "trajectory", "task_id": "123"}.
Existing integrations that stored custom fields in entity metadata should update filter writers to add the metadata. prefix for those keys.
Evolve is built on a modular architecture which forms a feedback loop, taking conversation traces (trajectories) from an agent, extracting key insights into a database, feeding it back into the agent.
Lite Mode omits the Interaction layer. All activity is performed in-agent
Evolve supports sharing entities across namespaces using a simple public/private visibility model.
Visibility is stored in each entity's metadata and is private by default. Existing entities without a visibility field are unaffected.
| Metadata field | Description |
|---|---|
owner_id | User ID who created or last published the entity |
visibility | "private" (default) or "public" |
published_at | ISO-8601 timestamp of the most recent publish |
Publishing an entity:
publish_entity(entity_id="42", user_id="alice")
Sets visibility=public and records the owner and publish timestamp.
Unpublishing:
unpublish_entity(entity_id="42", user_id="alice")
Reverts the entity to private. The entity stays in its namespace — only its visibility changes.
Retrieving public entities from all namespaces:
get_entities(task="write safer code", include_public=True)
Merges results from the caller's namespace with public entities from all other namespaces. Public results are annotated with [public: {owner_id}].
Creating an entity with visibility:
create_entity(content="...", entity_type="guideline", visibility="public", owner_id="alice")
REST API endpoints (GET /api/entities/public, publish/unpublish routes) and UI controls are not yet implemented.
Evolve automatically tracks the origin of every guideline it generates or stores. Every guideline entity contains metadata identifying its source:
creation_mode: Identifies how the guideline was created (auto-phoenix via trace observability, auto-mcp via trajectory saving tools, or manual).source_task_id: The ID of the original trace or task that inspired the guideline, providing full auditability.See the Low-Code Tracing Guide for more details.
Evolve is an active project, and real‑world usage helps guide its direction.
If you’re experimenting with Evolve or exploring on‑the‑job learning for agents, feel free to open an issue or discussion to share use cases, ideas, or feedback.
See the Contributing Guide to understand our development process, or how to submit changes, report bugs, or propose features.
.claude-plugin/
marketplace.json
.env.example
.github/
actions/
run-tests/
action.yaml
dependabot.yml
scripts/
verify_upstream.sh
workflows/
check-code.yaml
check-vulnerabilities.yaml
docker-publish.yml
python-publish.yml
release-github.yaml
.gitignore
.pre-commit-config.yaml
.python-version
.secrets.baseline
AGENTS.md
altk_evolve/
__init__.py
auto/
__init__.py
backend/
__init__.py
base.py
filesystem.py
milvus.py
postgres.py
cli/
__init__.py
cli.py
templates/
__init__.py
hooks.yaml
config/
__init__.py
evolve.py
filesystem.py
guidelines.py
hooks.py
llm.py
milvus.py
phoenix.py
postgres.py
db/
__init__.py
sqlite_manager.py
frontend/
__init__.py
api/
__init__.py
routes.py
client/
__init__.py
evolve_client.py
mcp/
__init__.py
__main__.py
http_transport.py
mcp_server.py
ui/
.gitignore
eslint.config.js
index.html
package-lock.json
package.json
README.md
setupTests.ts
src/
App.test.tsx
App.tsx
components/
ConfirmDialog.tsx
CreateEntityModal.tsx
Dashboard.tsx
EntityDetailModal.tsx
EntityExplorer.test.tsx
EntityExplorer.tsx
EntityTable.tsx
Namespaces.test.tsx
Namespaces.tsx
hooks/
useApi.ts
useDebounce.ts
index.css
main.tsx
tsconfig.app.json
tsconfig.json
tsconfig.node.json
vite.config.ts
hooks/
__init__.py
manager.py
plugin.py
plugins/
__init__.py
access_stamp.py
normalizer.py
pii.py
readi.py
secrets.py
types.py
llm/
__init__.py
conflict_resolution/
__init__.py
conflict_resolution.py
prompts/
conflict_resolution.jinja2
default_conflict_resolution.jinja2
fact_extraction/
__init__.py
categorization.py
fact_extraction.py
prompts/
fact_extraction_predefined.jinja2
fact_extraction.jinja2
guidelines/
__init__.py
clustering.py
consistency_analyzer/
__init__.py
agent_config.yaml
consistency_aggregator.py
consistency_analysis.py
consistency_metric.py
inference_utils.py
resampling.py
sample_preprocessing.py
single_step_consistency.py
utils.py
consistency_guidelines.py
guidelines.py
prompts/
combine_guidelines.jinja2
generate_consistency_guidelines.jinja2
generate_guidelines.jinja2
segment_trajectory.jinja2
retrieval.py
segmentation.py
retention/
__init__.py
engine.py
policy.py
schema/
__init__.py
conflict_resolution.py
core.py
exceptions.py
guidelines.py
policy.py
sync/
__init__.py
phoenix_sync.py
utils/
__init__.py
utils.py
viz/
__init__.py
data.py
server.py
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
demo/
filesystem/
server.py
states.txt
workdir/
CLAUDE.md
workspace/
sample.jpg
Dockerfile.core
docs/
archive/
save-session-as-skill-design.md
assets/
architecture-dark.svg
architecture-light.svg
architecture-wide-dark.svg
architecture-wide-light.svg
logo-32x32.png
logo-512x512.png
sample.jpg
components/
github-repo-card.js
examples/
hello_world/
bob.md
claude.md
codex.md
guides/
backend-configuration.md
configuration.md
extract-trajectories.md
guidelines.md
low-code-tracing.md
memory-hooks.md
phoenix-sync.md
pii-redaction.md
retention.md
viz.md
index.md
installation/
index.md
integrations/
claude/
evolve-lite.md
operations/
docker-testing.md
overrides/
main.html
reference/
cli.md
policies.md
results/
index.md
stylesheets/
extra.css
tutorials/
claude-code-demo.md
guidelines-loop.md
index.md
examples/
hooks_demo.py
hooks_plugins.yaml
low_code/
guidelines_retrieval_demo.py
litellm_demo.py
local_mcp_server.py
manual_phoenix_demo.py
openai_agents_demo.py
simple_openai.py
smolagents_demo.py
pii_benchmark.py
retention_demo.py
retention.example.yaml
experiments/
README.md
skill_from_trajectory.py
token_savings.py
explorations/
agent-wiki/
docs/
design.md
schema.md
experiments/
harness/
experiment_wiki_consult.py
extract_trial_metrics.py
fiveway_compare.py
fourway_compare.py
normalize_stream_json_transcripts.py
threeway_compare.py
twobatch_compare.py
wiki_consult_tasks.yaml
metrics/
pruned-fixed-9atomic.metrics.jsonl
twobatch-both.metrics.jsonl
twobatch-skills.metrics.jsonl
twobatch.metrics.jsonl
pruned-index-hypothesis.md
RESULTS-SUMMARY.md
twobatch-comparison.md
twobatch-fiveway-comparison.md
twobatch-fourway-comparison.md
twobatch-skills-comparison.md
README.md
skills/
agent-wiki-consolidate-guidelines/
SKILL.md
agent-wiki-consult/
SKILL.md
agent-wiki-extract-guidelines/
SKILL.md
agent-wiki-ingest/
SKILL.md
agent-wiki-summarize/
SKILL.md
agent-wiki-synthesize-skill/
SKILL.md
agent-wiki-tasks/
SKILL.md
scripts/
_default_agent_wiki_config.yaml
_default_agents.md
build_agent_wiki.py
claudecode/
litellm-config.yaml
pyproject.toml
README.md
justfile
LICENSE
MANIFEST.in
mkdocs.yaml
platform-integrations/
bob/
evolve-full/
custom_modes.yaml
mcp.json
TESTING.md
evolve-lite/
commands/
evolve-lite-adapt-memory.md
evolve-lite-provenance.md
evolve-lite-publish.md
evolve-lite-retention.md
evolve-lite-save-trajectory.md
evolve-lite-save.md
evolve-lite-subscribe.md
evolve-lite-sync.md
evolve-lite-synthesize-skill.md
evolve-lite-unsubscribe.md
EVOLVE.md
lib/
evolve-lite/
__init__.py
audit_recall.py
audit.py
config.py
entity_io.py
retention.py
README.md
skills/
evolve-lite-adapt-memory/
scripts/
adapt_memory.py
SKILL.md
evolve-lite-provenance/
scripts/
log_influence.py
provenance.py
SKILL.md
evolve-lite-publish/
scripts/
publish.py
SKILL.md
evolve-lite-retention/
scripts/
run_retention.py
SKILL.md
evolve-lite-save/
evolve-lite-save-trajectory/
scripts/
on_stop.py
save_trajectory.py
SKILL.md
SKILL.md
evolve-lite-subscribe/
scripts/
subscribe.py
SKILL.md
evolve-lite-sync/
scripts/
sync.py
SKILL.md
evolve-lite-synthesize-skill/
scripts/
synthesize.py
SKILL.md
evolve-lite-unsubscribe/
scripts/
unsubscribe.py
SKILL.md
claude/
plugins/
evolve-lite/
.claude-plugin/
plugin.json
EVOLVE.md
lib/
evolve-lite/
__init__.py
audit_recall.py
audit.py
config.py
entity_io.py
retention.py
README.md
skills/
evolve-lite/
adapt-memory/
scripts/
adapt_memory.py
SKILL.md
doctor/
scripts/
doctor.py
SKILL.md
provenance/
scripts/
log_influence.py
provenance.py
SKILL.md
publish/
scripts/
publish.py
... 338 more© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic