LangChef
Reference

Commands

Generated from the contract inside the binary, so this table cannot claim a command that does not exist. 19 of 22 are live today. If you are here to learn the tool, start with your first evaluation instead.

The ones you will actually use

CommandWhen
langchef initOnce, in your project.
langchef approve rubricAfter you write or edit the rubric.
langchef judge run --arm XEvery time you want a version scored.
langchef label plan --budget 40Once at the start, then monthly.
langchef label import FILEAfter you have filled the plan in.
langchef calibrate reportAfter importing labels. Tells you if the judge is trustworthy.
langchef calibrate diffAfter changing the rubric. Tells you whether the change helped.
langchef baseline setOnce you have a version worth comparing against.
langchef compare --variant XThe question you came here to answer.
langchef memo renderTo write the decision down.

Everything, generated from the contract

Determinism

deterministic — same inputs, same output, always. seeded — random but reproducible from a recorded seed. cached — results are keyed on content, rubric hash and model, so re-running an unchanged suite is free.

CommandSummaryDeterminismWritesStatus
langchef contractEmit this contract as JSONdeterministiclive
langchef doctorVerify environment, credentials, pins, budgetdeterministiclive
langchef packs listList resolvable expertise packsdeterministiclive
langchef initScaffold the workspacedeterministicworkspacelive
langchef approve rubricRecord a human approval of the rubric as it stands. Gate onedeterministicevals/config.tomllive
langchef samplePull and stratify production tracesseededruns/<id>/sample.parquetM5
langchef label planChoose the labelling subset that maximises information per labeldeterministiclabels/<judge>.todo.jsonllive
langchef label importIngest returned human labelsdeterministiclabels/<judge>.jsonllive
langchef judge runScore examples against a pinned rubriccachedruns/<id>/scores.parquetlive
langchef calibrate reportAgreement: TPR, TNR, confusion matrix, Cohen's kappa, disagreement taxonomydeterministicruns/<id>/calibration.jsonlive
langchef calibrate diffRe-score a revised rubric against the same labels, report the deltadeterministicruns/<id>/delta.jsonlive
langchef eval runRun a suite over goldenscachedruns/<id>/M6
langchef baseline set | showPin a run as the referencedeterministicbaselines/live
langchef comparePaired deltas, confidence intervals, regression flags, minimum detectable effectdeterministicruns/<id>/compare.jsonlive
langchef triageSlice drill-down, deploy correlation, reproduction setdeterministicfindings/M6
langchef powerIs this many examples enough? Detection limit, required n, horizondeterministiclive
langchef experiment designPropose one or two designs with detection limit, sample size and costdeterministicexperiments/<id>.tomllive
langchef experiment approvePre-register a design. Editing it afterwards revokes the approvaldeterministicexperiments/<id>.tomllive
langchef experiment check | listDoes the run match what was registered?deterministiclive
langchef experiment readoutGated readout. Refuses an unapproved design or an unfinished rundeterministicruns/<id>/readout.jsonlive
langchef ledger append | queryThe persistent recorddeterministicledger/live
langchef memo renderDecision memo from run artifactsdeterministicmemos/live

Exit codes

CodeMeaningStatus
0okin use
1unexpected errorin use
2refused — an approval gate is unmetin use
3abstained — confidence below thresholdreserved — not yet emitted
4budget exhausted; report of what was left undone writtenreserved — not yet emitted
5pin mismatch — judge model, version or rubric hash movedin use

Two streams

Every command writes JSON to stdout for a program, and plain text to stderr for you. There is no --format flag; --help is the one exception, because it is written for people.

langchef calibrate report              # you read this
langchef calibrate report 2>/dev/null  # a script parses this

Other behaviour worth knowing