Skip to main content

EvoScientist: Towards Self-Evolving AI Scientists for End-to-End Scientific Discovery

Project description

EvoScientist

Typing SVG

PyPI Project Page arXiv License

๐Ÿ”ฅ News

TODO

  • [27 Sep 2025] โ›ณ Our preprint is now live on [arXiv] โ€” check it out for details.

Overview

TODO

๐Ÿ“– Contents

โ›๏ธ Installation

[!TIP]
Use uv for installation โ€” it's faster and more reliable than pip.

For Development

# Create and activate a conda environment
conda create -n EvoSci python=3.11 -y
conda activate EvoSci

# Install in development (editable) mode
pip install EvoScientist
# or
pip install -e .

Option 1:

Install the latest version directly from GitHub for quick setup:

TODO

Option 2:

If you plan to modify the code or contribute to the project, you can clone the repository and install it in editable mode:

TODO

๐Ÿ”„ Upgrade to the latest code base
git pull
uv pip install -e .

๐Ÿ”‘ API Key Configuration

EvoScientist requires API keys for LLM inference and web search. You can configure them in two ways:

Option A: Environment Variables (Global)

Set keys directly in your terminal session. Add these to your shell profile (~/.bashrc, ~/.zshrc, etc.) to persist across sessions:

export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
export TAVILY_API_KEY="your_tavily_api_key_here"

Option B: .env File (Project-level)

Create a .env file in the project root. This keeps keys scoped to the project and out of your shell history:

cp .env.example .env

Then edit .env and fill in your keys:

ANTHROPIC_API_KEY=your_anthropic_api_key_here
TAVILY_API_KEY=your_tavily_api_key_here

[!WARNING] Never commit .env files containing real API keys to version control. The .env file is already included in .gitignore.

Key Required Description
ANTHROPIC_API_KEY Yes Anthropic API key for Claude (console.anthropic.com)
TAVILY_API_KEY Yes Tavily API key for web search (app.tavily.com)

โšก Quick Start

CLI Inference

You can perform inference directly from the command line using our CLI tool:

demo

python -m EvoScientist 

or

EvoSci # or EvoScientist

Optional arguments:

--workdir <path>   Override workspace directory for this session
--use-cwd          Use current working directory as workspace
--thread-id <id>   Resume a conversation thread
--no-thinking      Disable thinking display

Interactive Commands:

Command Description
/exit Quit the session
/new Start a new session (new workspace + thread)
/thread Show current thread ID and workspace path
/skills List installed user skills
/install-skill <source> Install a skill from local path or GitHub
/uninstall-skill <name> Uninstall a user-installed skill

Skill Installation Examples:

# Install from local path
/install-skill ./my-skill

# Install from GitHub URL
/install-skill https://github.com/owner/repo/tree/main/skill-name

# Install from GitHub shorthand
/install-skill owner/repo@skill-name

Runtime Directories

By default, the workspace is created under a hidden directory in the current project directory:

./.evoscientist/workspace/
  memory/   # shared MEMORY.md
  skills/   # user-installed skills
  runs/     # per-thread workspaces

You can force workspace to be the current directory via --use-cwd.

If you set EVOSCIENTIST_HOME, EvoScientist will place workspace/ under that directory instead of the project root:

Example with EVOSCIENTIST_HOME=~/.evoscientist:

~/.evoscientist/
  workspace/
    memory/
    skills/
    runs/

Script Inference

from EvoScientist import EvoScientist_agent
from langchain_core.messages import HumanMessage
from EvoScientist.utils import format_messages

thread = {"configurable": {"thread_id": "1"}}
question = "Hi?"
last_len = 0

for state in EvoScientist_agent.stream(
    {"messages": [HumanMessage(content=question)]},
    config=thread,
    stream_mode="values",
):
    msgs = state["messages"]
    if len(msgs) > last_len:
        format_messages(msgs[last_len:]) 
        last_len = len(msgs)
Output
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿง‘ Human โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Hi?                                                                                                             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿ“ AI โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Hi! I'm here to help you with experimental research tasks. I can assist with:                                   โ”‚
โ”‚                                                                                                                 โ”‚
โ”‚ - **Planning experiments** - designing stages, success criteria, and workflows                                  โ”‚
โ”‚ - **Running experiments** - implementing baselines, training models, analyzing results                          โ”‚
โ”‚ - **Research** - finding papers, methods, datasets, and baselines                                               โ”‚
โ”‚ - **Analysis** - computing metrics, creating visualizations, interpreting results                               โ”‚
โ”‚ - **Writing** - drafting experimental reports and documentation                                                 โ”‚
โ”‚                                                                                                                 โ”‚
โ”‚ What would you like to work on today?                                                                           โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Web Interface

TODO

๐Ÿ“Š Evaluation

TODO

๐Ÿ“ Citation

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

TODO

๐Ÿ“š Acknowledgments

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

  • Deep Agents โ€” A framework for building AI agents that can interact with various tools and environments.
  • Deep Agents UI โ€” A user interface for visualising and managing Deep Agents.

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

๐Ÿ“ฆ Codebase Contributors

Yougang Lyu
Yougang Lyu
Xi Zhang
Xi Zhang

For any enquiries or collaboration opportunities, please contact: youganglyu@gmail.com

๐Ÿ“œ License

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evoscientist-0.0.1.dev3.tar.gz (884.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evoscientist-0.0.1.dev3-py3-none-any.whl (916.1 kB view details)

Uploaded Python 3

File details

Details for the file evoscientist-0.0.1.dev3.tar.gz.

File metadata

  • Download URL: evoscientist-0.0.1.dev3.tar.gz
  • Upload date:
  • Size: 884.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for evoscientist-0.0.1.dev3.tar.gz
Algorithm Hash digest
SHA256 ddfc2c3f05d3697378c0da924b3cd398ecf1600ac352f416ec27833c5f32c694
MD5 102625152c52b54014fb08eb6f3dc7bf
BLAKE2b-256 f26ca23d2be6f3c530546d0c49786b78cd37cc3181efe67091fcb59030fae821

See more details on using hashes here.

File details

Details for the file evoscientist-0.0.1.dev3-py3-none-any.whl.

File metadata

File hashes

Hashes for evoscientist-0.0.1.dev3-py3-none-any.whl
Algorithm Hash digest
SHA256 4f226f0d6820dfa9e779b79061b0f5283d0977475638bdf4e0aa210ca0bf5067
MD5 e7d46524c4824b5231424106067ede0e
BLAKE2b-256 2d0036abb0e2a6655b733c676f827b94499aa57db71940dac665b4cf4db19a8c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page