Native

April 10, 2026 · View on GitHub

NeuriCo - AI-Powered Research Acceleration

GitHub Stars Python 3.10+ Docker License X Follow Discord


NeuriCo (Neural Co-Scientist, inspired by Enrico Fermi) is an autonomous research framework that takes structured research ideas and orchestrates AI agents to design, execute, analyze, and document experiments across diverse domains.

NeuriCo Demo
Key Features
FeatureDescription
Minimal InputJust provide title, domain, and hypothesis - agents handle the rest
Agent-Driven ResearchLiterature review, dataset search, baseline identification
Multi-Provider SupportWorks with Claude, Codex, and Gemini (raw CLI by default, notebooks optional)
Pragmatic ExecutionCreates resources when they don't exist, always proceeds
Domain-AgnosticML, data science, AI, systems, theory, and more
Smart DocumentationAuto-generates reports, code, and results
GitHub IntegrationAuto-creates repos and pushes results

Requirements

Minimal (one of):

  • Option 1: git + Docker (recommended)
  • Option 2: git + Python 3.10+ + uv

Resource — access to at least one AI coding CLI (uses OAuth login, not API keys):

Recommended:

  • GitHub token (classic, repo scope) — for auto-creating repos and pushing results. Create here

Optional API keys (enhance functionality):

KeyPurpose
OPENAI_API_KEYLLM-based repo naming, IdeaHub fetching, paper-finder
S2_API_KEYSemantic Scholar literature search (get here)
OPENROUTER_KEYMulti-model access during experiments
COHERE_API_KEYImproves paper-finder ranking (~7%)
HF_TOKENHugging Face private models/datasets
WANDB_API_KEYWeights & Biases experiment tracking

Setup tiers:

  • Basic: CLI login + GITHUB_TOKEN — full NeuriCo functionality
  • Enhanced: + OPENAI_API_KEY — LLM repo naming + IdeaHub support
  • Full: + S2_API_KEY (+ optional COHERE_API_KEY) — paper-finder literature search
Quick Start

1. Install (clones repo, pulls Docker image, walks you through setup):

curl -fsSL https://raw.githubusercontent.com/ChicagoHAI/neurico/main/install.sh | bash

2. Run — pick or submit an idea on IdeaHub and go:

cd NeuriCo
./neurico fetch <ideahub_url> --submit --run --provider claude --write-paper --full-permissions

That's it! The agent fetches the idea, creates a GitHub repo, runs experiments, writes a paper, and pushes everything.

Manual setup (alternative to one-liner)
git clone https://github.com/ChicagoHAI/neurico
cd neurico
./neurico setup      # Interactive wizard: pulls Docker image, configures API keys

Setup

Docker provides an isolated environment with GPU support, CLI tools, LaTeX, and paper-finder pre-installed. The pre-built image includes everything — Python venvs, CLI tools (Claude/Codex/Gemini), LaTeX, and paper-finder — so you skip the long build step.

# Clone the repo (provides CLI scripts, config, templates, and idea examples)
git clone https://github.com/ChicagoHAI/neurico
cd neurico

# Option A: Pull pre-built image (faster, ~2 min download)
docker pull ghcr.io/chicagohai/neurico:latest
docker tag ghcr.io/chicagohai/neurico:latest chicagohai/neurico:latest

# Option B: Build from source (~10-15 min)
./neurico build

# Configure
./neurico config   # Interactive menu for API keys and settings

# Login to your AI CLI (one-time, on your host machine)
claude   # or: codex, gemini
# Credentials are automatically mounted into containers

Note: Cloning the repo is required even when pulling the pre-built image. The repo provides the ./neurico CLI, config files, templates, and idea examples. The Docker image provides the runtime environment (Python, tools, LaTeX). At runtime, config and templates are mounted from your local clone into the container, so you can customize them without rebuilding.

GPU support requires NVIDIA Container Toolkit:

sudo apt install nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Native Installation

For users who prefer running directly on their system.

curl -LsSf https://astral.sh/uv/install.sh | sh   # Install uv
git clone https://github.com/ChicagoHAI/neurico
cd neurico
uv sync
cp .env.example .env   # Edit: add your API keys
claude   # Login to your AI CLI

Configuration

CLI Authentication

