Anthropic2
View docs
Distillation platformOpen research release · 2026

Distillery

Describe how a large model becomes a small one. Keep the model—and the evidence.

distill.py● ready
distillery = Distillery(base_url=os.environ["DISTILLERY_URL"])
dataset = distillery.datasets.create("./finance_world.jsonl")
run = distillery.distill(dataset, recipe="auto").wait()
immutable dataresolved recipeportable model
Recipes, not switches

Your method is plain Python.

Distillery exposes the actual decisions behind distillation: which labels to keep, when to call a teacher, what counts as valid, and which examples reach training. Built-in and user-defined recipes run through the same immutable data path and evaluation gate.

my_recipe.py
class RejectHard:
    name = "reject_hard.v1"

    def run(self, ctx, examples):
        ctx.teacher_label(examples)
        return [ex for ex in examples
                if ctx.is_valid(ex) and ctx.agrees_with_oracle(ex)]
01

Curate

Import traces, isolate held-out splits, and freeze every source, label, and hash.

02

Synthesize

Ask a teacher only for missing training labels. Preserve provenance and reject invalid outputs.

03

Train

Resolve a built-in or user-defined recipe, then run one finite, sealed training job.

04

Evaluate

Compare the student on frozen data and make quality, cost, and failure states visible.

The first experiment

TinyRamp is the test, not the testimonial.

We ran two recipes through the same sealed pipeline: standard sequence distillation and a user-defined rejection-sampling method. The same 0.5B student, the same frozen evaluation, and losing states left intact.

Read the experiment
Immutable datasets
User-defined recipes
Frozen evaluation
Portable artifacts

Open documentation

Clone it. Change the recipe. Run it yourself.

View on GitHub