{"id":48802953,"url":"https://github.com/AgentToolkit/altk-evolve","last_synced_at":"2026-06-28T09:00:53.797Z","repository":{"id":328880254,"uuid":"1115406035","full_name":"AgentToolkit/altk-evolve","owner":"AgentToolkit","description":"Self improving agents through iterations","archived":false,"fork":false,"pushed_at":"2026-06-09T12:03:19.000Z","size":3353,"stargazers_count":91,"open_issues_count":51,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-09T14:05:50.762Z","etag":null,"topics":["agent-learning","agent-memory","agentic-workflows","ai-agents","claude-code","claude-code-plugin","claude-code-plugins","codex","context-management","episodic-memory","llm","mcp","memory","model-context-protocol","observability","self-evolution","self-learning-ai","trajectory","vector-database"],"latest_commit_sha":null,"homepage":"https://agenttoolkit.github.io/altk-evolve/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AgentToolkit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-12T20:14:48.000Z","updated_at":"2026-06-09T03:08:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AgentToolkit/altk-evolve","commit_stats":null,"previous_names":["agenttoolkit/kaizen","agenttoolkit/altk-evolve"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/AgentToolkit/altk-evolve","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentToolkit%2Faltk-evolve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentToolkit%2Faltk-evolve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentToolkit%2Faltk-evolve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentToolkit%2Faltk-evolve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AgentToolkit","download_url":"https://codeload.github.com/AgentToolkit/altk-evolve/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgentToolkit%2Faltk-evolve/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34882751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-learning","agent-memory","agentic-workflows","ai-agents","claude-code","claude-code-plugin","claude-code-plugins","codex","context-management","episodic-memory","llm","mcp","memory","model-context-protocol","observability","self-evolution","self-learning-ai","trajectory","vector-database"],"created_at":"2026-04-14T04:00:25.718Z","updated_at":"2026-06-28T09:00:53.792Z","avatar_url":"https://github.com/AgentToolkit.png","language":"Python","funding_links":[],"categories":["Source Catalog","Tools"],"sub_categories":["Training and Fine-tuning"],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Evolve: On‑the‑job learning for AI agents\n\n[![Python](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/)\n![Status](https://img.shields.io/badge/status-active-brightgreen)\n[![Documentation](https://shields.io/badge/Official%20Webpage-Documentation-blue)](https://agenttoolkit.github.io/altk-evolve)\n[![arXiv](https://img.shields.io/badge/arXiv-2603.10600-b31b1b)](https://arxiv.org/pdf/2603.10600)\n[![License](https://img.shields.io/github/license/AgentToolkit/altk-evolve)](https://www.apache.org/licenses/LICENSE-2.0)\n![Stars](https://img.shields.io/github/stars/AgentToolkit/altk-evolve?style=social)\n\n**Blog posts:** [IBM announcement](https://www.ibm.com/new/announcements/altk-evolve-on-the-job-learning-for-ai-agents) | [Hugging Face blog](https://huggingface.co/blog/ibm-research/altk-evolve)\n\u003c/div\u003e\n\nCoding 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.\n\nEvolve 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.\n\nOn 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.\n\n\u003e [!IMPORTANT]\n\u003e ⭐ **Star the repo**: it helps others discover it.  \n\n## Quick Start (Lite)\n[IBM Bob →](https://agenttoolkit.github.io/altk-evolve/examples/hello_world/bob/)\n\n[Claude Code →](https://agenttoolkit.github.io/altk-evolve/examples/hello_world/claude)\n\n[Codex →](https://agenttoolkit.github.io/altk-evolve/examples/hello_world/codex/)\n\n## Quick Start (Evolve MCP Server)\n### Installation\nPrerequisites:\n- Python 3.12 or higher\n- `uv` (recommended) or `pip`\n\nFrom Source\n```bash\n# Clone the repository and install dependencies\ngit clone https://github.com/agenttoolkit/altk-evolve.git\ncd altk-evolve\nuv venv --python=3.12 \u0026\u0026 source .venv/bin/activate\nuv sync\n# Build the UI\ncd frontend/ui\nnpm ci \u0026\u0026 npm run build\ncd ../..\n```\nFrom PyPI\n```bash\npip install altk-evolve\n```\n\n**Optional Backend Dependencies:**\n\nThe default filesystem backend uses simple text matching and requires no additional dependencies. For semantic vector similarity search, install one of these backends:\n\nFor PostgreSQL with pgvector support (recommended for production):\n```bash\nuv sync --extra pgvector\n```\n\nFor Milvus support (optimized for large-scale vector search):\n```bash\nuv sync --extra milvus\n```\n\nSee the [Backend Configuration Guide](docs/guides/backend-configuration.md) for detailed comparison and setup instructions.\n\n### Configuration\n\nFor direct OpenAI usage:\n```bash\nexport OPENAI_API_KEY=sk-...\n```\n\nFor LiteLLM proxy usage and model selection (including global fallback via `EVOLVE_MODEL_NAME`), see [the configuration guide](docs/guides/configuration.md).\n\n### Running Services\nStart the Web UI and MCP server\n```bash\nuv run evolve-mcp\n```\nThe Web UI can be accessed from: `http://127.0.0.1:8000/ui/`\n\n### Starting the Web UI and MCP Server\nIf 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`:\n```bash\nuv run uvicorn altk_evolve.frontend.mcp.mcp_server:app --host 127.0.0.1 --port 8000\n```\nThen navigate to `http://127.0.0.1:8000/ui/`.\n\n### Starting only the MCP Server\nIf you're attaching Evolve to an MCP client that requires a direct command (like Claude Desktop):\n```bash\nuv run evolve-mcp\n```\nOr for SSE transport:\n```bash\nuv run evolve-mcp --transport sse --port 8201\n```\n\nVerify it's running:\n```bash\nnpx @modelcontextprotocol/inspector@latest http://127.0.0.1:8201/sse --cli --method tools/list\n```\n\n**Available tools:**\n- `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}]`.\n- `get_guidelines(task: str)`: Get relevant guidelines for a specific task (backward compatibility alias for `get_entities`).\n- `save_trajectory(trajectory_data: str, task_id: str | None, owner_id: str | None)`: Save a conversation trajectory and generate new guidelines.\n- `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.\n- `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`.\n- `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.\n- `delete_entity(entity_id: str)`: Delete a specific entity by its ID.\n\n### Filter Migration Note\nEntity search filters reserve bare keys for top-level schema columns only: `id`, `type`, `content`, and `created_at`.\n\nIf you need to filter on JSON metadata, use the `metadata.\u003ckey\u003e` form. For example, use `filters={\"type\": \"trajectory\", \"metadata.task_id\": \"123\"}` instead of `filters={\"type\": \"trajectory\", \"task_id\": \"123\"}`.\n\nExisting integrations that stored custom fields in entity metadata should update filter writers to add the `metadata.` prefix for those keys.\n\n## Features\n- **Proactive**: Learns how to recognize problems and their solutions, and generates guidelines that get automatically applied to new tasks.\n- **Conflict Resolution**: Update existing guidelines when new information contradicts them.\n- **On Command**: An array of tools to manage guidelines whether in the agent or through a CLI\n- **Sharing**: Publish individual entities so other agents can discover and retrieve them across namespaces.\n\n## Architecture\nEvolve 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.\n\n_Lite Mode omits the Interaction layer. All activity is performed in-agent_\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/architecture-wide-dark.svg\"\u003e\n  \u003cimg src=\"docs/assets/architecture-wide-light.svg\" alt=\"Architecture\" width=\"480\"\u003e\n\u003c/picture\u003e\n\n## Entity Sharing\n\nEvolve supports sharing entities across namespaces using a simple public/private visibility model.\n\n**Visibility** is stored in each entity's metadata and is private by default. Existing entities without a `visibility` field are unaffected.\n\n| Metadata field | Description |\n|---|---|\n| `owner_id` | User ID who created or last published the entity |\n| `visibility` | `\"private\"` (default) or `\"public\"` |\n| `published_at` | ISO-8601 timestamp of the most recent publish |\n\n### MCP Tools\n\n**Publishing an entity:**\n```python\npublish_entity(entity_id=\"42\", user_id=\"alice\")\n```\nSets `visibility=public` and records the owner and publish timestamp.\n\n**Unpublishing:**\n```python\nunpublish_entity(entity_id=\"42\", user_id=\"alice\")\n```\nReverts the entity to private. The entity stays in its namespace — only its visibility changes.\n\n**Retrieving public entities from all namespaces:**\n```python\nget_entities(task=\"write safer code\", include_public=True)\n```\nMerges results from the caller's namespace with public entities from all other namespaces. Public results are annotated with `[public: {owner_id}]`.\n\n**Creating an entity with visibility:**\n```python\ncreate_entity(content=\"...\", entity_type=\"guideline\", visibility=\"public\", owner_id=\"alice\")\n```\n\n### What's deferred (Phase 1C)\nREST API endpoints (`GET /api/entities/public`, publish/unpublish routes) and UI controls are not yet implemented.\n\n## Guideline Provenance\nEvolve automatically tracks the origin of every guideline it generates or stores. Every guideline entity contains `metadata` identifying its source:\n- `creation_mode`: Identifies how the guideline was created (`auto-phoenix` via trace observability, `auto-mcp` via trajectory saving tools, or `manual`).\n- `source_task_id`: The ID of the original trace or task that inspired the guideline, providing full auditability.\n\nSee the [Low-Code Tracing Guide](docs/guides/low-code-tracing.md#6-understanding-guideline-provenance-metadata) for more details.\n\n\n## Contributing, Community, and Feedback\nEvolve is an active project, and real‑world usage helps guide its direction.\n\nIf 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.\n\nSee the [Contributing Guide](CONTRIBUTING.md) to understand our development process, or how to submit changes, report bugs, or propose features.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAgentToolkit%2Faltk-evolve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAgentToolkit%2Faltk-evolve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAgentToolkit%2Faltk-evolve/lists"}