TeslaMate: an Elixir logger that needs Postgres, Grafana and an MQTT broker
A self-hosted data logger for your Tesla 🚘 [main maintainer=@JakobLichterfeld]
At a glance
- What is it?
- teslamate-org/teslamate records Tesla drive and charge data into Postgres, publishes vehicle state to a local MQTT broker and leaves the viewing to 22 bundled Grafana dashboards. It is AGPL-3.0-or-later with added section 7 terms, it runs on your Tesla account credential, and the README spends a whole warning on counterfeit copies of itself.
- Who is it for?
- TeslaMate suits an owner who wants their own drive and charge history, owns a Postgres instance anyway, and is willing to keep Grafana and an MQTT broker running alongside it. It does not suit anyone who wants a logger that keeps the car awake while parked.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Elixir, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- teslamate-org/teslamate9,261 ★ · +282
| Repository | 2026-09-11 | 2026-11-13 |
|---|---|---|
| teslamate-org/teslamate | 9k | 9.3k |
282 Stars in the last 63 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Three services, not one: Postgres, the broker and Grafana
TeslaMate is three moving parts rather than an app you open. The Elixir service writes what the car reports into a Postgres database, the dashboards are Grafana panels that read that database, and the same service publishes vehicle data to a local MQTT broker. The repository keeps those concerns apart on disk too: an elixir/ directory for the service, grafana/ for the dashboards and their own container build, plus nix/ and website/ for environment-based setups and the docs site. Plan for that before you start, because the write load lands in Postgres with every drive and charge, the broker holds live vehicle state, and the visualization layer is a separate server you have to secure and back up on its own.
The Makefile builds two images, one of them without a version tag
Building from source is a make invocation, and the version string comes out of the VERSION file at the root while the build suffix is the short commit from git rev-parse --short HEAD. The vsn target prints that pair before anything else runs, which is the quickest way to know what an image on your host actually is. Two targets cover the build:
make vsn
make teslamateRun vsn first and you get the exact string the image will carry; run teslamate and Docker builds with --pull, refreshing the Elixir and Debian base layers on the way through. You get an image back and nothing else, since no database, broker or dashboard ships in it. Watch the tagging. The teslamate target tags the result twice, once as app name plus version plus short commit and once under the bare app name with no version attached, and the grafana target builds a second image tagged teslamate-grafana from grafana/Dockerfile. A run that names the untagged image resolves to whatever was pushed last, so two hosts can drift a major version apart without either of them doing anything. Release notes live in CHANGELOG.md at the root, and the recent sequence is v4.2.0 on 2026-08-23, v4.3.0 on 2026-09-29 and v4.4.0 on 2026-10-23, with the last push on 2026-11-02.
The security warning is about the Tesla credential, not the trips
Running TeslaMate means handing the service your Tesla account credentials so it can ask the car what it is doing, which makes the credential the attack surface rather than the trip database. The README treats it that way, opening with a warning to obtain TeslaMate only from the official repository and the documentation site, naming malicious forks, malware and data theft as the reason. It goes further than a boilerplate notice: the maintainers say they have received reports of deceptive websites and unofficial mobile apps, including apps on the App Store, that use the TeslaMate name to distribute modified versions, and that a copy from another source leaves your Tesla account credentials and vehicle data at risk.
AGPL copylight reaches a hosted service, and integrations only via MQTT
TeslaMate is AGPL-3.0-or-later and the README attaches conditions that decide what you may build around it. Modify it or incorporate it and you must release your version's entire source under the same licence, and the text says that applies however you provide the software, naming a downloadable application, a binary, a package, a pre-packaged image or a network service. No closed-source derivatives are permitted, and software that works with TeslaMate must be open under an AGPL-compatible licence and reach the project only through the supported integration surface, which the README names as MQTT. You also keep the copyright notices and NOTICE file intact and mark modified versions as modified, with TRADEMARK.md governing the project's marks.
Sleeping the car keeps vampire drain out and puts gaps in the log
One design choice shows up on both sides of the ledger. The feature list promises high precision drive data recording, and next to it promises no additional vampire drain, meaning the car falls asleep as soon as possible rather than being held awake by the logger. For a car parked in a driveway that is the right default, and it is also a ceiling on the data. Nothing records while the vehicle sleeps, and the States dashboard exists to show when the car was online or asleep, so a quiet stretch in your timeline means the car was off rather than that the logger was down. Anyone who wants telemetry from a parked car is asking for the drain this project set out to avoid.
The dashboards are a fixed Grafana set, not a UI you extend
Visualization sits outside the Elixir service. The repository ships 22 dashboards: Battery Health, Charge Level, Charges, Charge Details, Charging Stats, Database Information, Drive Stats, Drives, Drive Details, Efficiency, Locations, Mileage, Overview, Projected Range, States, Statistics, Temperatures, Timeline, Trip, Updates, Vampire Drain and Visited. Each entry in the README links to a screenshot page on the documentation site rather than to a dashboard definition you can edit, and the Dockerfile copies the whole grafana/dashboards directory into the release. The consequence is concrete. A question the bundled set cannot answer, such as cost per mile in your own currency or an energy chart per month, is Grafana work on your side, and Projected Range is the one bundled dashboard framed around forecasting.
Nineteen languages fall back to English, and imports only go one way
The web interface ships in 19 languages, from Catalan through Danish, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese, Korean, Norwegian Bokmal, Simplified and Traditional Chinese, Spanish, Swedish, Thai, Turkish and Ukrainian, and any string without a translation falls back to English. That means a partially translated release can hand you an English fragment inside an otherwise localized page, which is a layout problem rather than a missing feature. For arrivals from elsewhere, the feature list names TeslaFi and tesla-apiscraper as import sources. Treat that as migration in, not as a bridge: the feature list names no export of your own TeslaMate data, so a bulk copy out of Postgres has to be arranged by you.
Getting it running means three sources and a database you already run
The README's opening sections hold no install command and point to the documentation instead: the security warning names the official repository and the documentation at docs.teslamate.org as the official sources, and the README badges link to the teslamate/teslamate image on Docker Hub. A working setup therefore involves a Postgres database, a local MQTT broker, your Tesla account, and Grafana with the bundled dashboards. What you cannot skip is the separation: the container image is the logger, not the database and not the dashboards.
Editorial conclusion
TeslaMate suits an owner who wants their own drive and charge history, owns a Postgres instance anyway, and is willing to keep Grafana and an MQTT broker running alongside it. It does not suit anyone who wants a logger that keeps the car awake while parked. Before you pull the image, confirm the source is the official repository or documentation site, because the project itself documents counterfeit copies that ask for your Tesla account.
Frequently asked questions
What is TeslaMate?
TeslaMate is a self-hosted data logger for a Tesla, written in Elixir, that stores drive and charge data in a Postgres database, publishes vehicle data to a local MQTT broker and ships Grafana dashboards for visualization.
Is TeslaMate free?
It is licensed AGPL-3.0-or-later, and the README says the licence is designed to keep TeslaMate free and open for everyone. Contributors also sign a Fiduciary License Agreement 2.0 through cla-assistant.io on their first pull request.
Can I run TeslaMate on a Raspberry Pi?
The README does not list supported hardware. The security warning names the repository and docs.teslamate.org as the official sources, the badges link to the teslamate/teslamate Docker Hub image, and the container is built from debian:trixie-slim on an elixir:1.20.3-otp-29 builder.
How do I add TeslaMate to Home Assistant?
Over MQTT. TeslaMate publishes vehicle data to a local MQTT broker, and Home Assistant, Node-Red and Telegram are all listed as integrations that go through MQTT.
Is TeslaMate safe to install?
The README opens with a warning to obtain TeslaMate only from the official repository and documentation site. It says reports exist of deceptive websites and unofficial App Store apps using the TeslaMate name to distribute modified versions, and that another source puts your Tesla account credentials and vehicle data at risk.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/teslamate-org-teslamate)Star history chart for your README
[](https://hysenlabs.com/projects/teslamate-org-teslamate)Was this useful?