EE

evoscientist/evoscientist

Developer tools
5Kย stars Quality 76 Trend 51Apache-2.0

๐Ÿ”ฌ Harness Vibe Research with Self-evolving AI Scientists

Overview

Best Paper & Appraisal Award AI-Generated Best Paper #1 on DeepResearch Bench II #1 on DeepResearch Bench #1 on AstaBench Code & Execution #1 on AstaBench Data Analysis ๐Ÿ–ฅ๏ธ CLI / TUI ๐Ÿ“ฑ Mobile View demo video View mobile demo - โ€” 6 sub-agents (plan, research, code, debug, analyze, write) working in concert. - โ€” Auto-distilled each turn, self-linking into a knowledge graph that grows across sessions. - โ€” Distills recurring patterns from its own memory into reusable skills on a schedule โ€” proposed for your review via /autoskills. - โ€” Anthropic, OpenAI, Google, MiniMax, NVIDIA โ€” one config to switch. - โ€” CLI as the hub; Telegram, Slack, Feishu, WeChat, and more โ€” one agent session. - โ€” Workspace-panel web app, one terminal via --ui webui. - โ€” Intake โ†’ plan โ†’ execute โ†’ evaluate โ†’ write โ†’ verify. - โ€” Automate recurring research on a cron-style schedule โ€” it runs on its own and reports back. - โ€” More Effort (iterative refinement), continuously improving code quality.

README


EvoScientist aims to harness vibe research by enabling self-evolving AI scientists that autonomously explore, generate insights, and iteratively improve. It is designed to be opinionated and ready to use out of the box, offering a living research system that grows alongside evolving agent skills, toolsets, and memory bases. Moving beyond traditional human-in-the-loop systems, EvoScientist adopts a human-on-the-loop paradigm, where AI acts as a research buddy that co-evolves with human researchers and internalizes scholarly taste and scientific judgment.

๐Ÿ† Awards & Recognition

โšก Unified Control, Different Surfaces

โœจ Features

  • ๐Ÿค– Multi-Agent Team โ€” 6 sub-agents (plan, research, code, debug, analyze, write) working in concert.
  • ๐Ÿง  Self-Evolving Memory โ€” Auto-distilled each turn, self-linking into a knowledge graph that grows across sessions.
  • ๐Ÿ› ๏ธ AutoSkills โ€” Distills recurring patterns from its own memory into reusable skills on a schedule โ€” proposed for your review via /autoskills.
  • ๐ŸŒ Multi-Provider โ€” Anthropic, OpenAI, Google, MiniMax, NVIDIA โ€” one config to switch.
  • ๐Ÿ“ฑ Multi-Channel โ€” CLI as the hub; Telegram, Slack, Feishu, WeChat, and more โ€” one agent session.
  • ๐Ÿ–ฅ๏ธ Desktop WebUI โ€” Workspace-panel web app, one terminal via --ui webui.
  • ๐Ÿ”ฌ Scientific Workflow โ€” Intake โ†’ plan โ†’ execute โ†’ evaluate โ†’ write โ†’ verify.
  • โฐ Scheduled Tasks โ€” Automate recurring research on a cron-style schedule โ€” it runs on its own and reports back.
  • ๐Ÿ”„ Code Generation Modes โ€” More Effort (iterative refinement), continuously improving code quality.
  • โšก Adaptive Tools โ€” Per-turn tool selection keeps only relevant tools visible, reducing noise.
  • โœ‚๏ธ Context Editing โ€” Dynamic system prompt rewriting based on conversation state.
  • ๐Ÿ”Œ MCP & Skills โ€” Plug in MCP servers or install skills from GitHub on the fly.

[!TIP] Looking for ready-to-use research skills? Check out EvoSkills โ€” powered by EvoScientistโ€™s engine and installable skills, the entire end-to-end research lifecycle is covered out of the box. EvoSkills are also compatible with other CLI coding agents.

๐Ÿ”ฅ News

๐Ÿ“– Table of Contents

๐Ÿ“ฆ Installation

Quick Install

macOS, Linux, WSL2

curl -fsSL https://evoscientist.ai/install.sh | bash

Windows (native, PowerShell)

