Install the toolkit, verify it offline, and choose a chat, embedding, or evaluation path.

Install and build

Start from a clean checkout:

npm install
npm run build
node dist/cli/index.js --help

The package build stays separate from the docs site build. npm run build compiles the CLI and library into dist/.

Choose your path

Goal Start here What you can run offline
Distill chat responses and prepare SFT Chat response distillation and SFT freeze, fake-labelled distillation, CPU train/resume/evaluate/export
Train or distill embeddings 10-minute offline embeddings validate, CPU train/resume, compare, export
Explore evaluation and contracts Evaluate runs and verify artifacts manifests, checkpoints, metrics, hashes, SDK examples

The runnable defaults are offline:

  • persona generation is deterministic unless you explicitly choose a provider
  • dataset simulation is deterministic unless you explicitly choose a provider
  • translation uses local-pseudo unless you explicitly choose a provider strategy

That means you can validate both tracks without an API key or model download. Production recipes are not enabled by the CPU fixtures.

Generate a first deterministic dataset

Use the bundled receptionist profile:

node dist/cli/index.js simulate-dataset \
  --profile sample-receptionist \
  --out outputs/receptionist-sample.jsonl \
  --limit 3 \
  --mode full_tool_trajectory

node dist/cli/index.js validate-dataset outputs/receptionist-sample.jsonl

The validator should report:

  • Rows: 3
  • Tool calls: 3
  • Tool results: 3
  • Rows with tools: 3
  • Dataset is valid.

Generate from a checked-in scenario file

Use the public example config directly when you want to inspect the scenario JSON:

node dist/cli/index.js generate-personas \
  --config examples/receptionist/scenario.json \
  --out outputs/receptionist-personas.json \
  --count 2

node dist/cli/index.js simulate-dataset \
  --config examples/receptionist/scenario.json \
  --out outputs/receptionist-from-config.jsonl \
  --limit 3 \
  --mode full_tool_trajectory

node dist/cli/index.js validate-dataset outputs/receptionist-from-config.jsonl

Generated files should go into ignored local directories such as outputs/ or tmp/, not back into examples/ or src/.

Try a second scenario

The toolkit is not receptionist-specific. This retail support sample uses the same scenario model:

node dist/cli/index.js simulate-dataset \
  --config examples/retail-support/scenario.json \
  --out outputs/retail-support-sample.jsonl \
  --limit 2 \
  --mode full_tool_trajectory

node dist/cli/index.js validate-dataset outputs/retail-support-sample.jsonl

Next steps