WORKOUT BUDDY Download
iPhone · Apple Watch · App Store

THE MOST ADVANCED WORKOUT APP ON THE MARKET

A real AI coach powered by Claude. A hand-built SwiftUI Apple Watch app. A Lock Screen that logs sets without unlocking your phone. Built end to end by one developer who refused to cut corners.

Download on theApp Store Free to download · subscription required
  • Powered by Claude
  • SwiftUI watchOS app
  • HKWorkoutSession
  • ActivityKit Live Activity
  • LiveActivityIntent
  • Dynamic Island
  • WatchConnectivity
  • CMPedometer
  • WidgetKit
  • iOS 26 Liquid Glass
  • Siri App Intents
  • watchOS 26 Smart Stack
  • Swift 6 strict concurrency
  • 540+ automated tests
  • Offline-first sync

Powered by Claude

A COACH THAT READS YOUR TRAINING. NOT A CHATBOT.

Buddy runs on Claude — a frontier AI model — and every reply is grounded in your real data: your programs, your last eight sessions, your recovery ratings, your PRs, even which equipment you own. Ask for a change and it streams back, token by token, as a proposal card. Nothing touches your plan until you tap Apply.

  • Builds whole programs in chat — and rewrites them when life changes
  • Apply, Dismiss, or Undo — Undo restores the exact pre-change snapshot
  • Respects your equipment — dumbbell-only home gym? It will never propose a machine
  • Dictate with Siri — "Ask Workout Buddy" opens the chat with your question already typed, one tap from sending

Under the hood: token-by-token SSE streaming, prompt caching, and every AI proposal validated against a catalog whitelist before it can touch your data. The model can only propose — your phone owns every write.

Live demo — tap a prompt
BuddyYour AI coach

Every screen · One codebase

THE WHOLE APP, IN YOUR HAND.

01Today

NO START BUTTON. THE DAY IS ALREADY BUILT.

Today reads your program's rotation, picks the current day, and has the session built before the screen paints — every set pre-seeded with the weight and reps the engine derived from your last real working session for that exact day.

  • Sets arrive pre-filled — carried from your last working session, never a deload week
  • Volume moves per muscle — RP-style MEV/MRV rules, all 65 branches pinned by tests
  • PRs land mid-set — heavier, or the same weight for more reps

Twelve real captures at 1206 × 2622, composited inside one Apple product bezel at 1:1 pixel registration — no mockup, no re-drawn UI. The ring is CSS 3D transforms and a single requestAnimationFrame loop: no three.js, no GSAP, no dependency of any kind.

Live demo — drag the ring

1/ 12

The Workout Buddy Apple Watch
Keep scrolling BUILT FOR THE WRIST. PIECE BY PIECE.

Native SwiftUI · watchOS

A SCOREBOARD ON YOUR WRIST. NOT A SHRUNKEN PHONE.

The watch app is 100% hand-written SwiftUI — twenty-six Swift files, zero third-party dependencies. One full-screen face owns the display at a time: Lift, Rest, Paused, Session, Done. Giant chalk-line numerals you can read mid-set from six feet away.

  • Digital Crown dials weight and reps — tap a numeral to aim it, rotate to adjust with grid snapping
  • Double Tap logs the set on Apple Watch Series 9+ — pinch your fingers, keep lifting
  • Real HKWorkoutSession — live heart rate and calories, saved to your Activity rings
  • Phone in the locker? Fine. Sets queue offline and sync FIFO when you're reunited
  • Buddy works standalone on the wrist — the watch talks to the AI over its own connection

The workout engine is a pure Swift state machine with all 65 (phase, event) transitions pinned by tests — 93 native Swift tests run in ~4 seconds with no simulator. The Smart Stack widget even learns your habitual training hour using a circular mean of your last 12 session starts.

Live demo — this scoreboard works
12:04
Incline Barbell Bench Press

Tap 135 or 8, then scroll / drag / arrow-key to dial it — that's the Digital Crown, on its real 2.5 lb grid. Double-tap anywhere on the watch to log the set, just like the real gesture. Shown with rest timers switched on.