irm https://evoscientist.ai/install.ps1 | iex

[!NOTE] Native Windows runs EvoScientist without WSL: the CLI, the TUI, the WebUI and the agentโ€™s tools all work, and the agentโ€™s shell commands run in Git Bash. If you prefer WSL2, the macOS/Linux command works there too. Found a bug? Please open an issue.

The installer needs no uv, Python, Node.js or Git on the machine. It downloads a checksum-verified uv into EvoScientistโ€™s tool folder (~/.evoscientist/tools) and installs EvoScientist on uvโ€™s own Python 3.12, with the exact dependency versions the release was tested with. It then runs EvoSci setup, which adds Node.js when yours is missing or older than 20.9, a Python environment for the agentโ€™s shell when no usable python is found, the WebUI, and on Windows a checksum-verified Git for Windows when none is installed. It does not replace your system Python, Node.js or Git. Options, mirrors for mainland China, proxies and uninstalling are covered in the installation guide.

When it finishes, open a new terminal and run EvoSci onboard, then EvoSci.

[!NOTE] To update an existing installation to the latest version, with the dependency versions that release was tested with, use EvoSci update:

EvoSci update

On 0.3.6 or older, which have no EvoSci update, run uv tool upgrade EvoScientist once, with EvoScientist closed.

Install with uv or pip

[!TIP] Requires Python 3.11+ (< 3.14). We recommend uv or conda for dependency management and virtual environments. Prefer to skip a local Python install entirely? Jump to ๐Ÿณ Docker.

uv tool install EvoScientist

Or install into the current environment instead:

uv pip install EvoScientist

Latest from GitHub

To get the latest patches before a PyPI release:

uv pip install git+https://github.com/EvoScientist/EvoScientist.git

Development Install

git clone https://github.com/EvoScientist/EvoScientist.git
cd EvoScientist
uv sync --dev

enable pre-commit hooks:

uv run pre-commit install

๐Ÿณ Docker

A pre-built image is published to GitHub Container Registry with everything evosci onboard would otherwise install for you:

  • Python 3.11, EvoScientist, and the cross-platform messaging channels (i.e., EvoScientist[all-channels])
  • uv โ€” used by the MCP registry to install Python MCP servers on demand
  • Node.js 24 LTS + npx โ€” required by the majority of MCP servers

The iMessage channel isnโ€™t usable from the container โ€” it requires the imsg CLI talking to macOSโ€™s Messages.app, which is host-OS-specific. Run EvoScientist directly on macOS if you need iMessage.

Running EvoScientist in a container also sandboxes the agentโ€™s shell access โ€” file edits and shell commands stay confined to volumes you explicitly mount.

docker run -it --rm \
  --env-file .env \
  -v "$(pwd)/workspace:/workspace" \
  -v evosci-data:/home/evosci/.evoscientist \
  ghcr.io/evoscientist/evoscientist:latest

What the mounts are for:

Mount Purpose
--env-file .env API keys (ANTHROPIC_API_KEY, OPENAI_API_KEY, โ€ฆ)
./workspace:/workspace The agentโ€™s working directory
evosci-data:/home/evosci/.evoscientist Persistent app state: sessions DB, global skills, memories, and config.yaml/mcp.yaml

The image does not include the agentโ€™s research Python; run EvoSci setup once in a container with the same evosci-data mount (docker run --rm -v evosci-data:/home/evosci/.evoscientist ghcr.io/evoscientist/evoscientist:latest setup, since the imageโ€™s entrypoint is evosci; with compose, docker compose run --rm evoscientist setup), and it builds the environment in that volume, where it survives image upgrades.

[!IMPORTANT] The image runs as a non-root user (evosci, UID 1000). For the ./workspace bind mount, the host directory must be writable by that UID. If your host user ID differs, either chown -R 1000:1000 ./workspace once, or pass --user "$(id -u):$(id -g)" on every docker run so the container takes on your UID.

Or use docker compose (a starter docker-compose.yml is included):

docker compose run --rm evoscientist

To build the image locally instead of pulling:

docker build -t evoscientist:dev .

