Skip to main content
The Next Race logo
BlogContact

tnr v0.2: Edit, Schedule, and Track Activities From Your Terminal

by The Next Race

Two weeks ago we shipped the first version of tnr — a small CLI that doubled as an MCP server for AI agents. It could list and create races, plans, and library workouts, and read or update your physiology. That was enough to be useful, but not enough to actually run a season from the terminal.

Today's release, v0.2, fills in the gaps. Three new things:

1. Edit and delete, not just list and create

Every entity now has the full lifecycle. You can rename a plan, move a race date, mark a workout completed, or delete a session you no longer need:

tnr race update 29 --date 2026-05-17 --priority A
tnr plan update 702 --title "Copenhagen Marathon (2026) — A-race block"
tnr workout delete 1073 -y

Every command supports --json for piping into jq, the same as before.

2. Schedule workouts inside a plan

This was the biggest gap in v0.1. The CLI could create an empty training plan, but had no way to actually populate it. Now there's a full tnr schedule namespace:

tnr schedule list 702 --from 2026-05-01 --to 2026-05-31
tnr schedule add 702 --title "Tempo 4K" --sport run --date 2026-05-21 \
                     --type tempo --description "20 min tempo @ threshold"
tnr schedule update 702 9712 --date 2026-05-23 --completed
tnr schedule remove 702 9712 -y

Planned workouts live inside a plan and show up on the same calendar you see in the web app.

3. Activities and linking

We shipped activity linking on the web a couple of weeks ago — the ability to attach a completed Strava or Wahoo activity to the planned session it fulfilled. v0.2 brings the same idea to the CLI:

# What did I actually do recently?
tnr activity list --from 2026-05-01 --sport run

# Which Strava imports haven't been linked to a plan yet?
tnr activity list --unlinked --source strava

# Link activity #4321 to planned workout #9710 in plan 702
tnr schedule link 702 9710 --activity 4321

Activities are read-only — they come from Strava, Wahoo, or HealthKit. But the link is yours to manage, and now it's scriptable.

All this in Claude, Cursor, and Claude Code too

The same surface is exposed as MCP tools, so you can have a conversation with your data:

"Schedule a 90-minute Z2 ride in my Copenhagen plan next Tuesday."

"Which of my recent Strava runs aren't linked to a planned session yet?"

"Move all my long runs this week to Sunday instead of Saturday — I'm travelling."

The full tool list lives on the /mcp page, and the same API token works for both CLI and MCP.

Install

npm install -g @thenextrace/tnr@latest
tnr --version  # 0.2.1

If you've already got tnr installed, npm install -g @thenextrace/tnr@latest is enough to upgrade. Existing tokens keep working.

The full command list is on the /cli page, or run tnr --help after install.

Ready to start training?

Create your first training plan and start tracking your progress today.