r/iOSProgramming • u/sergeytyo • 15m ago
App Saturday I planned an AI importer for my old gym notebooks, then shipped an MCP server and let the agents do it
For years I logged my body measurements in a paper notebook. Gym on and off, then running, then CrossFit, which is less a sport and more a subscription to soreness. Weight, biceps, shoulders, a page every few weeks. Every so often I'd think "I should put this in an app so I can actually look back at it," and then, being a developer, I didn't. For years. This year I finally did. It's called Physique.
The plan was the usual: a table of entries, add, edit, delete, settings. Plus one clever feature: photograph an old notebook page, have AI read it, review the parsed numbers on a bespoke import screen, save. I'd even started picturing the loading spinner.
Then it dawned on me that I was about to pour a lot of effort (and an alarming number of agent hours and tokens) into building a worse version of something I already use every day. ChatGPT, Claude and Grok read my handwriting better than I do, and I've known me for decades. What the app lacked wasn't a feature, it was a door. So I dropped the importer and built an MCP server and a CLI instead. The "import" is now: take a photo of the page, tell the assistant to put it in Physique, done. The entries just appear. Or skip the photo entirely and just say "log weight 82.4 kg" the way you'd talk to any agent. You can connect Claude, Claude Code, ChatGPT, Cursor, Codex, or any MCP client. The bespoke import screen remains the best feature I never built. And it isn't only about entering data: ask the agent to chart the last six months however you like, or export everything to CSV, a PDF, whatever you fancy. It's your data; do what you want with it.
Here's a 3-minute demo of it running from Claude, with the app open alongside: Physique + Claude demo on YouTube
That changed how I think about what an app is for.
I've noticed I barely edit anything myself anymore. In Notion I don't write documents; an agent writes them and I read. In Figma the agent moves the rectangles and I look at them and have opinions. And, slightly awkward to admit on this sub: I don't really write code in Xcode anymore either. Agents deliver the code, I review it in GitHub PRs, and I open Xcode now and then to press Build, like visiting an elderly relative. Its core purpose, for me at least, has quietly gone away.
So apps become the place you view the data, and agents become the thing you edit it with. That doesn't make apps less important; it changes which part matters. Physique's job is to show your numbers clearly: one dense table, every entry, the change since last time next to each value. You can still add and edit in the app, of course. I just don't think that's where the product lives anymore. Whether UI as we know it survives the next few years, I genuinely don't know. Curious if others are seeing the same shift in their own habits.
How it was built
Almost all of the code was written by agents, but I run it like a proper tech company where everyone except me is an agent: one-pager, PRD, design, tech plan, specs, tickets, then PRs reviewed by different agents from the ones that wrote them, with CI guardrails, and most of it merging itself. My job is the checkpoints: product calls, taste in Figma, approving the tech plan, manual testing, follow-up tweaks, and saying "no, that's not native" a lot. The iPad navigation went through three versions for exactly that reason. If anyone wants the gory details of the pipeline, say so, and I'll write it up properly.
The development in numbers, so far:
- roughly 150 hours of active agent work across ~300 agents (Claude Code, Cursor and a bit of Codex)
- around 4B tokens processed, of which only ~5M were actually written
- 813 commits, 157 merged PRs, 159 tickets
- at least 147 of 161 PRs written by agents (Claude Code 101, Cursor 44, Codex 2; Codex clearly needs to pull its weight)
- up to 6 agent PRs open at once, and 27 PRs opened on the busiest day. My review queue has not forgiven me.
- 6 releases before 1.0.0
- 4 design specs and 22 implementation plans
- 91 PRs with an agent code-review verdict before merge
- 5 GitHub Actions workflows plus Xcode Cloud for unit tests, snapshot tests for the UI
- 600+ xcodebuild runs (about 340 test runs and 270 builds across iPhone, iPad and Mac) and ~90 simulator launches by agents in just the last two weeks of logs. Xcode is busier than ever.
- about 26k lines of Swift across 245 files (86 of them tests), and roughly 60k lines of code in total with the backend, web app and CLI
The part that surprised me most was going multi-platform. Once the architecture, guardrails, CI, guidelines and agent docs were in place, adding platforms was almost boring. The iPad app, the native Mac app and a web app were planned and built as parallel work packages by agents, mostly autonomously, over a couple of nights, while I was in Poland on a long weekend, mostly devouring pierogi. Checking in on the PRs between plates turned out to be a perfectly workable engineering process. Then I spent a few evenings being insufferable about details until they felt native. iPad, Mac are out now with 1.0.0, alongside iPhone. The web app is at app.getphysique.app.
And Android? Skipped. Not because it's hard; with this setup it's probably a night's work to port. I just "love" Android so much that I'm saving it for later. Much later. It's a side project, so I'm allowed to be petty. I suspect this sub will cope.
Tech stack
The very short version: SwiftUI on iPhone, iPad and Mac, Firebase behind it, a plain JavaScript web app, and a hosted MCP server with OAuth, plus a CLI available on npm. Happy to go deeper on any part of it if people are interested.
Try it
Physique is free. No subscription, no ads, no streaks, no feed. If you track anything about your body, download it, connect your agent of choice and tell me honestly what you think, including the bits you'd have done differently. Claude has it in its connectors directory. ChatGPT's official directory is taking its time: it's been in their review for a couple of weeks now, so until then you add it as a custom MCP connection.
Physique: Body Measurements on the App Store
A question for you: when you give agents access to your own apps, do you build a separate agent API, or expose the same operations your UI uses? I went with "same operations, measurement data only" and I'm still not sure where the line should be.