ActivityKit · WidgetKit · App Intents

LOG A SET WITHOUT UNLOCKING YOUR PHONE.

Between sets your phone sits on the bench, locked. The Live Activity keeps the rest timer one glance away — and its Log button actually logs. No Face ID, no app launch: the tap runs a native App Intent, auto-fills last session's weight with an auto-regulated rep target, and syncs when you're back.

  • Dynamic Island — rest countdown in the compact slot, live watch heart rate when expanded
  • Taps are never lost — every log is durably queued and replayed through the app's own logging path
  • Honest buttons — when a set truly needs typed numbers, the button says so instead of pretending
  • Steps widget reads the pedometer itself — the count climbs all day without the app ever launching

Six widget surfaces on iPhone plus four watch complication families. The rest countdown's staleDate mirrors the timer, so an abandoned Live Activity dims instead of lying. Start Workout also lives in Control Center and on the Action button (iOS 18).

Live demo — tap the island, then log a set
1:24 126 3/4
PUSH / PULL / LEGS Incline Barbell Bench Press REST 1:24 126
8 OF 20 SETS
Friday, July 24
9:41
PUSH 12:36
Incline Barbell Bench Press UP NEXT · SET 3 126 REST 1:24

That widget runs its own pedometer read inside the widget process — CMPedometer, no app launch, no stale numbers.

For the engineers reading

THE SPEC SHEET.

Everything above is marketing until you can grep it. Here's what's actually in the codebase.

Tests540+ automated

93 native Swift tests (46 XCTest + 47 Swift Testing, side by side) run via swift test in ~4 s with no simulator — plus 473 Jest tests across 22 suites. CI gates every merge.

ConcurrencySwift 6, strict

All pure-logic Swift targets compile in .swiftLanguageMode(.v6) with strict concurrency. The watch workout engine is a pure transition table — all 65 (phase, event) pairs pinned by one parameterized test.

AI safetyPropose-only

The Anthropic key lives in an edge function, never the binary. Every proposal is validated client-side against a catalog whitelist and equipment rules. Per-user budget reserved atomically in Postgres under SELECT … FOR UPDATE.

Lock ScreenLiveActivityIntent

Set logging with the phone locked: App Group queue + Darwin notifications replay every tap through the app's canonical logging path. Bounded queue, UUID dedupe, nothing dropped, nothing double-logged.

OfflineSync that survives

Every write goes through a persistent queue with coalescing, supersedes, exponential backoff, poison-entry rotation, and an epoch fence so a queued write can never resurrect wiped data. The gym has no signal — the app doesn't care.

MaterialsiOS 26 Liquid Glass

Real GlassView material with a documented three-tier tint system and runtime availability gating — every glass surface falls back gracefully on iOS 17–25, and Reduce Transparency swaps it for opaque.

Wrist~4,200 lines SwiftUI

26 Swift files, zero third-party watch dependencies. HKWorkoutSession + live heart rate, Digital Crown with grid snapping, Double Tap via handGestureShortcut, WatchConnectivity FIFO offline queue.

System surfacesEverywhere iOS goes

4 Siri App Shortcuts, iOS 18 Control Center + Action button control, 6 iPhone widget surfaces, 4 watch complication families, watchOS 26 Smart Stack relevance with circular-mean habit learning.

DataHistory that can't rot

24 SQL migrations, RLS everywhere. Logged workouts freeze as immutable snapshots — rename or delete an exercise and your history still says exactly what you lifted. HealthKit write-back counts toward Activity rings, deduped across devices.

Stack: Expo SDK 54 · React Native 0.81 · TypeScript strict · two hand-written native modules and four config plugins bridging into ~7,000 lines of Swift · Supabase · Claude.

The Workout Buddy mascot — a friendly red weight-plate character flexing.

Loading Buddy in 3D…

YOUR AI COACH IS READY.

Quiz-built programs, auto-progression, and the deepest Apple-platform integration of any training app. It's waiting on the App Store.

Download on theApp Store iPhone + Apple Watch · subscription required, free trial on annual