For devs who ship code daily and themselves never 🛋️

No workout?
No Claude Code.

fit-or-die puts your weekly training goal in front of your terminal. Train, snap one photo, and code all you want. Fall behind, and Claude Code and Codex CLI go on strike until you move. Your squad sees every check-in. 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
Jack Friks
Jack Friks @jackfriks
🍪 free unlimited lounge cookies · cookies are a commodity, Jack. Health is not.
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 photo. Your problem.

Nobody assigns you anything. You set the bar, a photo proves the work, your squad watches, and your terminal enforces the deal you made with yourself.

1

Set your own goal

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

2

Check in with a photo

You trained: open fit-or-die on your phone, one tap, one photo, done in five seconds. Gym mirror, treadmill screen, sweaty selfie, the trail. One check-in per day, taken where the work happened. No watch to charge, no app to authorize, no sync to wait for.

3

Code or sweat

On pace? Claude works like nothing's there. Behind? Blocked until you move. Just trained? fit checkin and you're back in the same second. No provider in the middle, so nothing can be "still syncing".

🏋️ Lift 🏃 Run 🚴 Ride 🏊 Swim ⚽ Sport 🧘 Class 🚶 Walk

Any movement you'd be proud to photograph. No watch required, no account to connect, no API that can rate-limit your discipline.

Built for real life

Your escape routes,
ranked by dignity.

Sometimes you trained and forgot to log it, sometimes life happens, and sometimes you simply choose cowardice. All supported. You set the weekly number and the pace style; the photo is the part you can't talk your way around.

fit checkinBest
"I literally just worked out."

Photo in, gate open, same second. From the terminal with a file, or from your phone in two taps. Nothing to sync, nobody to ask for permission.

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.

Leagues · live in your dashboard

Shame is a feature. Invite friends.

Solo willpower is cute. A league is effective. Your company vs. that other startup, your group chat vs. the entire internet. Everyone's check-in photos land in one feed, and the scoring is rigged so sandbagging doesn't pay.

1

Start a league

Create it in your dashboard, set a goal floor (say, minimum 2 days/week to score) and share one invite code. That's the whole setup.

2

Everyone fights their own goal

Your goal stays yours. Hit it and you bank √goal points for the squad: a kept 4× week is worth 2× a kept 1× week. Miss it, or smash the emergency glass, and you bank a zero. Ambition only pays if you sustain it.

3

The feed is the referee

Every check-in shows up with its photo. Teammates applaud it, or flag it. Two flags and that check-in stops scoring for the league. Your own terminal stays unlocked: nobody gets to lock your work but you.

4

Average in, ghosts down

Weekly league score = points ÷ ALL members. The guy who joined and vanished is dragging your average right now. Best average over a 4-week season tops the global table.

🥇
WIP
WIP.co makers
24 devs · shipping streaks, but for squats
1.61season score
🥈
IH
Indie Hackers bootstrappers
51 devs · MRR charts and resting heart rates, both up
1.38season score
🥉
PR
ThePrimeagen's chat terminal gang
87 devs · they were already doing cardio, unfair
1.19season score
4
WD
r/webdev div centerers
132 devs · finally aligned something: their spines
0.74season score
5
HN
Hacker News commenters
418 devs · commenting is not cardio
0.12season score

Illustrative standings. Your league's spot is up for grabs every 4 weeks.

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
  • Photo check-ins, one tap from your phone
  • Leagues: shared feed, cheers & flags, 4-week seasons
  • Hosted backend & photo storage (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, GPS routes, health records. There is no health integration at all, so there is nothing to read.
  • Your social accounts. Nothing to connect, nothing to post, nothing to revoke.
  • Where the photo was taken. EXIF is stripped in your browser before the upload.
  • Nothing is ever sold or handed to ad networks.
✅ Only reads
  • Your check-ins: the day, the activity type, your optional note, and the photo you chose to send.
  • Your weekly goal and streak.
  • One status check per prompt (a yes/no, with no content attached).
  • Photos stay private to you and the leagues you joined, and are deleted after a few months.

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?

You haven't checked in yet. Run fit checkin and it opens on your phone, or fit checkin ./photo.jpg if the picture is already on this machine. The gate opens the same second: there's no provider in the middle to blame.

What if production is on fire and I'm 2 check-ins 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 check-in?

One photo per day, taken where you trained. Lift, run, ride, swim, class, sport, or a walk you're not ashamed of. Two sessions on a Tuesday is still one Tuesday, so the weekly goal counts days (1 to 7). You pick the number and the pace style: chill, steady or hardcore.

So I could just photograph the same gym twice?

You could. You'd also be a person editing photos to lie to a terminal you paid for. The guardrails are deliberately simple and honest: one check-in per day, the exact same photo file is never accepted twice, and in a league every photo is on display, where two teammates flagging it kills its points. The referee is people who know you, which works better than a watch you can strap to a dog.

Do you sell my data?

No, and there is barely any to sell: no watch, no OAuth, no heart rate. Just your check-ins, private to you and your leagues, photos deleted after a few months. No feeds, no ads, no data brokers.

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 your check-in photos. You install a tiny CLI, set your weekly goal, and arm the lock. No servers, no Docker, no account to connect.

You'll need: macOS or Linux  ·  Node 18+  ·  a phone with a camera  ·  Claude Code and/or Codex CLI

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

Then train and run fit checkin. Backend and photos fully managed. You just move.

No commitment, no commit.

Your move,
keyboard athlete.

Set a goal. Train. Photograph it. Let your terminal keep you honest.

Get fit or die coding 💀