Claude Code, Codex, and Gemini CLIs use OAuth login (not API keys). Login once on your host machine:

claude    # or: codex, gemini

In Docker mode, credentials are automatically mounted into containers.

Environment Variables (.env)

The easiest way to configure is the interactive menu:

./neurico config

Or copy .env.example to .env and edit manually. Here's what each variable does:

GitHub — token required; org optional (uses personal account if empty)

VariableRequiredDescription
GITHUB_TOKENYesGitHub Classic Personal Access Token (create here, select repo scope)
GITHUB_ORGNoGitHub org name (default: personal account)

Paper FinderOPENAI_API_KEY + S2_API_KEY required for full paper-finder; COHERE_API_KEY optional (improves ranking)

VariableRequiredDescription
OPENAI_API_KEYFor paper-finderUsed for paper-finder, IdeaHub fetching, and LLM repo naming
S2_API_KEYFor paper-finderSemantic Scholar API key (get here)
COHERE_API_KEYNoImproves paper-finder ranking (~7% boost)

Agent API Keys — optional, provided to the agent during automated experiments

VariableDescription
ANTHROPIC_API_KEYClaude API access
GOOGLE_API_KEYGoogle AI / Gemini API access
OPENROUTER_KEYOpenRouter multi-model access
HF_TOKENHugging Face model/dataset access
WANDB_API_KEYWeights & Biases experiment tracking

Workspace Configuration

Research workspaces are created in the directory specified by config/workspace.yaml.

Default: workspace/ in the project root (already gitignored).

To customize: Copy config/workspace.yaml.example to config/workspace.yaml and edit parent_dir:

workspace:
  parent_dir: "/path/to/your/workspaces"
  auto_create: true

Customizing Templates and Skills

Templates in templates/ control agent behavior. In Docker mode, these are mounted from the host, so you can edit them without rebuilding:

What to ChangeTemplate File
Experiment workflow (phases 1-6)templates/agents/session_instructions.txt
Paper writing structuretemplates/agents/paper_writer.txt
Resource finding behaviortemplates/agents/resource_finder.txt
Research methodologytemplates/base/researcher.txt
Domain-specific guidancetemplates/domains/<domain>/core.txt
Claude Code skillstemplates/skills/<skill-name>/SKILL.md

See ARCHITECTURE_AND_ROADMAP.md for details on the template system.

Usage

Fetch from IdeaHub (Easiest)

Browse ideas at IdeaHub, then fetch and run:

# Docker
./neurico fetch <ideahub_url> --submit --run --provider claude --write-paper --full-permissions

# Native
uv run python src/cli/fetch_from_ideahub.py <ideahub_url> --submit --run --provider claude --write-paper --full-permissions

This one command: fetches the idea, converts it to YAML, submits it, creates a GitHub repo, runs the research agent, and writes a LaTeX paper.

You can also break it into steps:

./neurico fetch <url>             # Just fetch and convert to YAML
./neurico fetch <url> --submit    # Fetch, convert, and submit (creates GitHub repo)

Submit Your Own Idea

Write an idea YAML (see examples in ideas/examples/) and submit:

# Docker
./neurico submit ideas/examples/ml_regularization_test.yaml
./neurico run <idea_id> --provider claude --full-permissions

# Native
uv run python src/cli/submit.py ideas/examples/ml_regularization_test.yaml
uv run python src/core/runner.py <idea_id> --provider claude --full-permissions

Run Options

OptionDescription
--provider claude|gemini|codexAI provider (default: claude)
--timeout SECONDSExecution timeout (default: 3600)
--full-permissionsAllow agents to run without prompts
--no-githubRun locally without GitHub integration
--github-org ORGGitHub organization (default: GITHUB_ORG env var)
--privateCreate private GitHub repository
--no-hashSimpler repo names (skip random hash)
--write-paperGenerate LaTeX paper after experiments
--paper-style neurips|icml|aclPaper format (default: neurips)

Other Commands

