A training partner with your whole history in its head.
Other apps know the number: the weight, the reps, the date. Ironstack holds
every set you have ever done and every note you wrote about how it felt, which
bar you had in your hands, where you were, and what you told yourself to watch
next time. Then it uses all of it, in two places.
At the rack · in the moment
It adjusts the day with you.
Talk to it between sets. It answers from your ceiling, your notes, and your program, and it shows its reasoning.
Comp bench today and the program gives no opener.Open at 185.Under your 228 ceiling, from the Sept 4 set. Your all-time best is older; not the number to chase today.
Third set felt like a 9 and the sheet says 8.Hold the load, drop a rep.Last time you pushed through a 9 in week 3 you wrote "slow off the chest" for the next two sessions.
Squat rack is taken. What covers it in this block?Belt squat or front squat.Same pattern, and you have logged both in a strength phase before.
Cue me on the next set.Brace before the unrack.Your own note from the last three chain sessions.
At the table · the deep read
It tells you what the week meant.
Seven dashboards, verdict first. A sentence, the number behind it, the window it counted, and an honest decline when it cannot say.
How heavy was this week?Heavier than 10 of your last 12.Heavy means heavy for you now: measured against your best in the trailing 90 days, not an all-time PR.
Am I ramping?Ramping.Seven-day load 37% above your four-week average. The last two times you were here: Jul 2026, May 2026.
What am I neglecting?Calves: 17 days. Normally every 6.Beside it, in your own words, you wrote "grip" five times this month. The gap between the two is the finding.
Was I flat every time I trained on the road?Four of five sessions.Found by meaning, not keyword: "no pop", "dragging" and "tired" all count. Joined to what you lifted on those days.
Why it is not a logging app
What no logging app can say.
Each of these needs your whole history, your notes, and a reader that has both.
Other apps have the sets. They have never had the rest.
Heavy means heavy for you now
Heavier than 10 of your last 12 weeks.
Every set is measured against your best in the trailing 90 days, not an all-time PR. Come back from a layoff and other apps call everything light. Ironstack knows what heavy is this month.
Overview · intensity
Precedent
The last two times you were here.
Ramping is a number on a chart until something holds seven years of your history and can say: this load band, this phase, Jul 2026 and May 2026, and what happened next.
Overview · load
The machine versus your own words
It says calves. You wrote grip.
The computed drift and what you told yourself to watch sit on the same screen. When they disagree, that is the most interesting thing on the page, and nothing else shows it.
Overview · drift, in your own words
Notes with meaning
Flat, dragging, no pop: one question.
Your notes are indexed for meaning, not keywords, and joined to the sets. How you felt and what you lifted have never been in the same query before. Optional, and it degrades to full text without it.
Elastic semantic text · recall and the coach
A coach with a ceiling
Open at 185. Here is why.
Starting loads, a cue from your own notes, an alternative in the same pattern, a rep off the plan when the set said 9. Never above your ceiling, and it names the set the ceiling came from. Not your program. Not a doctor.
Coach · Kibana Agent Builder
It names its threshold
Two meets is a comparison, not a rule.
When the data is thin the card says how much it needs and when the verdict unlocks, in the same type as a finding. A logging app shows you a zero. This tells you why.
Every card · honest declines
Other appsIronstack
Logs a setThree taps at the rack.Tell Claude, in your own words, with the bar and how it felt.
Compares againstYour all-time PR.Your best in the trailing 90 days. Heavy for you now.
Tells youA chart, going up and to the right.A sentence, the number behind it, the window it counted.
When it cannot sayShows a zero.Says what it needs and when the verdict unlocks.
Your notesA text box per set nobody can search.Indexed for meaning, joined to the sets, read by the coach.
Answers a questionNo.Ask the coach, over your actual history, with a ceiling it shows you.
Your dataOn their servers.In your repo and your Elastic. Nothing phones home.
Best atLogging. They have spent years on it, and Ironstack will not try to beat them.Reading. Keep your logging app for the rack if you like; come here for the verdict.
See it
The first screen is a verdict.
Three screens from the app, redrawn with invented numbers. The real ones look
like this with your history behind them.
Iron Stack OverviewA Mission Built training systemAsk the coach ↗
OverviewProgramSessionHistoryMeetsMindset
How heavy was this week Open week
Heavier than 8 of your last 12 weeks.
6 of 61 main-lift reps at 80% or more of your 90-day best.
Open week, so ranked per training day: 1.5 across 4 so far.
Tick: your 12-week average, 4.1 reps a week.
Main lifts only, ranked against your last 13 weeks History › reps by week
Am I ramping
Ramping.
7-day load 24% above your 4-week average. Monotony 1.12. Measured to 2026-09-06; you last trained 2026-09-05.
The last two times you were here: Jun 2026, Mar 2026.
Tonnage, 7 days against the trailing 28 History › acute vs chronic
What am I neglecting
Rear delts: 16 days.
Normally every 5 days.
Tick: your normal gap. Indexed 2026-09-06.
Working sets over the whole log, not this page's range Session › every set
OverviewThe first screen is verdicts, not your log. Each card states a finding, shows one number, names its window, and declines when it cannot say.
Iron Stack SessionA Mission Built training systemAsk the coach ↗
OverviewProgramSessionHistoryMeetsMindset
Session
Strength Week 6 Day 2 of 4
Friday, Sep 5, 2026 · Home gym prev 2026-09-03 next none the table on the right walks to either
Prev / next
Session ↓PrevNext
2026-09-052026-09-03(null)
Top set
205lb×5@8
Comp bench
Tonnage
12,480 lb
moved this session
Length
1h 12m
3 day streak
Avg working RPE
7.4
14 working sets
Sets
26
218 reps · 12 lifts
SessionOne day. The main lift's top set in the header, the comparison with last time, your notes underneath.
ICIronstack CoachAgent· 6:41 AM
8 tools ran ›
Here is the read for today's bench (9/7), two days out from your last bench session (9/5):
Start your working sets at 200 ×5, straight bar. That is one step under what you actually hit for reps last time.
Why:
Ceiling check: lift_ceiling on comp-bench caps at 241 lb (estimated), from the 9/5 session, 205 ×5 @RPE 8, and you wrote "last rep slowed" on that set. Nothing today should approach that number.
Heaviest weight you have actually lifted in the last 90 days is 205 lb. Your all-time meet best is 248 lb (4/12/2025), an old PR, not the number to chase today.
Want a warm-up progression up to 200?
CoachA starting load, the ceiling it sits under, and the set that ceiling came from. Then a decline when asked for a program.
What ships
Start with a file. Add a stack when you want one.
Each rung is optional. The skill works on its own with nothing but Claude and a
folder. Every rung after it adds one thing, and nothing you have already logged
changes.
1
The skill
Claude as your workout partner. It logs what you say, keeps the count, and offers a cue when you want one. A markdown journal, one file per session, in a repo only you can read.
Needs
Claude. A private repo.
Gives
A log you own, in words you wrote.
2
The stack
Elasticsearch, free self-hosted or Serverless. The starter ships the schema, the mappings, and a GitHub Action that indexes every session on push. Reindex is safe: the ids are deterministic.
Needs
An Elastic endpoint and a write key, as two repo secrets.
Gives
Recall. Ask about any lift, any day, any note. Semantic search when the tier has it.
3
The dashboards
Seven Kibana pages linked by drilldowns, in Iron Log. One saved-objects file, one import. The verdict cards, the honest declines, the method written once at the foot of each page.
Needs
Kibana. One import script, or Stack Management.
Gives
The read of your training, not a copy of your log.
4
The coach
A Kibana Agent Builder agent. The prompt, the tools it runs, and the ceiling rule are files in the repo. Ask your training partner from any dashboard, top right.
Needs
Agent Builder on your Elastic tier. Ten minutes in Kibana with the README.
Gives
A starting weight with its reasoning. A decline when you ask for a program.
OverviewSignals and verdictsProgramBlock, week, phaseSessionOne day, top set firstLifte1RM over timeHistoryEvery sessionMeetsAttempts and tapersMindsetYour notes, read back
Get it
Three ways in, when it ships.
One repo is the source of truth for all three. Pick the door that matches how
much of the stack you want.
In testing
Ironstack is in daily use by its author before v1. The code is public on GitHub today and you are welcome to read it. The doors below open with the v1.0 release, once a fresh install has been proven on a machine that is not mine.
Add the Ironstack skills to Claude Code and say set up Ironstack. The setup skill creates your private repo from the starter, asks for your Elastic endpoint and key once, indexes the example session, imports the dashboards, and walks you through the coach. It stops at every step that touches your account.
# skills only, no server, nothing phones home
git clone https://github.com/missionbuilt/ironstack
cp -r ironstack/skills/* ~/.claude/skills/
# then, in Claude Code:
> set up Ironstack
Rungs 1 to 4 · opens with v1.0
Door 2
Do it yourself
Use the template repo for your private instance, add two secrets, run the setup script, and import the dashboards from the latest release in Stack Management. The coach README takes it from there.
github.com/missionbuilt/ironstack-template
→ Use this template → private
Secrets: ES_ENDPOINT, ES_API_KEY
python ingest/setup_indices.py
python ingest/index_workouts.py
# dashboards.ndjson from Releases
Rungs 2 to 4 · opens with v1.0
Door 3
Just the skill
Download the workout-partner skill as a folder and start logging today. No Elastic, no dashboards. Your journal is markdown in a folder you choose. Add the stack whenever you want the verdicts.
workout-partner.zip
workout-recall.zip
# drop into ~/.claude/skills/
Rung 1 · opens with v1.0
Fine print
Ironstack is a training partner, not a programmer and not a doctor. It will give you a starting weight under a ceiling it can show you, a cue for the set in front of you, or an alternative when the plan calls for a lift you cannot do today. It will not write your program. Any question about pain or injury gets a pointer to reputable material and a qualified person, and nothing else.
Your logs stay in your repo and your Elastic project. Mission Built has no server in the loop, collects nothing, and cannot see your data.
Ironstack ships under MIT, like the Loadout skills. The skills, the starter,
the dashboards, and the coach's prompt and tools live in
github.com/missionbuilt/ironstack.
Your data never does.