Phone
Android, Kotlin and Jetpack Compose. Workouts are saved on the phone first.
Personal workout tracker
We wanted to track workouts without being locked into a hardware maker’s app. So we built a simple log for weights, walks and rides. It runs on our phone, syncs to our own server, and our bot can read it.
What it does
The things we actually needed. Nothing we didn’t.
Log exercises and sets as you go. If you’ve done an exercise before, last session’s numbers are right there.
GPS tracks outdoor distance and speed. For treadmill walks, enter the distance at the end. Heart rate comes from a Bluetooth chest strap, if you wear one.
Pick a duration and start it when you’re ready. The phone tells you when it’s done.
Every session is stored on the phone. Open one to check it or fix a mistake.
Finished sessions go to a server we run. If it’s offline, the app keeps working and syncs later.
A read-only page on the server lists every synced session.
Screens
Big numbers, big buttons, no setup. Example data only.






New · Our bot
Soham’s Hermes bot connects to Logbook through an MCP server. MCP is a standard way for AI assistants to use tools. So you can just ask “how much did I bench last week?”
Three tools. Read only. Locked with a token.
How did my last three leg days compare?
get_exercise_historySquat went from 80 to 85 kg over those sessions, same 5 sets each time.
How it works
Android, Kotlin and Jetpack Compose. Workouts are saved on the phone first.
Bun, Hono and SQLite on a server we run. Stores synced sessions and serves the dashboard.
An MCP endpoint gives Hermes three read-only tools. No writes, no raw database access.