Distillate — Orchestrate ML auto-research agents
Your research alchemist. Conjure ML experiments that run themselves. Distill insights from everything you read.
What is Distillate?
Distillate is an open-source research platform that orchestrates autonomous research agents. It turns your research questions into agents that run ML experiments, track results, and report what they find — while keeping your paper library organized with highlights and AI summaries.
At the center is Nicolas, your research alchemist. He spawns research agents that live in tmux sessions, iteratively improving your models and reporting results. He also tends the library — your paper collection, flowing from Zotero through any reading surface (reMarkable, iPad, desktop) into structured notes.
The core loop: read papers, run experiments, see them improve on the chart, distill what you learned, repeat. What you read informs what you try. What you try informs what you read next.
$ distillate
─── ⚗️ Nicolas ──────────────────────────────
Your research alchemist.
🧪 4 experiments · 12 runs · 1 running
📚 42 papers read · 7 in queue
> /conjure tiny-matmul --duration 30m
🧪 Spawning research agent...
Created distillate-xp-tiny-matmul
Research agent spawned — 30 min budget, will report when done.
> /distill tiny-matmul
🔬 Distilling 8 runs...
Best: run-7 (loss 0.0023, -42% from baseline)
Key insight: block size 64 with gradient accumulation
outperforms larger batches on this scale.
Skills
Nicolas responds to 9 skills organized across three roles:
The Laboratory 🧪
| Skill | Description |
|---|---|
/conjure |
Summon a research agent — launch an experiment from a research question |
/steer |
Guide a running agent — adjust goals or change direction |
/assay |
Deep analysis of experiment results with cross-run comparison |
/distill |
Extract insights from an experiment's session histories |
/survey |
Scan all experiments for new runs and breakthroughs |
/transmute |
Turn paper insights into experiment ideas |
The Library 📚
| Skill | Description |
|---|---|
/brew |
Sync papers, process highlights, refresh the library |
/forage |
Discover trending papers and reading suggestions |
/tincture |
Deep extraction from a single paper's highlights and notes |
Quick Start
Install
pip install distillate
# or
uv pip install distillate
Requirements
- Claude Code (
claudeCLI) — Distillate runs through your Claude Code subscription. No separate API key needed. - Zotero — for paper management (optional if you only run experiments)
Launch
distillate # Start the Nicolas REPL
distillate --init # Run the setup wizard (first time)
distillate --sync # Classic sync-only workflow
Or use the desktop app for a full IDE experience.
Desktop App
The Distillate desktop app provides an IDE-style layout with four tabs:
- Control Panel — metric chart, session timer, goal tracking, experiment overview
- Session — live terminal attached to the running Claude Code agent
- Results — runs grid with research insights (key breakthrough, lessons learned, dead ends)
- Prompt — view and edit PROMPT.md with markdown rendering
New users get one-click onboarding: launch a demo experiment from the sidebar, or connect your Zotero library from the papers panel. Context-aware suggestions in the chat adapt to what you're looking at — experiment-specific actions when viewing an experiment, paper-specific actions when viewing a paper.
The desktop app connects to the same backend as the CLI — everything stays in sync.
How It Works
The core research loop:
-
📜 Add papers — Save papers to Zotero, read and highlight on any device. Nicolas extracts highlights, generates summaries, and builds your knowledge base.
-
⚗️ Conjure experiments — Describe a research question or point at a paper. Nicolas drafts the prompt, sets up a git repo, and spawns an autonomous research agent to run it.
-
🔬 Distill insights — As experiments run, Nicolas tracks every iteration with metrics, diffs, and decisions. Distill the results to see what worked, what didn't, and why.
-
🔗 Connect the dots — Link papers to experiments. When a run implements a technique from a paper, credit it with
inspired_by. Use/transmuteto turn paper insights into experiment ideas. What you read informs what you try next.
Every experiment lives in a git repo. Every paper lives in your Zotero library. Notes are plain markdown. There's no lock-in — Distillate enhances your existing tools.
Configuration
All settings live in ~/.config/distillate/.env. See .env.example for the full list.
The setup wizard (distillate --init) walks you through connecting Zotero, choosing a reading surface, and configuring optional features.
For advanced configuration, engagement scores, scheduling, and GitHub Actions automation — see the Power users guide.
Development
git clone https://github.com/rlacombe/distillate.git
cd distillate
uv venv --python 3.12
source .venv/bin/activate
uv pip install -e .
pytest tests/
License
MIT
Metadata
Release files for distillate 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| distillate-0.7.0.tar.gz | 2.2 MB | With provenance | Details for distillate-0.7.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| distillate-0.7.0-py3-none-any.whl | Python 3 | none | any | Details for distillate-0.7.0-py3-none-any.whl |
Total release size: 2.6 MB
Release files / distillate-0.7.0.tar.gz
| Download URL | distillate-0.7.0.tar.gz |
|---|---|
| Size | 2.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0b368b62628bb6ce1c25fcec6ee699237b4bb7e1dd1e78084350c064e65eab1
|
|
BLAKE2b-256 checksum How to use checksums |
9571e864a36d093cbd576410f9cc36883653ea42bcade7fd90a63a385073709c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 11, 2026.
Transparency logRelease files / distillate-0.7.0-py3-none-any.whl
| Download URL | distillate-0.7.0-py3-none-any.whl |
|---|---|
| Size | 356.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e03d345689fda5f74c3fefce392b96978772c35489b5b78cadd57bd65b1595ef
|
|
BLAKE2b-256 checksum How to use checksums |
e4033881e31854084c25741b788bbd65dd657fecf350b7dac5dadc0c45a6d784
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 11, 2026.
Transparency logSecurity for distillate 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for distillate-0.7.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.