[!NOTE] Not bundled โ€” install on demand by deriving from the image:

  • stt (speech-to-text via faster-whisper) and oauth (ccproxy-api, for Claude subscription OAuth)
  • TinyTeX / LaTeX (pdflatex, latexmk) for paper-writing skills
FROM ghcr.io/evoscientist/evoscientist:latest

# Python extras
USER root
RUN uv pip install --python /opt/venv/bin/python "EvoScientist[stt,oauth]"
USER evosci

# TinyTeX
# The official install method is `curl | sh`; if you'd rather not
# pipe an unpinned remote script into a shell, fetch a specific TinyTeX
# release tarball from https://github.com/rstudio/tinytex-releases, verify
# its checksum, and extract to /home/evosci/.TinyTeX instead.
RUN curl -sL https://yihui.org/tinytex/install-bin-unix.sh | sh \
 && /home/evosci/.TinyTeX/bin/*/tlmgr install latexmk

๐Ÿ”Back to top

๐Ÿ”‘ Configuration

The easiest way to configure API keys is the interactive wizard:

EvoSci onboard

[!TIP] It walks you through provider selection, key validation, model choice, and workspace mode. Supports OAuth sign-in for CLI coding agent subscribers โ€” no API key needed.

๐Ÿ”Back to top

โšก Quick Start

EvoSci  # or EvoScientist โ€” interactive mode (TUI by default)

Run EvoSci -h for all CLI options.

[!TIP] Prefer a browser? Run EvoSci --ui webui for the web workspace UI. Need to copy long outputs? Use --ui cli for classic mode where native terminal copy works freely. On macOS, iTerm2 users can also hold โŒฅ Option while dragging to select, then โŒ˜+C.

๐Ÿ”Back to top

โฐ Scheduled Tasks

Automate recurring research tasks with cron-style schedules.

# Add a schedule (cron expression required for /schedule add)
/schedule add "0 9 * * 1-5" "Summarise the latest ML papers from arXiv with the paper-navigator skill, and save the summary to /memories/daily-papers.md"
/schedule add "*/10 * * * *" "Check my running experiment's status and append the result to experiment_log.json"

# Optional acceptance checklist: a separate reviewer grades each run against it
/schedule add "0 8 * * 1-5" "Collect yesterday's arXiv diffusion papers into scheduled/digest.md" --rubric "- scheduled/digest.md is updated with today's date; - every entry has a title, an arXiv link and a one-line summary"

# Manage schedules
/schedule list           # list active schedules
/schedule remove     # delete a schedule
/schedule run        # fire a schedule immediately
/schedule pause      # pause without deleting
/schedule resume     # resume a paused schedule

Note: /schedule add requires a cron expression (5 fields, e.g. */10 * * * *). To schedule with natural language (โ€œevery 10 minutesโ€), just ask in chat โ€” the agent translates it via the schedule_task tool.

Output goes wherever the taskโ€™s prompt tells it to write โ€” there is no enforced output directory, so make the prompt specific about file locations. Run /schedule list to review schedules; the agent is also made aware of the active schedules via a `` context block, so you can just ask it whatโ€™s scheduled.

--rubric "" is optional. When set, a separate reviewer (the auxiliary model, with read-only access to the workspace) grades the finished run against the checklist and re-runs the task once with the reviewerโ€™s feedback if a bullet fails; without a rubric no grading happens at all. Name concrete deliverables the reviewer can check โ€” files that must exist, sections they must contain, minimum counts. When you schedule in chat, the agent fills the rubric itself if your request names such outputs.

Cost note: each scheduled run consumes LLM tokens. Delete unused schedules with /schedule remove to avoid accumulating charges.

๐Ÿ”Back to top

๐Ÿช Examples & Recipes

A curated collection of official examples, advanced usage patterns, and community-contributed recipes to help you get the most out of EvoScientist.

๐Ÿ‘‰ Browse all examples & recipes

๐Ÿ”Back to top

๐Ÿ”Œ MCP Integration

Add external tools via MCP servers with a single command:

# Usage
EvoSci mcp add   [-- args...]

# Example
EvoSci mcp add sequential-thinking npx -- -y @modelcontextprotocol/server-sequential-thinking

[!TIP] For command options, config fields, tool routing, wildcard filtering, and troubleshooting, see the MCP Integration Guide.

