Personalized Workout App
Early access

Programming that shows its work.

An evidence-based training platform with per-set RIR targets, a daily-undulating-periodization engine that works off your real 1RMs, full nutrition tracking, and a coaching loop — all of it logging to your own device first, so it works in a basement gym with no signal.

No card. Nothing is charged today — payments aren't built yet, so there is nothing here that could take your money.

What's actually in here

12built-in programs, including four DUP waves
4main lifts with %1RM top-set and back-off prescriptions
100%of your workout and meal logs written to your device before the network
0trackers, analytics tools or ad SDKs in the app — or on this page

Every prescription in the app carries a note saying where it came from — and which numbers were inferred rather than published. There are no testimonials or user counts on this page because there is nothing honest to put there yet.

Your logger doesn't know what your program wants.

You are running three tools that don't speak to each other. A logger that records what you did but has no opinion about what you should have done. A program in a PDF or a spreadsheet tab, which is where the RIR targets, the rest ranges and the substitution options went to die — you memorised the first week and have been approximating ever since. And a nutrition app that has never heard of either.

So the detail that actually drives the adaptation is the detail that gets lost. Not the exercise — you remember the exercise. It's whether set three is meant to be RIR 2 or RIR 0. Whether this is the lift you're not supposed to take to failure. What to do when the rack is taken.

The prescription evaporates.

A PDF can hold a per-set RIR array; your logger can't, so you carry it in your head and it drifts by week three.

The gym has no signal.

Cloud-first apps stall on a set you're mid-way through, in the one room where that matters most.

“Private” is a marketing word.

Every fitness app says it. Almost none can show you the rule that enforces it.

Programming

Every set of the program you're about to run, prescribed.

Every working set carries its own RIR target — an array, one value per set, not a single number smeared across the exercise. Around it: a warm-up set range, a rest range, the intensity technique that applies to the final set only, and the substitution options for when the equipment is taken.

Some lifts are flagged so the app never asks you to take them to failure, regardless of what the rest of the program is doing. Lifts carry substitution options, and the shoulder-safe modifier applies to the generated templates.

Supersets, tri-sets and giant sets are first-class — grouped in the program, grouped in the logger, and counted correctly in your weekly set estimate per muscle.

Twelve programs ship with the app: seven built-in templates with stated lineages you'll recognise — Nippard-style full-body and upper/lower work, Mentzer/Yates HIT, a Dorian Yates body-part split, Renaissance Periodization volume landmarks — plus the original Min-Max split and four DUP waves. A generator and a modifier pipeline tune volume, intensity and shoulder-safety against them. Or build your own from scratch, and export it as a file someone else can import.

Where a number was inferred rather than published, the app says so — in the data, not in a footnote.

Lineage attribution is a citation, not an endorsement. None of the coaches or organisations named above are involved with this app in any way.

Barbell Bench Press

4 sets · 6–8 reps

Effort target, per set

  • Set 1 · RIR 3
  • Set 2 · RIR 3
  • Set 3 · RIR 2
  • Set 4 · RIR 2
Warm-up
2–3 sets
Rest
150–210 s
Final set
Intensity technique applies to this set only
Swap
Dumbbell bench press

The program view. This is where the per-set effort row renders. Inside the live logger the target is carried as a pre-selected value on the set rather than as this row — an honest limitation we'd rather state than let you find.

Periodization

Percentages off your 1RM. Not off a guess.

The DUP engine runs four main lifts — squat, bench, deadlift, overhead press — through three archetypes across the week. Power, Strength, Hypertrophy. Each training day, an assigned lift gets one top set at a fixed rep count and percentage of your 1RM, then a four-set back-off block at a lighter percentage.

Four waves are available — three, four, five and six days — so the same engine fits the week you actually have. The top set is always flagged as a lift the app won't push you to failure on.

We'll say the quiet part. Undulating periodization is not proven superior to a volume-matched linear program. Grgic et al. 2017 found no meaningful difference, and the app says so in every DUP program description, on the screen, before you pick it. What DUP buys you is frequency and autoregulation. If you want a claim bigger than that, another app will happily make it.

