| Mid-run evaluation | Sanity-check the half-trained model against a fixed prompt at every checkpoint, before the run finishes. | onCheckpoint({ infer }) |
| Early stopping on diverging loss | Abort a run automatically when the loss curve goes the wrong way, and stop the GPU on the backend too. | onLog, AbortSignal, trainer.cancel() |
| Slack / Discord notifications | Post to a webhook on completion or failure, without leaving the trainer file. | onCompleted / onFailed, fetch |
| Programmatic runs (no CLI) | Drive training from a Next.js API route, a cron worker, or CI without going through arkor dev / arkor start. | runTrainer, Trainer.start / wait |
| Customizing the starter templates | Treat the scaffolded templates as starting points. Change the dataset, hyperparameters, callbacks, and base model. | createTrainer, DatasetSource |