Skip to main content
The CLI is flash. Run flash --help or flash <command> --help for inline help.

Global flags

Auth & identity

flash login
[--api-key KEY] [--freesolo-url URL] [--api-url URL]
Log in with your Freesolo API key. Flash verifies the key against Freesolo, saves it locally, and prints the resolved identity on success. Defaults: --api-key from FREESOLO_API_KEY; --freesolo-url from FREESOLO_BASE_URL (else https://api.freesolo.co); --api-url from FLASH_API_URL.
flash whoami
Show the identity your stored key resolves to.
flash version
Print the Flash version.

Discovery

flash models
List the supported base model ids. See Supported models for algorithms, reasoning, and pricing.
flash gpus
List active validated GPU classes with VRAM, provider availability, and estimated $/hr. Selection is automatic by default; [gpu] exact_type pins an exact class.

Environments

flash env setup [flags]
Scaffold a starter project into the current directory: environment.py, a tiny dataset/train.jsonl, configs/sft.toml (SFT), configs/rl.toml (GRPO), and configs/opd.toml (OPD), plus a TRAINING.md playbook for coding agents with current CLI usage, reward guidance, and common run mitigations. Existing files are preserved.On an interactive terminal it first runs a short survey about the interaction shape (single- vs multi-turn) and whether to train with reasoning, then scaffolds to match. The flags below skip the questions; a non-interactive run (no TTY, CI, or -y) takes the defaults (single-turn, no reasoning). A flag that disagrees with an already-scaffolded project is ignored with a warning.
flash env push --name NAME [PATH]
Publish a local Freesolo environment to Freesolo’s managed Environments Hub (private) and print its id (your-org/name). --name is required and is normalized to a lowercase hyphen slug. You can also pass an explicit namespace/name; Freesolo validates the namespace against your Freesolo org namespace and rejects a mismatch. PATH defaults to the current directory. Pass . or any folder with environment.py at its root to upload helper modules, dataset/, README.md, and common sibling sidecars (what gets uploaded lists the extensions). A single .py file or a folder with one top-level .py file also works for small smoke tests.
flash env pull ENV_ID [PATH] [-o OUTPUT] [-f]
Download a published environment, or one file from it, to local disk. ENV_ID must be a managed Freesolo hub slug your-org/your-env; the package is downloaded through the Flash control plane. Without PATH, the whole environment is written to a directory. With PATH, only that file is fetched. -o sets the output path; -f overwrites an existing output.
flash env list
List local environment sources you can publish.
flash env delete ENV_ID [-y]
Delete a managed Freesolo Hub environment. ENV_ID must be a lowercase namespace/name Hub id; GitHub refs and local paths cannot be deleted from the Hub. Pass -y/--yes to skip the confirmation prompt.

Training

flash train CONFIG [flags]
Submit a managed training run from a TOML config and follow its logs. Before submit, Flash checks your prepaid balance against the pre-flight estimate. Successful runs are billed at the quoted Flash cost (see Cost & billing). Cost and billing explains the pre-flight --cost estimate.

Run management

flash runs
List your runs with state, algorithm, cost, and model.
flash status RUN_ID [-f]
Print a run’s status, including its current or final cost record. -f/--follow polls status until the run reaches a terminal state without replaying worker logs.
flash log RUN_ID [-f]
Print a run’s full logs, including worker console/error artifacts. -f/--follow streams new logs until the run reaches a terminal state.
flash cancel RUN_ID
Cancel a run. The CLI waits for the managed worker to stop before returning, which can take several minutes.

Serving

flash deploy RUN_ID[/step-N] [--dry-run]
Deploy a final adapter or checkpoint. Every real deploy resolves an immutable revision, runs a mandatory bounded smoke, and activates the stable run-id alias only after verification. --dry-run previews without creating a deployment. Serving is billed per token.If no final adapter exists, use the RUN_ID/step-N selector listed by flash checkpoints RUN_ID.
flash checkpoints RUN_ID
List a run’s saved SFT, GRPO, or OPD checkpoints available to deploy. Serve one with flash deploy RUN_ID/step-N. When output is not a styled terminal, each line is single-space separated (step N RUN_ID/step-N), so it splits cleanly in scripts (awk, grep "step N").
flash chat TARGET -m MESSAGE [flags]
Send a message to a deployment. TARGET is the stable RUN_ID alias or a full immutable revision. RUN_ID/step-N is not a chat target.
flash deployments [--json]
List each active run alias and its currently active verified revision. Human output shows run id, step, revision, state, verification time, OpenAI model, and detail. --json includes complete records and openai_base_url.
flash undeploy RUN_ID
Disable the stable alias and all immutable revisions for the run.

Export

flash export --adapter-id ID --repository OWNER/NAME [flags]
Export a trained adapter to a HuggingFace repo you own (created if it doesn’t exist). --adapter-id is either RUN_ID for the final adapter or RUN_ID/step-N for a saved checkpoint. --repository is required.

Next steps

Quickstart

The commands in a full end-to-end run.

Troubleshooting

Fix common CLI and auth errors.