life OS: Self-hosted data analytics platform
2026
2026
When I started to get more into fitness and nutrition, I saw that Hevy, my workout tracker app, had the ability to export my workout data. Out of curiosity, I explored what the data export looked like and found that Hevy also had a developer API available. I thought it would be a fun project to setup an automated report for my workouts, so I build a simple script which pulled my workout data, gave it to Gemini with some research documents, and produced a report. I conencted it to Notion so I had a nice UI to view it. But, I was not satisfied. I knew it could be more and I wanted to explore.
Fast forward just a few months to version 3.0.0, and the project has evolved so drastically that I had to rename it. It’s no longer just a fitness dashboard - it is life OS.
Here is a look at how the app has grown, the hurdles I’ve tackled, and the major features that now run my day-to-day life from my home server.
The first few versions were all about dialing in the fitness and nutrition pipelines. I wanted a seamless integration between my Hevy workouts and my Fitbit metrics, without being locked into their respective native apps. Owning my own data is very important to me which drove me to progress this project even further.
Some of the foundational features included:
The Daily Report Pipeline: A highly structured daily summary that aggregates my Fitbit data, Hevy logs, and nutrition, passing it to an AI to generate objective, data-driven insights.
Advanced Analytics: A full suite of tracking tools, including a 7-day calorie balance chart, total workout volume calculations, and body fat percentage tracking.
Claude MCP Integration: In v2.1.0, I built a Model Context Protocol (MCP) server. This allowed the Claude desktop app to read my live dashboard data, workout history, and Fitbit logs directly from my home server. This gave me the ability to ask claude questions like "How's my day so far?" or "How much chicken should I eat for dinner?"
As the app became more stable, I realized I needed it to track more than just lifting weights and eating protein.
Fitbit’s native calorie estimates can sometimes be wildly inaccurate, especially for non-step activities like cycling. In v2.2.0, I built a custom Calories Module. It completely ignores Fitbit's calorie burn estimates for bike rides and calculates them conservatively using a speed-based MET model instead. It’s a single source of truth that ensures my live dashboard, daily pipeline, and report bot all compute calories identically.
In v2.3.0, life OS expanded into mental health and journaling. I built a daily reflection journal where I can log my mood on a 1 to 5 scale, write free-form notes, and tag entries. I had already been using an app to journal and wanted to migrate those journal entries over. I imported 2,141 days of historical journal entries from the Pixels app, automatically building out a categorized tag catalog in the process.
Journal entries were added to the daily report, giving the model more context to understand how the day went (for example, it could see that my mood lifted after the gym).
With the release of v3.0.0 this August, the app officially outgrew its fitness origins. Here are the major pillars of the new life OS:
I was tracking my spending using an app called Cashew for over a year now, but there were a few features I required which it lacked. I realized I already had a secure, remote-accessible app logging several aspects of my life, so why not include finance too? That way I could realize the features I wanted as well. The new Finances section is a complete transaction tracker customized to my needs:
Accounts & Balances: Color-coded account pills with computed running balances based on transaction history.
Custom Taxonomy: Granular control over categories and subcategories.
Historical Import: I successfully migrated over 1,500 historical transactions from Cashew, preserving the category taxonomy.
Do you like graphs? Beacuse I do. What use is all of this data if I can't visualize it? So, I implemented the Grapher. Every data point I collect is available to graph in this module. It even includes a quick test of significance to see whether two data points are actually correlated or not.
Want to know whether your calories expended correlates with the number of steps you take (it probably is)? Well, now you can visualize and test that. Want to know whether increased sodium causes weird spikes in weight? The grapher will show you the correlation.
Fitness is just one part of health. The new Health tab introduces a flexible form engine for logging medical tests (like bloodwork) and vaccines. This was important to me so I could track my health metrics over time.
Taking advantage of my Hevy data, the Health tab now features a front-and-back body heatmap for muscle fatigue. It calculates exactly how worked each muscle group is over a rolling 7-day window. It’s smart enough to correctly calculate single-arm (unilateral) exercises, giving me a perfect visual of my recovery state. I can now make more informed decisions on what muscles to workout at the gym next.
Instead of static targets, life OS now supports defined Nutrition Plans (Cut, Bulk, Maintenance). Setting an active plan drives the daily macro/calorie targets and the nutrition grading strictness. Best of all, historical days freeze their data based on whichever plan was active at the time. The system was designed in a way which would make defining training and non-training day Nutrition Plans easy, for future expansion.
Building Life OS has been the most rewarding personal project I've taken on. I build it as I was getting more and more into working out and carind about what I ate. It's fast, entirely self-hosted, highly personalized, and securly holds years of my personal data. Im no longer relying on five different apps to tell me how my week went - my sever does it for me.