ArchetypeTop setBack-off
Power1 × 92%2–3 × 82.5%
Strength3 × 88.5%
Hypertrophy5 × 86%6–10 × 70%

Rest ranges and per-set RIR come attached to each of these. All percentages are computed against the 1RMs you enter, not against a template's guess at what someone your size lifts.

Local-first

Written to your phone before it's written anywhere.

Every workout and every meal you log is written to your device's own database with no network round trip. Not queued for the cloud — written. The sync is a background replica of something that is already safe.

Which means the basement rack with no bars of signal is a solved problem, not a caveat. Install it to your home screen and the app opens with the network switched off entirely. The one time you need connectivity is the first sign-in on a new device; after that the session is cached and every subsequent open skips straight past it.

An unfinished workout is covered by the same principle: every set is written to your device's storage the moment you log it — weights, reps, the per-set effort you actually hit, HIT and MISS, any exercise you swapped, any rest you overrode — rather than being held in the page, so a reload or a crash doesn't destroy what you've already logged.

On top of the logging: per-set HIT/MISS marking, estimated 1RM trends per lift, PR detection, a bodyweight log, a cardio log, and a nutrition side with a macro calculator, a meal logger, a pantry, and barcode scanning that reads from Open Food Facts — with manual code entry on browsers that can't decode a camera feed, and a clear label saying whether the numbers it found are per serving or per 100 g.

Local-first is a reliability property, not a secrecy claim. We will not tell you your data stays on your device, because it doesn't. It is written locally first and then replicated to our database — that is how your account works on a second device, and how a coach you have linked with sees your training. What privacy looks like here is written out rule by rule further down this page and in the privacy policy.

Two limits worth knowing before you sign up. Nutrition lookups need the network — an offline session can log the workout and type the macros, but the barcode database is online. And the app does not yet reopen an unfinished session for you: the logged data is kept, but you start the day again from the program screen. The in-progress draft is stored on that device and in that browser, so clearing site data or switching devices mid-workout starts fresh.

Three steps to a real prescription.

Tell it about you, once.

A five-step setup: your goal, your experience, how many days you actually train, your body stats, your units. It picks a program that fits the days you gave it. Two minutes, and you can change any of it later.

Open today's session.

The Program tab opens on today. Every exercise arrives with its warm-up range, its per-set RIR targets, its rest range and its substitutions already attached. Swap a lift and the app remembers the swap.

Log the set, mark it HIT or MISS.

Weight and reps go in, the rest timer starts, PRs are flagged against your own history. Your estimated 1RM trend per lift builds itself out of what you actually did.

What you're probably running now.

These are good products. Most of them do one thing better than we do. The point of the table is that you are currently paying for three of them and still keeping your program in a PDF.

This app General loggers Nutrition apps Coaching platforms PDF + spreadsheet
Per-set RIR targets, one value per set YesNo Varies by what the coach types inOnly if you retype it every session
Warm-up range, rest range, technique on the final set Attached to every exerciseNo Coach-authored, per programYes, until you stop reading it
Substitutions and shoulder-safe swaps built in Yes, per exerciseNo Coach-authoredNo
DUP off the 1RMs you entered Yes, four wavesNo Only if the coach builds itManual spreadsheet math
Nutrition in the same app Macros, meals, pantry, history, barcodeNo Yes — and better at itAdd-on / variesSeparate tab
Two-sided consent for a coach link Yes — neither side can attach alone Typically coach-initiated
Where they beat us Bigger exercise libraries, social feeds, a mature app-store presence, years of polish Adaptive calorie targeting that adjusts to your real weight trend — genuinely better than our static calculator Payments, scheduling, video libraries, branded apps — full business suites Infinite flexibility, zero cost

Competitor columns describe product categories, not tested builds, and features move. If a row is out of date, tell us and we'll correct it.

Trust

Most apps promise privacy. This one can show you the rule.

Privacy in fitness software is usually a paragraph in a policy document. Here it is a set of rules that live in the database, apply to every request, and would have to be deliberately deleted to stop working. Here is the actual list.

Row-level security on everything.

