The app
Programs and the SPDK
Where programs live, how to create one and a tour of the editor you write them in.
Every program you write lives under Programs, in the navigation on the left. This is also where you find the program you are currently running and every run you have had so far. Let’s take a look around before we open the editor itself.
The programs page
The Programs page is split into a few parts:
- At the top, an Active program card, if you are running a program right now. It takes you straight to the run.
- Programs: everything you have written, each with the date you last edited it (e.g. “Edited Nov 12, 2026”).
- Runs: every time you have activated a program, whether it is still going or has ended. You can read all about runs in running a program.
If you have not written anything yet, the page greets you with Start your first program.
Creating a program
Press New program. Trainerflow creates a program called
“Untitled program”, with a single file, src/main.cl, and opens it in the
editor straight away.
To give the program a proper name, click its title at the top of the editor (the breadcrumb that reads Programs › Untitled program) and type. The new title is saved as you go.
If you want to try a different direction without losing what you have, press Duplicate in the editor’s header. Trainerflow asks you to confirm and then creates a copy of the program, files and all.
The SPDK
The editor is called the Sports Programming Development Kit, or SPDK for short. It fills the whole window and is made of three parts: the sidebar on the left, the editor in the middle and, on the right, either the simulator or the plan.

| Part | What it is for |
|---|---|
| Sidebar | The files of your program, its problems and your chats with the AI assistant. |
| Editor | Where you write Coach. |
| Simulator or plan | The simulator, a phone that runs your program exactly as the athlete will see it, or the plan, which projects the program weeks ahead. Plan in the header switches between the two. |
The simulator and the plan have a page of their own: the simulator.
The sidebar
The sidebar has a Program tab and an Insights tab. The insights tab holds the insights of the program. The Program tab has four sections, each of which you can collapse:
- Chats lists your conversations with the AI assistant. Press + to start a new one.
- Problems lists every error and warning in your program, with where it is. Click one to jump to it.
- Open files lists the files you have open in the editor.
- Project is the file tree of your program.
Files and folders
A program can be one file or many. Right-click in the Project tree to create a New file or a New folder, or right-click an existing one to Rename or Delete it. Press Enter to confirm a name and Esc to cancel.
A few rules apply:
- Every file is a Coach file and ends in
.cl. If you leave the extension out, the SPDK adds it for you. src/main.clis the program’s entry point and cannot be renamed, moved or deleted. Hover it and you will see Program entry point.- Deleting is permanent, and deleting a folder deletes everything inside it, so the SPDK asks first.
Splitting a program into files is a matter of imports:
main.cl imports the other files and uses what they define.
The editor
The editor highlights Coach, completes names as you type and underlines mistakes in place. Hover an underlined part to read what is wrong. When the program has errors, the Program tab shows a red dot, so you notice even when the problems list is collapsed.
Undo changes and Redo changes in the header step through your edits.
Saving
There is no save button. About a quarter of a second after you stop typing, the SPDK checks your program and saves it. If a save ever fails you will see a message saying so, and if your connection drops the SPDK tells you (Connection lost) and picks up again once it is back (Back online!).
Dependencies and the standard library
Every program depends on the coach standard library, at its
latest version, from the moment it is created. There is nothing to install or
configure: import what you need and use it.
import "coach/strength/squat.cl"
import "coach/common/rest.cl"
Activating
Once the program does what you want, press Activate in the header to start running it. Activate stays disabled while the program has errors. What happens next is the subject of running a program.