๐Ÿ”Back to top

๐Ÿ“ฑ Channels

Connect messaging platforms so they share the same agent session as the CLI:

# Usage
EvoSci channel setup 

# Example
EvoSci channel setup telegram

Multiple channels can run concurrently โ€” comma-separate names in the config:

channel_enabled: "telegram,slack,feishu,qq"

The channel can also be started interactively with /channel in the CLI session.

[!TIP] For per-channel setup guides, capability matrix, architecture details, and troubleshooting, see the Channel Integration Guide.

๐Ÿ”Back to top

๐Ÿ“š Acknowledgments

This project builds upon the following outstanding open-source works:

  • LangChain โ€” A framework for building agents and LLM-powered applications.
  • DeepAgents โ€” The batteries-included agent harness.
  • jiuwenswarm โ€” A framework for coordinating agent swarms to tackle complex tasks.

We thank the authors for their valuable contributions to the open-source community.

๐Ÿ”Back to top

๐ŸŽฏ แฏ“โžค Roadmap

Coming soon:

  • [x] ๐Ÿ–ฅ๏ธ Full-screen TUI and classic CLI interfaces
  • [x] ๐Ÿ“ป EvoMemory v1.0 shipped
  • [x] โš’๏ธ 200+ predefined skills built in
  • [x] ๐Ÿงฉ Built-in research-lifecycle skills shipped
  • [x] ๐Ÿ‘‹ Human-in-the-loop action approval
  • [x] ๐Ÿฆพ Agent-initiated human clarification
  • [x] ๐Ÿ“‘ Technical report on the way
  • [x] ๐Ÿ” OAuth sign-in (CLI coding agent subscribers)
  • [x] ๐Ÿ“บ Web app with workspace UI
  • [x] โฐ Scheduled tasks (cron-style, via /schedule)
  • [ ] ๐Ÿ“น Demo and tutorial in the works
  • [ ] ๐Ÿ“Š Benchmark suite to be released

Stay tuned โ€” more features are on the way!

๐Ÿ”Back to top

๐ŸŒ Project Roles

Core Contributors

Contributors

Jakub Kaliski, Jakub Filipiuk, Yuyue Zhao, Jan Piotrowski, Wiktor Cupiaล‚, Xinhao Yi, Shuyu Guo, Andreas Sauter, Wenxiang Hu, Jacopo Urbani, Zaiqiao Meng, Jun Luo, Lun Zhou

Xiaoyi DeepResearch Team and the wider open-source community contribute to this project.

For any inquiries or collaboration opportunities, please contact: [email protected]

๐Ÿ”Back to top

๐Ÿค Contributing

We welcome contributions from developers, researchers, and AI coding agents at all levels. Our Contributing Guidelines are designed for both humans and AI agents โ€” covering architecture, patterns, extension guides, and code standards to help you contribute safely and effectively.

๐Ÿ‘ฅ Community Contributors

โš—๏ธ Join the EvoScientist community to discuss AI-driven research, share experiment results, and help shape the future of automated scientific discovery.

  • Discord โ€” Ask questions, share findings, and collaborate with researchers and developers in real-time.
  • WeChat โ€” Connect with our Chinese-speaking research community.

Every contribution brings us one step closer to a future where AI accelerates scientific breakthroughs for all of humanity.

๐Ÿ“ˆ Star History

๐Ÿ”Back to top

๐Ÿ“ Citation

If you find our paper and code useful in your research and applications, please cite using this BibTeX:

@article{evoscientist2026, 
  title={EvoScientist: Towards Multi-Agent Evolving AI Scientists for End-to-End Scientific Discovery}, 
  author={Yougang Lyu and Xi Zhang and Xinhao Yi and Yuyue Zhao and Shuyu Guo and Wenxiang Hu and Jan Piotrowski and Jakub Kaliski and Jacopo Urbani and Zaiqiao Meng and Lun Zhou and Xiaohui Yan}, 
  journal={arXiv preprint arXiv:2603.08127}, 
  year={2026} 
}

๐Ÿ”Back to top

๐Ÿ“œ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ”Back to top

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add evoscientist/evoscientist