Skip to main content

Distillate — Orchestrate ML auto-research agents

Your research alchemist. Conjure ML experiments that run themselves. Distill insights from everything you read.

PyPI Python 3.10+ License: MIT   distillate.dev

Distillate desktop app

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 (claude CLI) — 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:

  1. 📜 Add papers — Save papers to Zotero, read and highlight on any device. Nicolas extracts highlights, generates summaries, and builds your knowledge base.

  2. ⚗️ 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.

  3. 🔬 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.

  4. 🔗 Connect the dots — Link papers to experiments. When a run implements a technique from a paper, credit it with inspired_by. Use /transmute to 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)

Source distribution for distillate 0.7.0
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)

Table of built distributions (wheels) for distillate 0.7.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page