Prerequisites
- Python 3.11 or 3.12, with
uv,pipx, orpipto install the CLI. - A Freesolo API key, created in your dashboard at
freesolo.co. Commands that contact Freesolo, including
--dry-runand an SFT--cost, authenticate with it. A GRPO or OPD--costquotes offline from the catalog. These checks do not start paid training or allocate a training GPU.
Step 1: Install the CLI
Step 2: Log in
FREESOLO_API_KEY instead of passing --api-key.
Step 3: Create a project
Every run and environment belongs to a project. Create one and keep its UUID; the next steps need it.flash projects list shows them all later.
Step 4: Scaffold an environment
Already have a published environment id, yours or one shared with you? Set it as[environment] id in your config and skip ahead to step 6.
flash env setup leaves any file that already exists
untouched.
Already have a training loop?
Already have a training loop?
Skip the hand-editing. Point your coding agent (Claude Code, Cursor, etc.) at
the environment guide and have it find and port your
existing reward and dataset into
environment.py. A prompt to start from:Step 5: Publish your environment
An environment is the task and reward your model trains on. Publish the scaffolded one to the managed Environments Hub to get an id:your-org/<your-project>/starter.
Step 6: Configure and validate your run
flash env setup already wrote project into each generated config. Open
configs/sft.toml and set the one thing that’s yours, the environment id from
the previous step:
configs/sft.toml
--dry-run applies the real submit-time checks, including
unrecognized [train] keys, without starting paid training or allocating a
training GPU:
--cost returns the estimate directly without starting paid training
or allocating a training GPU. Review the cost
details before submitting:
--cost prints the pre-flight USD estimate and returns.
Step 7: Train
This is the first flow command that starts paid training. Flash checks your
org balance before submission and bills successful runs at the accepted quote.
Ctrl-C to detach. The run keeps going
on the server, and you can
follow it again any time:
done when training finishes.
Start small: finish one short run end to end before you scale up. When you do,
raise train.epochs or train.max_examples and change little else.
Step 8: Deploy
Serve the trained adapter on Freesolo’s managed serving service. Serving is billed per token for requests you send:--wait so the chat step starts only after the deployment is ready. You
can also deploy and tear down from the dashboard.
Step 9: Chat
Essential commands
The commands you used above, plus the ones you’ll reach for next. Runflash <command> --help for the full set of flags, or see the
CLI reference.
Next steps
How Flash works
The loop behind a run, and the concepts each command refers to.
Training in depth
SFT, GRPO, and OPD, config options, monitoring, and cost.
Build an environment
Replace the starter task with your own data and reward.
Deploy & chat
Serving billing and the OpenAI-compatible API.