What is Dreeve?
Dreeve is a self-hosted dashboard for your training data. You run it yourself — two Docker containers, a .env file, a SQLite database in a folder you back up — and it builds an analytics site out of your activities: a dashboard, an Eddington number, a heatmap of everywhere you've been, best efforts, segment history, gear and maintenance tracking, and a yearly "Rewind". It's AGPL-3.0 and the repo has just over 2,000 stars.
Be clear-eyed about what that means, because it's the thing that decides whether this app is for you: there is no signup. There's no dreeve.com you log into. You install Docker, write a docker-compose.yml, generate an admin password hash, run docker compose up -d, and open http://localhost:8080. If you already run a home server or a NAS, this is a Tuesday evening. If you don't, this is a weekend and a new skill. There's a live demo at demo.dreeve.app if you'd rather look before you install anything.
If you searched for Statistics for Strava and landed here, this is it. The project was renamed to Dreeve in v5.0.0 on 19 July 2026 — same app, same maintainer, repository moved to dreeveapp/dreeve. The rename came with the reason for it: Strava stopped being required. Dreeve now has two mutually exclusive import modes, and Strava is one of them rather than the whole foundation.
Key Features
Two import modes, and only one of them touches Strava
IMPORT_MODE=files is the default: drop .fit, .tcx or .gpx files into a watch folder (or drag them into /admin/upload) and the daemon container picks them up every five minutes. No Strava account, no API keys, no rate limits. IMPORT_MODE=stravaApi pulls straight from Strava instead, and adds the two things a file simply doesn't contain: segment efforts, and challenges and trophies. You pick one — they can't run side by side, though you can switch.
The Strava import is read-only and runs on your own API keys
Nothing is written back to Strava. You register a Strava API application at strava.com/settings/api, put the client ID and secret in your .env, and complete an OAuth flow at your own instance to get a refresh token. Dreeve deliberately paces itself inside Strava's limits (100 requests per 15 minutes, 1,000 a day) and imports up to 250 new activities per run by default, picking up where it left off. A first import of a long history takes days, not minutes. One Strava account per instance — two athletes means two instances.
Eddington numbers, configurable per sport
The classic distance milestone — E of 100 means 100 rides of at least 100 km. Dreeve lets you define several, each scoped to whichever sport types you choose, in km or miles, with a history chart and a projection of how many days you'd need to reach the next number.
Heatmap and best efforts
A global heatmap over your whole route history, and best-effort tables across distances — 5K, 10K, 50K, 100K and up — pulled out of your activities rather than just the ones Strava chose to flag.
Gear maintenance that actually models components
Register components against a bike or a pair of shoes and give each task an interval: every X kilometres or miles used, every X hours used, every X days, or every X days on which the gear was actually used. A dashboard widget shows what's coming due, there's a maintenance log, and it can fire notifications when something is.
Rewind, milestones and challenges
Rewind is a year-in-motion recap of your own data on your own hardware. Milestones is a timeline of achievements. Challenges shows the Strava challenges you've completed — that one is stravaApi mode only, since challenge data lives at Strava.
Automation rules and an AI assistant
Rules that flag commutes, assign gear or derive values automatically on import. The AI workout assistant is bring-your-own-model: you configure a provider and API key, or point it at a local Ollama container.
Actively maintained, to a slightly alarming degree
226 releases and counting, eight of them in August 2026 alone. Current version at the time of writing is v5.3.1, released 30 August 2026.
Who It's For
- Anyone who already self-hosts and wants their training data in the same place as their Jellyfin and their Home Assistant
- Data hoarders leaving a platform who have a Strava bulk export or a decade of Garmin FIT files and want them to become something readable
- Riders chasing an Eddington number — this is one of the few tools that treats it as a first-class metric with per-sport configuration
- People who don't want a Docker Compose file in their life — this is the wrong app, and that's fine; a hosted analytics service will serve you better
