Just made LiftTrace public after months of development. It’s a self-hosted weightlifting / training log that runs in a single Docker container on your own hardware, with a PWA frontend and a signed Android APK. Sister app to NutriTrace under the same TraceApps umbrella.

What it does:
- Diary with sets, reps, RPE, warm-up flagging, supersets, rest timer
- Smart Add — type or speak your workout (“bench 3x5 @ 225, A1: curls 3x12, A2: pushdowns 3x12”) and the AI parses it into structured sets
- Programs with mesocycles, weekly templates, coach prescriptions for trainer / athlete pairs
- Exercise library seeded from wger + Free Exercise DB (~1,500 exercises with images), plus your own custom uploads
- Statistics: volume, PRs, frequency heatmap, body weight trends
- OIDC SSO for Authentik, Keycloak, Pocket ID, Authelia, Auth0, Google, etc.
- Workout History Import from Strong, Hevy, FitNotes, and Jefit CSVs (so you don’t lose your history switching over)
- Radio player built in for Subsonic / Jellyfin / Plex / Emby plus internet stations (because lifting and lockscreen media controls > switching apps mid-set)
- AI coach with live workout context — bring your own Claude / OpenAI / Gemini key, or point it at Ollama / LM Studio / any OpenAI-compatible endpoint
- Android app with offline-first SQLite, biometric sign-in, native ExoPlayer, optional WorkManager reminders
Self-hosted principles:
- AGPL-3.0, source is open, no telemetry, no central server, no analytics, no cloud sync to anybody else
- Single Docker container + bind-mounted volumes for DB and uploads
- Your data stays on your hardware. Back up with
cp, restore withcp.
Quick start:
services:
lifttrace:
image: ghcr.io/traceapps/lifttrace:latest
ports: ["3002:3003"]
volumes:
- ./data/db:/data/db
- ./data/uploads:/data/uploads
environment:
- DB_PATH=/data/db/lifttrace.db
- UPLOADS_PATH=/data/uploads
- JWT_SECRET=change-me



already losing me with the AI art slop
Sorry to hear that. It’s completely optional and you can go minimalistic with no banner if you so choose. Try it out and hopefully it works for you.