H2brO: No More AI Apps#
He who lives in harmony with his own self lives in harmony with the universe. — Marcus Aurelius
A Harmonious Side Project#
Ending 2025 and going into 2026 I was fixated on the stoic concept of living in harmony (with nature, with self). How can I introduce more synergy in my day to day?
I used to play water polo, I want to play water polo again but need to be in swim shape. I studied engineering, as I moved into a product management direction I want to continue developing software and systems and keep up with the latest in AI-assisted development.
My harmonious side project solution: develop an AI swim coach. It would motivate me to swim and to code with AI using AI.
I gave it a ~fun~ name: H2brO.
I started “vibe coding” and added an app to my website. React frontend, Supabase backend, Gemini API giving personalized training suggestions. It worked. I used it. It motivated me to swim and to continue tinkering with the app. Then I thought maybe my brother or dad would want to use this, so I added auth and user management.
I Built AI Slop#
I built a full-stack React application with a Supabase backend and Gemini API integration. Workout logging, progress charts, AI-generated training suggestions, user auth. What it left me with was another dashboard. Another login. Another tab in my browser. Another thing to remember to open. Something that’s PC browser friendly, but not mobile friendly. Where adding a new feature breaks old features. Where adding a Gemini-powered “AI coach” makes the core functionality harder to use. Where there are hundreds of potential settings and prompt enhancements to tune to make the AI experience better.
While it did motivate to me swim more often and I got faster, the app itself went from being a fun project to feeling like a chore. I resorted to jotting down my workouts on paper to track what I did - because I enjoyed physically writing more than interacting with another dashboard. Not that I was looking for general adoption, but I did find my app going from 1 daily active user to 0 daily active users. And I was the user and app owner. Lack of harmony.
AI slop is what happens when you add AI to something and it makes the experience worse, not better. It’s a meeting summary with rocket ship emojis as bullet points. It’s a “Let’s crush it, team! 💪” that nobody asked for. I built AI slop.
The Future: Ubiquitous Interfaces#
I went back to writing workouts on paper. Paper. Because paper was more enjoyable than logging into my own app.
The interfaces people actually use every day aren’t apps they downloaded. They’re messaging apps, chat interfaces, voice assistants. I already talk to Claude daily about emails, code, how to win an argument. Why would I context-switch to a separate swim app when I could just tell Claude what I did in the pool? A UI doesn’t need to simulate database operations with tables and forms. That should be abstracted away. Natural language already replaces traditional dashboards for most use cases. And as models improve, your tool gets better without you touching it.
Migration to MCP#
I rebuilt H2brO as an MCP (Model Context Protocol) server.
What’s MCP? It’s Anthropic’s open protocol that lets AI assistants like Claude interact with external tools and data sources. Instead of building a custom app, you build a lightweight server that exposes “tools” the AI can call.
My H2brO MCP server provides Claude with eight tools:
- set_goal: Set swimming goals (pace, distance, technique, frequency)
- get_goal: View current and historical goals
- log_workout: Parse natural language workout descriptions into structured data
- get_workouts: Query workout history with filtering
- update_workout: Modify logged workouts
- delete_workout: Remove workouts
- get_training_strategy: Read my coach’s training strategy and track workout type distribution against a target mix
- update_preferences: Store and update swimmer preferences over time
Now I open up a new chat thread to talk to Claude:
“Give me a workout for today and explain how that will help me towards my goal.”
“Log today’s workout: 3000 yards, main set was 10x100 free on 1:30”
“How am I tracking toward my goal?”
“Show me my volume over the last 2 weeks”
Claude parses my natural language, calls the appropriate tools, stores data in a local SQLite database, and responds intelligently. No dashboard. No separate app. Just conversation.
The entire MCP server is around 500 lines of TypeScript. Compare that to the thousands of lines in the React app, plus Supabase configuration, plus deployment infrastructure.
What’s Next#
Mobile MCP. Right now, MCP only works in desktop Claude. H2brO is meant for someone on the go, about to get in the pool. It needs to be on my phone. And no, I won’t vibe code another iOS app. I’ll wait a few months for the platform to meet me where I am. My prediction: Anthropic ships mobile connector support by June 2026.
Embedded UIs in chat. Some things still benefit from visual representation. Progress charts, workout calendars, personal records over time. The open design question is how to bring the essence of a dashboard into a conversation without rebuilding the dashboard inside the chat. The future isn’t zero UI. It’s UI on demand, in the places we already are.
MCP is the protocol. Chat is the platform. The rest is still being figured out.
For me, the point wasn’t technology. It was harmony. Build something where the effort of tracking my swimming and the effort of learning new tools compound instead of compete. The old app created friction. The new one fits into a conversation I’m already having. That’s harmony.
H2brO MCP is not yet released, but will be open source if there’s more than 1 interested user. The old React app has been deprecated. Some pictures below memorialize the relics.