./neurico config      # Configure API keys and settings
./neurico shell       # Interactive shell inside the container
./neurico login       # Login to CLI tools inside the container
./neurico help        # Show all commands
System Architecture
flowchart LR
    subgraph Input
        A[Research Idea<br/>YAML] --> B[Submit CLI]
        C[IdeaHub URL] --> B
    end

    subgraph Processing
        B --> D[GitHub Repo<br/>Created]
        D --> E[Research Agent]
        E --> F[Literature Review]
        E --> G[Experiment Design]
        E --> H[Code Execution]
    end

    subgraph Output
        F --> I[Documentation]
        G --> I
        H --> I
        I --> J[Notebooks]
        I --> K[Results & Plots]
        I --> L[GitHub Push]
    end

Directory Structure:

ideas/
  submitted/      <- New research ideas
  in_progress/    <- Currently executing
  completed/      <- Finished research

workspace/<repo-name>/
  .claude/skills/ <- Claude Code skills (paper-finder, literature-review, etc.)
  src/            <- Python scripts for experiments (default mode)
  results/        <- Metrics, plots, models
  logs/           <- Execution logs and transcripts
  artifacts/      <- Models, checkpoints
  notebooks/      <- Jupyter notebooks (only with --use-scribe)
  paper_draft/    <- LaTeX paper output (only with --write-paper)
  .neurico/ <- Original idea spec
Research-First Philosophy

You can submit minimal ideas - agents will research the details:

  • Just provide: title, domain, research question
  • Agent searches for: datasets, baselines, evaluation methods
  • Grounds in literature when resources exist
  • Creates synthetic data/baselines when they don't
  • Always proceeds to execution - doesn't get stuck

Example minimal idea:

idea:
  title: "Do LLMs understand causality?"
  domain: artificial_intelligence
  hypothesis: "LLMs can distinguish causal from correlational relationships"
  # That's it! Agent handles the rest

Full specification example:

idea:
  title: "Clear, descriptive title"
  domain: machine_learning
  hypothesis: "Specific, testable hypothesis"

  background:
    description: "Context and motivation"
    papers:
      - url: "https://arxiv.org/..."
        description: "Why this paper is relevant"
    datasets:
      - name: "Dataset name"
        source: "Where to get it"

  methodology:
    approach: "High-level strategy"
    steps: ["Step 1", "Step 2"]
    baselines: ["Baseline 1", "Baseline 2"]
    metrics: ["Metric 1", "Metric 2"]

  constraints:
    compute: gpu_required
    time_limit: 3600

See ideas/schema.yaml for full specification.

Supported Domains
DomainExamples
Artificial IntelligenceLLM evaluation, prompt engineering, AI agents, benchmarking
Machine LearningTraining, evaluation, hyperparameter tuning
Data ScienceEDA, statistical analysis, visualization
SystemsPerformance benchmarking, optimization
TheoryAlgorithmic analysis, proof verification
Scientific ComputingSimulations, numerical methods
NLPLanguage model experiments, text analysis
Computer VisionImage processing, object detection
Reinforcement LearningAgent training, policy evaluation
Paper-Finder Integration

When S2_API_KEY and OPENAI_API_KEY are set, the container automatically starts the paper-finder service for high-quality literature search with relevance ranking.

  • With paper-finder: Agents get ranked, relevant papers via Semantic Scholar + LLM scoring
  • Without paper-finder: Agents fall back to manual search (arXiv, Semantic Scholar, Papers with Code)
  • Optional COHERE_API_KEY: Adds reranking for ~7% quality improvement

Paper-finder starts automatically in Docker — no extra setup needed.

Documentation

Contributing

Contributions welcome! Areas of interest:

  • New domain templates (biology, chemistry, social science, etc.)
  • Additional evaluation criteria
  • Integration with experiment trackers
  • Web interface
  • Multi-agent collaboration features

Citation

If you use NeuriCo in research, please cite:

@software{neurico_2025,
  title={NeuriCo: Autonomous Research Framework},
  author={Haokun Liu, Chenhao Tan},
  year={2025},
  url={https://github.com/ChicagoHAI/neurico}
}

Acknowledgments

Some skills in templates/skills/ were inspired by claude-scientific-skills (MIT License, K-Dense Inc.). See NOTICE for details.

License

Apache 2.0 - See LICENSE file


Ready to explore your research ideas?

./neurico fetch https://hypogenic.ai/ideahub/idea/YOUR_IDEA_ID \
    --submit --run --provider claude --full-permissions

For questions and feedback, open an issue or join our Discord.