Access rules are enforced by the database on every read and write, not by the app deciding what to render. A screen that forgets to hide something still can't fetch it.

database policy

A coach link needs both signatures.

A coach cannot attach themselves to you, and you cannot attach yourself to a coach either — you file a request and they approve it. Until they do, they see your name and your email and nothing else. If the coach starts it, they do so by minting an invite code, which is their consent; redeeming it is yours.

database policy

Your coach can read your training. Never your settings.

Once linked, a coach can see your profile, 1RMs, bodyweight log, cardio, programs and today's meals — that's the job. One file is excluded by name and always will be: your settings. It holds your interface preferences and your progress-photo consent decision, and that is a private choice about your own body. It is a read-only permission besides — a coach cannot write a single byte of your data.

allowlisted SELECT policy

Progress photos are gated twice, and unknown fails closed.

Uploading requires that you are 18 or over and that you have explicitly accepted a consent notice. Consent is three-state, not a checkbox — if you decline, you are not asked again on every visit. If your age can't be determined, the gate stays shut. Age is derived from your date of birth every time it is read, never stored, so it can't be stale on the morning of your birthday. We'll describe this accurately: it is a consent mechanism over a self-reported date of birth. It is not an identity check and we won't call it one.

client-side consent gate

Moderation that doesn't become surveillance.

A coach can report a photo. An admin can then see that one photo — the record and the image itself — and only while the report is open. Resolving it closes the window. The person who was reported cannot read the report queue, because a queue you can watch is a warning to delete evidence. Upholding a report removes the photo; it does not delete anyone's account.

status-scoped policy

Suspension is enforced by the database, not the screen.

If an account is suspended, the block is a database trigger attached to the tables that matter. Not a policy that a future refactor could quietly strip, and not a screen you could route around. Going offline doesn't lift it — but an account we've simply never heard of is let in, because failing shut on a server hiccup would lock out everyone at once.

database trigger

System notices you can't forge and can't delete.

Suspension and reinstatement notices are composed on the server. There is no way for a client to insert one, and no way to delete one. The only field anyone can change is whether it's been read.

no INSERT policy

Nothing on this page is watching you.

No analytics, no attribution pixel, no session recording, no advertising SDK, no cookies, and no fonts or scripts loaded from anyone else's server. The page you are reading makes zero third-party requests, and neither does the app.

verified at build time

None of this is a feature we plan to add. All of it is running. What it costs us is convenience: a coach's view of your program says “Unknown/Custom” for one field, because reading that field would mean reading the file we said we'd never read. We took the worse screen.

Nothing is charged today.

Payments aren't built yet. That is a true statement about the product, so it is the headline of the pricing section. Below is what we intend to charge when they are, published now so that nobody is surprised later — and so you can tell us it's wrong. There is no checkout on this site and no card field in the app.

Plan Planned price What it gets
Free $0 All local logging. Workouts, sets, PRs, meals, macros. No cloud sync, no program generator or custom builder, no coach link.
Client Usually $0
$4.99/mo direct
Most clients are sponsored by their coach. Your coach's assigned program, plus sync across your devices.
Advanced $7.99/mo
or $59.99/yr
The program generator, the custom builder, DUP, and sync.
Coach $29/mo
includes 5 clients
Roster, triage view, program assignment, client visibility, invites. The rate above five clients is a bracket ladder and is not finalised.

Every number above is planned, not live. Nothing is charged today and nothing on this page can charge you. Treat the table as a published intention you are invited to argue with.

The free tier is meant to stay free. That is a stated intention, not a contract — like every number above it predates the billing system that would have to honour it, and we are not going to dress an intention up as a guarantee on the one page where everything else is labelled “planned.” What is already true rather than promised: your logs are written to your own device as you make them, and any program exports as a portable file. Neither depends on a payment, so whatever the pricing turns into, it cannot lock you out of your own training history.

We haven't finalised the coach rate above five clients. Our own analysis says the number we first drafted undercharges past about nine, and we'd rather set it once, correctly, against real rosters than launch a price we have to raise.

