Browse by type

NeuriCo (Neural Co-Scientist, inspired by Enrico Fermi) takes structured research ideas and coordinates agents to find resources, design and run experiments, analyze results, and document the work.

| Feature | Description |
|---|---|
| Minimal Input | Provide a title, domain, and hypothesis; agents handle the research workflow |
| Agent-Driven Research | Finds literature, datasets, and baselines before running experiments |
| Multi-Provider Support | Works with Claude Code, Codex, and Gemini CLI |
| AutoResearch | Iteratively proposes, executes, scores, and checkpoints improvements |
| HITL AutoResearch | Adds a manager and human decision points to AutoResearch |
| Domain-Agnostic | Supports ML, data science, AI, systems, theory, and more |
| Smart Documentation | Produces reports, code, results, and optional papers |
| GitHub Integration | Optionally creates repositories and pushes results |
Minimal (choose one):
Provider access:
Recommended for GitHub publishing:
repo scope; create one and follow ConfigurationChoose Docker or local uv and use the same route throughout.
git clone https://github.com/ChicagoHAI/neurico.git
cd neurico
./neurico setup --quick
For Codex or Gemini, run ./neurico setup instead.
Install the Docker route with one command
curl -fsSL https://raw.githubusercontent.com/ChicagoHAI/neurico/main/install.sh | bash
The installer clones NeuriCo into ./neurico and opens the full setup wizard.
uv (native)git clone https://github.com/ChicagoHAI/neurico.git
cd neurico
uv sync
cp .env.example .env
claude # or: codex, gemini
More information about provider authentication, workspace location, and optional services is available under Configuration.
Create a YAML idea file:
idea:
title: "Do LLMs distinguish causation from correlation?"
domain: artificial_intelligence
hypothesis: >
Explicit causal prompts improve causal-reasoning accuracy compared with
otherwise equivalent direct prompts.
Submit it and keep the printed <idea_id>:
| Docker | Local uv (native) |
|---|---|
./neurico submit path/to/idea.yaml |
uv run python src/cli/submit.py path/to/idea.yaml |
Additional input formats and submission options are available under Idea submission.
Replace <idea_id> with the ID printed during submission.
| Mode | Docker | Local uv (native) |
Behavior |
|---|---|---|---|
| Standard | ./neurico run <idea_id> |
uv run python src/core/runner.py <idea_id> |
Run the full pipeline once, from resource discovery to paper |
| AutoResearch | ./neurico run <idea_id> --autoresearch |
uv run python src/core/runner.py <idea_id> --autoresearch |
Build a scored baseline, then test and retain improvements |
| HITL AutoResearch — web | ./neurico hitl-web <idea_id> |
uv run python src/cli/hitl_web.py <idea_id> |
Participate in iterative research through the browser |
| HITL AutoResearch — terminal | ./neurico hitl-cli <idea_id> |
uv run python src/cli/hitl_cli.py <idea_id> |
Participate in iterative research through the terminal |
Detailed workflows and options are available under Research modes.
That's it—NeuriCo turns your hypothesis into experiments, evidence, and a reproducible research project.
Claude Code, Codex, and Gemini CLI use OAuth login, not API keys. Log in once on the host:
claude # or: codex, gemini
In Docker mode, credentials are automatically mounted into containers.
Workspaces default to workspaces/. With Docker, change the location through
the configuration menu:
./neurico config
With local uv, copy the workspace example and set parent_dir:
cp config/workspace.yaml.example config/workspace.yaml
workspace:
parent_dir: "/path/to/your/workspaces"
auto_create: true
.env)With Docker, configure environment variables through the interactive menu:
./neurico config
With local uv, edit .env directly. Here's what each variable does:
GitHub publishing — GITHUB_TOKEN is required only when publishing to
GitHub; GITHUB_ORG is optional (uses the personal account if empty)
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | GitHub Classic Personal Access Token (create here, select repo scope) |
GITHUB_ORG |
No | GitHub org name (default: personal account) |
Paper Finder and agent API keys
Paper Finder — S2_API_KEY and either OPENROUTER_KEY or
OPENAI_API_KEY required for full paper-finder; COHERE_API_KEY optional
(improves ranking)
| Variable | Required | Description |
|---|---|---|
OPENROUTER_KEY |
Yes, unless OPENAI_API_KEY is set |
OpenRouter access for paper-finder, IdeaHub conversion, and LLM repo naming |
OPENAI_API_KEY |
Yes, unless OPENROUTER_KEY is set |
Direct OpenAI access for paper-finder, IdeaHub conversion, and LLM repo naming |
S2_API_KEY |
For paper-finder | Semantic Scholar API key (get here) |
COHERE_API_KEY |
No | Improves paper-finder ranking (~7% boost) |
Agent API Keys — optional, provided to the agent during automated experiments
| Variable | Purpose |
|---|---|
ANTHROPIC_API_KEY |
Claude API access |
GOOGLE_API_KEY |
Google AI / Gemini API access |
OPENROUTER_KEY |
OpenRouter multi-model access |
HF_TOKEN |
Hugging Face model/dataset access |
WANDB_API_KEY |
Weights & Biases experiment tracking |
NeuriCo accepts YAML, Markdown or text, and IdeaHub pages. Follow the Idea quickstart to prepare your first idea. See the complete Idea guide for all available fields and options.
| Input | Docker | Local uv (native) |
|---|---|---|
| YAML | ./neurico submit <idea.yaml> |
uv run python src/cli/submit.py <idea.yaml> |
| Markdown or text | ./neurico submit-local idea.md |
uv run python src/cli/submit_local.py idea.md |
| IdeaHub | ./neurico fetch <ideahub_url> |
uv run python src/cli/fetch_from_ideahub.py <ideahub_url> |
Without --submit, Markdown, text, and IdeaHub inputs are converted to a YAML
draft for review; submit the reviewed draft later with the YAML command above.
Add --submit to submit the converted YAML directly to NeuriCo.
If GITHUB_TOKEN is configured, submission also creates and prepares a
research repository.
| Flag | Purpose |
|---|---|
--no-github |
Disable repository creation for this submission |
--github-org ORG |
Create the repository in a GitHub organization |
--private |
Create a private repository |
--no-hash |
Omit the random hash from the generated repository name |
Standard performs one end-to-end research run: it finds resources, designs and executes experiments, analyzes the results, and writes a paper draft. Choose it when you want one complete pass without iterative improvement.
| Docker | Local uv (native) |
|---|---|
./neurico run <idea_id> |
uv run python src/core/runner.py <idea_id> |
| Flag | Default | Purpose |
|---|---|---|
--provider claude\|codex\|gemini |
claude |
Select the research worker provider |
--compute-backend local\|dsi-slurm\|modal |
local |
Select where experiments execute |
--timeout SECONDS |
3600 |
Set the experiment-runner timeout |
--no-full-permissions |
full permissions | Restore normal provider permission prompts |
--no-write-paper |
paper enabled | Skip paper generation |
--paper-style neurips\|icml\|acl\|ams |
domain default | Select the paper template |
--no-github |
GitHub when configured | Keep the run local |
--force-fresh |
reuse workspace | Ignore an existing workspace and start again |
Remote compute backends
| Backend | Setup |
|---|---|
modal |
Run modal token new on the host. Docker automatically mounts ~/.modal.toml. |
dsi-slurm |
Requires University of Chicago DSI cluster access and an SSH host configured as login.ds. |
Advanced Standard pipeline controls
| Flag | Purpose |
|---|---|
--pause-after-resources |
Review resources before experimentation |
--skip-resource-finder |
Use an already prepared workspace |
--resource-finder-timeout SECONDS |
Change the resource-finder timeout; default 2700 |
--use-scribe |
Use the optional notebook-oriented execution path |
--enable-scoring |
Add a sealed rule-maker and scorer stage |
--comment-mode |
Apply targeted changes from comments in the submitted idea |
AutoResearch starts from a scored baseline and improves it iteratively. Each iteration proposes one change, runs the experiment, and scores the result. The change is kept only when it improves the current best score.
Create a scored baseline and run one improvement iteration by default.
| Docker | Local uv (native) |
|---|---|
./neurico run <idea_id> --autoresearch |
uv run python src/core/runner.py <idea_id> --autoresearch |
Resume an earlier AutoResearch run without repeating resource discovery or baseline creation.
| Docker | Local uv (native) |
|---|---|
./neurico run <idea_id> --continue-autoresearch |
uv run python src/core/runner.py <idea_id> --continue-autoresearch |
Use this when a Standard run already has useful results but no AutoResearch baseline. NeuriCo scores the existing workspace and prepares it for continuation; it does not run an improvement iteration.
| Docker | Local uv (native) |
|---|---|
./neurico run <idea_id> --bootstrap-autoresearch-baseline |
uv run python src/core/runner.py <idea_id> --bootstrap-autoresearch-baseline |
Continue from the new baseline with --continue-autoresearch.
| Flag | Default | Purpose |
|---|---|---|
--autoresearch-iterations N |
1 |
Set the number of improvement iterations |
The Standard provider, compute, permission, paper, and GitHub options also apply to AutoResearch.
Advanced AutoResearch and bootstrap controls
| Flag | Default | Purpose |
|---|---|---|
--proposer-timeout SECONDS |
900 |
Set proposal-generation timeout |
--rule-maker-timeout SECONDS |
1800 |
Set scoring-contract construction timeout |
--scorer-timeout SECONDS |
600 |
Set scoring timeout |
--manifest-trimmer-timeout SECONDS |
300 |
Set bootstrap manifest-trimmer timeout |
--bootstrap-rule-maker |
off | Retrofit scoring without creating AutoResearch continuation state |
For continuation requirements and details about scoring, checkpoints, and recovery, see the AutoResearch guide.
Human-in-the-loop (HITL) AutoResearch adds a manager that coordinates the research agents and asks for your input at key decisions. You can review plans and proposals, give feedback, and guide which research directions continue. The web and terminal interfaces connect to the same manager conversation and workspace.
| Docker | Local uv (native) |
|---|---|
./neurico hitl-web <idea_id> |
uv run python src/cli/hitl_web.py <idea_id> |
The web interface opens at `http:
$ claude mcp add NeuriCo \
-- python -m otcore.mcp_server <graph>