For devs who ship code daily and themselves never 🛋️

No workout?
No Claude Code.

fit-or-die connects your fitness tracker to your terminal. Hit your own weekly workout goal and code all you want. Fall behind, and Claude Code and Codex CLI go on strike until you move. You chose this. Remember that.

commit & push-up 💪

$17 one-time, never a subscription  ·  30-day money-back guarantee

~/side-project-#47
Claude Code v2.1.212
Sonnet 5 · xhigh effort
~/side-project-#47
claude

👆 Go on, type something. It won't help.

Exhibit A

Proof it works:
this actual madman.

Same laptop. Same MRR obsession. Suspiciously better deltoids. If Marc Lou can ship code AND abs, your excuse just got deprecated.

Not simulated. Terrifyingly real. Marc Lou's before-and-after transformation: soft and hunched on the left, flexing and shredded on the right
Marc Lou, indie hacker before → after · same guy, more push-ups

The transformation is documented. fit-or-die just makes it non-optional: hit your weekly workouts or the terminal that ships your empire goes dark.

Photo used with the founder's blessing. Yes, that's really him.

The gospel according to @levelsio

Pieter Levels ships startups solo and lifts like it's part of the stack. Here's the man himself on why founders who train win. Read it, then close the tab and go move.

Curated from levels.io & @levelsio on X. Not affiliated, just correct.

Leaderboard

The fitness dev
hall of fame.

The devs who ship code AND deltoids. There's a spot open at the bottom, and it has your name on it.

🥇
Marc Lou
Marc Lou @marclou
🔥 abs & MRR · shredded transformation, WHOOP-age obsessed
156w🔥 streak
🥈
Pieter Levels
Pieter Levels @levelsio
🔥 +30kg muscle · lifts 4×/week, Deadlift-ETF believer
148w🔥 streak
🥉
Leo
Leo @leo
Built fit-or-die. Now legally required to use it.
3w🔥 streak
4
FB
fbicalho
Emergency unlocks: frequent. Squats: theoretical.
0wstreak
5
💀
ships_at_3am @ships_at_3am
All keyboard, no kettlebell.
0w💀 streak

Ranked by weekly-goal streak. The legends are real; this board is illustrative until the live one ships. #6 is up for grabs.

How it works

Your goal. Your data. Your problem.

Nobody assigns you anything. You set the bar, your watch keeps the score, and your terminal enforces the deal you made with yourself.

1

Set your own goal

3 workouts a week. 4. Whatever you decide. fit-or-die tracks your pace through the week, so Thursday-with-zero-workouts you gets caught early, not on Sunday night.

2

Connect Strava

Real workouts from your actual watch. Garmin, Apple Watch, Whoop & friends already sync into Strava, so one connection covers them all. No self-reporting, no honor system. If it's not on the tracker, it didn't happen.

3

Code or sweat

On pace? Claude works like nothing's there. Behind? Blocked until you move. Just trained? fit check syncs on the spot and lets you back in.

Strava Apple Watch Garmin Whoop Oura Fitbit

One Strava connection, read-only. Any watch that syncs to Strava counts. More direct integrations coming.

Built for real life

Your escape routes,
ranked by dignity.

Sometimes the sync is late, sometimes life happens, and sometimes you simply choose cowardice. All supported. And you define what counts as a workout: default is any tracked 20+ minutes, configurable to your taste.

fit checkBest
"I literally just worked out."

Forces a fresh sync from your wearable right now, plus a grace window while slow data finds its shoes. We block slackers, not victims of sync latency.

fit pauseValid
"My ankle has unionized."

Sick, injured, traveling? Goal and streak freeze, no guilt tax. This is a commitment device, not a punishment device. Rest is training too.

fit unlock --emergency☠️
"I accept the consequences."

Instant access, always. Your streak dies and it goes on your permanent record (fit history). Freedom has a price. The price is shame.

Squads · coming soon

Shame is a feature. Invite friends.

Solo willpower is cute. A squad is effective. Coming next: team up with your coworkers, everyone sees the week's scoreboard, and everyone gets notified when someone smashes the emergency glass.

Squad dispatchesIllustrative jokes
🫣

Emergency unlock used. Reason: "production is on fire." Plot twist: it was a side project.

you, probably · streak reset to 0
🧯

Emergency unlock used. One calendar had meetings. The other had leg day.

