Robin — Multi-Agent Disease Discovery System
Robin is FutureHouse's open-source multi-agent system for automating early-stage scientific discovery. Given just a disease name, Robin orchestrates literature search, hypothesis generation, ranking, and (optionally) experimental data analysis to produce a ranked list of:
- Experimental assays to test pathogenic mechanisms
- Therapeutic candidates likely to work against the top-ranked assay
- (Optional) Re-ranked candidates after Finch analyzes any provided wet-lab data
Reported in arXiv:2505.13400 and demonstrated end-to-end on 10 diseases (Glaucoma, Celiac, Friedreich's Ataxia, NASH, etc.) — example outputs ship in the repo.
Prerequisites
- Python ≥ 3.12
- An LLM API key (defaults to
o4-mini, setOPENAI_API_KEY; any LiteLLM-compatible provider works) - An
EDISON_API_KEYfor the literature/precedent components (Crow / Falcon / Owl) — get one at https://platform.edisonscientific.com/profile - Wet-lab data analysis step additionally needs Finch access on the platform (skippable)
Install
git clone https://github.com/Future-House/robin.git
cd robin
uv venv .venv && source .venv/bin/activate
uv pip install -e '.[dev]'
cp .env.example .env
# Edit .env to add EDISON_API_KEY and OPENAI_API_KEY (no quotes)
Docker option (recommended for clean environments):
docker build -t robin .
docker run -p 8888:8888 --env-file .env robin
# Open the http://127.0.0.1:8888/lab/tree/robin_demo.ipynb URL Jupyter prints
Run
Either open robin_demo.ipynb in Jupyter, or use programmatically:
from robin import RobinConfiguration, experimental_assay, therapeutic_candidates
config = RobinConfiguration(
disease_name="Idiopathic Pulmonary Fibrosis",
# Optional explicit overrides (otherwise read from env):
# edison_api_key="...",
# llm_name="claude-opus-4-5",
num_queries=5, # literature queries per stage
num_assays=10, # candidate assays to generate
num_candidates=20, # therapeutic candidates to propose
)
# Stage 1 — generate + rank experimental assays
assay_results = experimental_assay(config)
# Stage 2 — propose + rank therapeutic candidates against the top assay
candidate_results = therapeutic_candidates(config)
# (Optional) Stage 3 — analyze wet-lab data, re-rank
# from robin import data_analysis
# updated = data_analysis(config, dataset_path="my_screen.csv")
What you get back
Robin writes everything to robin_output/<DISEASE>_<TIMESTAMP>/:
robin_output/IPF_2026-05-08_14-30/
├── experimental_assay_summary.txt
├── experimental_assay_detailed_hypotheses/ # one .txt per assay, full reasoning
├── experimental_assay_literature_reviews/ # supporting lit reviews
├── experimental_assay_ranking_results.csv # pairwise comparison results
├── therapeutic_candidates_summary.txt
├── therapeutic_candidate_detailed_hypotheses/
├── therapeutic_candidate_literature_reviews/
├── ranked_therapeutic_candidates.csv # final ranked list with scores
└── (if data_analysis run)
└── data_analysis/ # Finch outputs, consensus_results.csv
Demo recipe (no wet-lab data)
from robin import RobinConfiguration, experimental_assay, therapeutic_candidates
config = RobinConfiguration(disease_name="Friedreich's Ataxia")
experimental_assay(config) # ~10–20 min, $5–20 in LLM + Edison credits
therapeutic_candidates(config) # ~20–40 min
# Open ranked_therapeutic_candidates.csv to see results
The repo also ships examples/<disease>/ — pre-generated outputs for 10 diseases. For a no-credit demo, just open these example folders and walk through the structure.
When to use Robin vs alternatives
| Need | Use |
|---|---|
| End-to-end disease → assays + candidates | Robin (this skill) |
| Single literature question | Crow |
| Deep review on a topic | Falcon |
| Analyze a dataset you already have | Finch |
| Just chemistry / molecule design | Phoenix |
Cost / latency expectations
- A full Robin run takes 30 min – 2 hours for typical diseases.
- LLM costs typically $10–$50 per disease with
o4-minidefaults; more with larger models. - Edison credits are consumed by every literature search — budget accordingly.
Caveats
- Robin produces hypotheses to test, not validated science. Treat its ranked candidate list as a starting point for wet-lab work, not as evidence.
- The data_analysis stage requires Edison platform access (Finch). Without it, stages 1–2 still work fully.
- Default LLM is
o4-mini— changellm_nameinRobinConfigurationfor higher-quality runs. - Examples in
examples/show typical output structure including occasional errors — useful for debugging your own run.