On getting your data out: you can export any program as a portable file from inside the app. There is no self-service “download everything” button and no self-service account deletion yet — both are on the list, and until they ship, email us and we'll export or delete your account by hand. That is written down in the privacy policy too, so it's a commitment rather than a sentence on a marketing page.

Questions we'd ask.

Does this work offline?

Yes, and not in the “we cache a bit” sense. Every workout and meal you log is written to your device's own database before anything touches the network, and sync is a background copy of data that is already saved. Install it to your home screen and it opens with the network off. The one exception is your first sign-in on a new device, which needs connectivity once.

Why isn't it in the App Store?

It's a progressive web app — you install it from the browser. No store gatekeeping, instant updates, a tiny footprint. The costs are real too: installing takes an extra tap on iOS, and there are platform integrations we simply don't have.

I already use Hevy. Why switch?

Mostly, don't switch for logging — Hevy logs well. Switch if you're currently keeping the programming somewhere else: the RIR targets, rest ranges, warm-up sets, substitution options and technique rules that a general-purpose logger has no field for. That's the gap we fill.

What are the built-in programs based on?

Seven templates with stated lineages — Jeff Nippard's fundamentals, upper/lower and PPL work, Mentzer/Yates-style HIT, Dorian Yates' body-part split, Renaissance Periodization volume landmarks — plus the original Min-Max split and four DUP waves derived from David Laid's approach. Each exercise carries a note explaining why it's placed where it is. To be explicit: these are citations of an approach, not endorsements, and nobody named is involved with this app.

Is DUP better than a linear program?

There isn't good evidence that it is, once volume is matched. Grgic et al. 2017 is the usual citation and it found no meaningful difference; the app says this in every DUP program description before you choose one. Pick DUP for the frequency and the autoregulation, not because someone told you periodization is magic.

What can my coach see?

Your training: profile, 1RMs, bodyweight, cardio, programs, DUP progress, your schedule, your swaps and today's meals — read-only, they can't edit any of it. Plus whatever you send them directly: check-ins, habits, goals, messages and progress photos. What they cannot see, ever, is your settings file, which holds your interface preferences and your photo-consent decision.

Worth stating the other way round too: a coach can keep private notes about a client that the client cannot read. We think you should know that exists.

Can a coach add me without asking?

No. Neither of you can attach unilaterally. Either you request a coach and they approve it, or they mint an invite code — which is their consent — and you redeem it, which is yours. Before an approval, a coach you've requested sees your name and email and nothing more. If you end the relationship, their access closes on the next read, because it is checked against the current link rather than stored.

Do you sell my data, or run ads?

No. There is no advertising SDK and no analytics vendor in the app, and none on this page either. The full list of companies that touch your data — five of them, and why — is in the privacy policy.

What are the honest limitations?

The ones we'd want to know before signing up:

  • Our nutrition targets are a static calculator. MacroFactor's adaptive approach is genuinely better at that specific job.
  • Our exercise library is smaller than the big loggers'.
  • The coaching side is cloud-only by design — a check-in or a message needs signal, because a two-party exchange has no offline meaning and we'd rather a failed send be visible than silently swallowed.
  • An open message thread checks for a reply about every 30 seconds, and again the moment you switch back to the app — but only while the app is open. There's no push notification, so a closed or backgrounded app won't tell you a message arrived.
  • The app does not yet reopen an unfinished session for you. The logged sets are kept on the device; you restart the day from the program screen.
  • The logger works fully in kilograms. The plate calculator does not — it is hard-coded to a 45 lb bar and pound discs.
  • Email isn't wired up yet, which means no email notifications and no password reset by email. Notices are delivered inside the app only.
Is it finished?

No, and the version you'd be signing up to is early. Payments don't exist yet, so nothing can charge you. If that's disqualifying, this isn't the right week to start — but if you want to see whether the prescription detail is worth anything to you, one session will tell you.

Start with one session.

Make an account, pick a program that matches the days you actually train, and log one workout. That's enough to see whether the prescription detail is worth anything to you. If it isn't, you've lost ten minutes and we haven't charged you — we can't, we haven't built that yet.

No card. Nothing to cancel.