your future self · squad notified
🪦

Streak pronounced dead. Cause: "just one quick prompt."

the tiny coroner in your terminal · logged forever

Pricing

Cheaper than the gym
membership you don't use.

One payment. Yours forever. No subscription to forget to cancel, unlike that gym.

One-time payment💀
$29$17

$17, one-time. Pay once, yours for life.

  • The full lock on Claude Code & Codex CLI
  • Real workouts, verified via Strava
  • Hosted backend & wearable sync (nothing to deploy)
  • Weekly goal & pace tracking
  • Streaks, history & pause mode
  • Emergency unlocks (logged forever)
  • Live fit-or-die status bar (Claude Code)
  • 30-day money-back guarantee
Get fit-or-die · $17

Launch price $17, going up to $29 soon. Pay once, no subscription. 💀

Yes, you can bypass it.

You're a developer with filesystem access. Congratulations on defeating software you installed yourself. fit-or-die is a commitment device, not a prison. The DRM is your own shame, and fit unlock --emergency makes the honest exit faster than cheating. Bypassing the lock takes 10 seconds. Explaining it in the group chat is cardio.

Transparency

What it can see.
And what it can't.

You're installing a hook that runs on every prompt. Fair to ask what it does. Here's the whole truth.

🔒 Never touches
  • Your prompts. The gate never reads what you type to Claude or Codex.
  • Your code. It never reads your files or repos; the only thing it writes is its own hook line in your agent's settings.
  • Heart rate or GPS routes. Not read, not stored.
  • Your Strava feed. It never posts, likes, or reads social data.
  • Nothing is ever sold or handed to ad networks.
✅ Only reads
  • Whether a workout happened: type, start/end time, duration.
  • Your weekly goal and streak.
  • One status check per prompt (a yes/no, with no content attached).
  • Strava, read-only, and revocable in one click at Strava.

The hook is a single visible line in your settings.json. It runs as you (no root), and fit hook uninstall removes it in a second. It's a commitment device, not DRM.

FAQ

Questions from people
looking for a loophole.

Does it work with Codex CLI too, or just Claude Code?

Both. One fit hook install arms the lock on every coding agent it finds on your machine: Claude Code and OpenAI Codex CLI. Same gate, same rules, same shame. Switching agents doesn't switch off your conscience.

I worked out this morning and I'm still blocked. Fix?

Run fit check. It forces a fresh sync from your wearable instead of waiting for the platform's lazy schedule. There's also a grace window, so a workout always counts for its day even if the data arrives late. We block slackers, not victims of sync latency.

What if production is on fire and I'm 2 workouts behind?

fit unlock --emergency. Instant, unlimited, always available, even offline. Your streak dies and it's logged in your history (fit history knows all). Save prod. Face the consequences.

What counts as a workout?

By default: any workout of 20+ minutes recorded by your tracker. You can tune it (weekly count, minimum duration, pace style: chill, steady or hardcore). What you can't do is type it in manually. Your watch is the referee.

Which trackers work?

Today you connect Strava (read-only, revocable in one click). Garmin, Apple Watch, Whoop, Oura and friends already push their workouts into Strava, so one connection covers basically every watch. Direct integrations with more providers are on the roadmap.

Do you sell my health data?

No. We read the bare minimum to answer one question: "did you move enough this week?" No feeds, no ads, no data brokers. Your resting heart rate is between you and your watch.

Why would I do this to myself?

Because you've had a gym membership since January. Because "I'll go after this one PR" is a lie with 14 open tabs. Because external pressure works and you know it. You've tried being nice to yourself. Try this.

Setup

Two minutes to
your first block.

We host the backend and the wearable sync. You install a tiny CLI, connect Strava, and arm the lock. No servers, no Docker, nothing to deploy.

You'll need: macOS or Linux  ·  Node 18+  ·  a Strava account  ·  Claude Code and/or Codex CLI

$ curl -fsSL https://api.fit-or-die.com/install.sh | sh
$ fit setup # opens your browser: login, goal & Strava
$ fit hook install # arm the lock (Claude Code & Codex CLI)
$ claude # or codex. good luck 💪

Backend and wearable sync fully managed. You just move.

No commitment, no commit.

Your move,
keyboard athlete.

Set a goal. Connect your watch. Let your terminal keep you honest.

Get fit or die coding 💀