← All projects

AI · Sport

Aesculapius.

My training, sleep and recovery. One conversation to connect the dots.

æcode meets movement.

The project

PythonRAGGarmin ConnectTelegramSelf-hosted

Aesculapius began with the idea of talking to the data recorded by my Garmin: an indirect way to listen to my body and understand it better. I wanted to use AI and software to explore training, recovery, sleep and wellbeing in the context of my own days.

Before Aesculapius there was FoxRun, a project still available on my GitHub. It connected to Strava, rather than Garmin Connect, collected my activity data and used it to build an intelligent dashboard for exploring training, performance and trends.

Changes to Strava’s API access conditions brought FoxRun to a halt. I wanted more independence in accessing my activity data and choosing how to use it. That led me to look for another way.

Garmin Connect gave me a richer, more detailed picture of my days, beyond the activities I shared on Strava. Aesculapius became possible thanks to python-garminconnect, the open source library maintained by cyberjunky. I am grateful for the work behind it: it gave me a starting point for accessing my Garmin data and building something around my own needs.

My Garmin records a lot about my days. Training, sleep, recovery and physiological measurements are all there, but I wanted to bring them into one picture and ask questions that start from my own context.

Training is also a way for me to unwind and relax. I want it to be useful and suited to my situation, while leaving room for the pleasure of cycling and running. Finding that balance is part of what I want the assistant to help me explore.

As of October 2026, the project works and I use it occasionally, but it is still experimental. Telegram is its main interface: a chat with an assistant built around my Garmin data. I am still looking for the form of conversation that makes it most useful in everyday life.

The longer-term idea is something like a Jarvis for training: an assistant that can connect my personal data with books and technical sources on running, cycling and sport. I would like that combination to support a more scientific approach, grounded in my own context. Bringing those sources together is a direction I want to develop.

The hardest part has been finding the right interaction: easy, intuitive and natural enough to fit into training. I want the information to stay up to date automatically and the conversation to be useful without becoming another task to manage. Solving that experience matters more to me than adding features; it could eventually make the project useful to other people too.

Self-hosting is part of the idea: I want to own the storage and understand the processing of my personal data. The project is still evolving: I am experimenting, learning from using it and looking for the right balance between data, questions and answers that are actually useful in everyday life.

Cycling · The experience behind the data.

Behind every recorded activity is an outing like this. I care about the effort, the enjoyment and the desire to keep improving. The data interests me because it lets me return to that experience, compare it with other days and ask how training and recovery fit together.

Out on the bike.
Out on the bike.

Running · Understanding my own rhythm.

Running is part of that same curiosity, and also a way to relax. I want to understand how effort fits into the rest of my life, alongside sleep, recovery and personal sensations. The assistant should fit that rhythm and help me enjoy training as well as make it useful.

Outside, in Rome.
Outside, in Rome.

From idea to execution

01 / 05

It started with FoxRun.

FoxRun turned my Strava activities into an intelligent dashboard. When the API access conditions changed, I stopped the project and looked for a way to keep working independently with my own data.

02 / 05

The question came first.

How do I feel today, and what in my recent days might explain it? The starting point was the wish to connect training, sleep and recovery rather than look at each measurement in isolation.

03 / 05

Bring the context together.

python-garminconnect gives me access to the richer context recorded by Garmin Connect. The project organises it and uses retrieval to bring relevant information into the conversation.

04 / 05

Make it a conversation.

Telegram is the front door. I can ask about training, nutrition, rest or sleep through the bot, with the goal of getting suggestions grounded in my own situation.

05 / 05

Keep building it on my terms.

A self-hosted foundation lets me choose how the project stores and processes data. It grows alongside my homelab and my understanding of what is actually useful to me.

For the curious

Explore and build.

The tools mentioned in the story, with documentation, guides and source code to help you build something of your own.

Want to try something similar?

If you have a question about this project or an idea to discuss, write to me. I’m happy to share what I’ve learned.

Ask me a question
Keep exploringGarmin Watch Face ↗︎