Train ML models from CSV, on your own machine.

llm.rs handles classification, regression, semi-supervised self-training, clustering, anomaly detection, and offline reinforcement learning — then exports a portable ONNX model. No cloud, no account, no notebooks.

6
task types
0
cloud calls
ONNX
portable export
CSV → ONNX
$ llm dataset data/iris.csv
registered dataset 3f2a91c7 (150 rows, 5 columns)
$ llm train --task classification …
job 8c1d04e2 completed · accuracy 0.973
$ llm export --job-id 8c1d04e2 --output model.onnx
wrote model.onnx (12.4 KB)

Everything happens locally.

Your CSV and trained artefacts never leave your machine. Datasets, jobs, metrics, and models persist to local SQLite storage.

Six task types

Classification, regression, semi-supervised, clustering, anomaly detection, and offline RL share one workflow.

Local-first and private

No uploads, no API keys, no accounts. Everything persists to a local SQLite database on your disk.

ONNX is the contract

Every successful job exports a portable .onnx model that runs in any ONNX-compatible runtime, independent of the training code.

Two surfaces, one engine

A native desktop app for the visual workflow, or the llm CLI for scripts and headless training — same Rust core underneath.

Jobs and metrics

Every training run is a tracked job with accuracy, F1, and loss metrics you can inspect and compare.

Offline reinforcement learning

Train RL policies without a simulator service — environments run locally alongside the model.

See it in action

Register a CSV, train a model, export ONNX — three commands, all local.

Train a classifier
$ llm train --task classification \
    --algorithm logistic_regression \
    --features sepal_length,sepal_width,petal_length,petal_width \
    --label species
job 8c1d04e2 completed · accuracy 0.973 · f1 0.968
Register a dataset
$ llm dataset data/iris.csv
registered dataset 3f2a91c7 (150 rows, 5 columns)
Export ONNX
$ llm export --job-id 8c1d04e2 --output model.onnx
wrote model.onnx (12.4 KB)

How the CLI works

CSV in, ONNX out — a three-step local pipeline.

01

Register a dataset

Point llm at a CSV file. Columns, types, and labels are inferred and stored in the local dataset registry.

llm dataset data/iris.csv
02

Train a job

Pick a task and algorithm, choose features and label — the job runs locally and records metrics as it goes.

llm train --task classification …
03

Export ONNX

A successful job exports a portable .onnx model that runs in any ONNX-compatible runtime — no Rust required downstream.

llm export --job-id … --output model.onnx

Get started

Desktop builds for macOS, Windows, and Linux are on the releases page. Or build the CLI from source with Cargo.

Build the CLI
$ cd crates
$ cargo build --release -p llm-cli
$ ./target/release/llm dataset data/iris.csv
$ ./target/release/llm train --task classification …
$ ./target/release/llm export --job-id <id> --output model.onnx

Prebuilt desktop bundles are on the releases page — see the README for details.