Runs on Windows, macOS, or Linux with Python 3.10+. pip3 install -r requirements.txt then python3 launcher.py.
| File | Purpose |
| launcher.py | The file you actually run — python launcher.py. A thin top-level wrapper (sits next to gt7telem/) so nothing needs installing or `cd`-ing into a subfolder first. |
| gt7telem/__init__.py | Package entry point — re-exports the public telemetry/settings API (import gt7telem) |
| gt7telem/launcher.py | Unified entry point — opens the TRACE menu (Dashboard / Lap Analyst / Race Analyst) and the Records link; the top-level launcher.py above just calls into this |
| dashboard.py | Live telemetry dashboard app — the live fuel and tyre-stint strategy panel, spoken alerts, the live gap to the top lap, the after-lap time-loss summary and the header preference switches |
| udp.py | UDP telemetry capture, decrypt, and parsing, plus the fuel and tyre-stint estimator behind the strategy panel |
| lap_analyst.py | Lap analysis app — 20 chart groups, A/B compare, replay, the shareable PNG lap card, plus the leaderboard/ghost-download/consensus-line panel |
| corners.py | Per-corner analysis behind the Lap Analyst and Race Analyst Corners tabs — finds each corner on a lap, matches it to the same corner on a reference lap, and scores brake point, minimum speed, throttle-on point and time gained or lost; also the time-loss summary and per-corner consistency |
| race_analyst.py | Race analysis app — 17 chart groups, including per-lap Corners and Consistency, fuel per lap and laps per tank, and the shareable PNG race card |
| cars.py | Car ID to name lookup |
| trackdetect.py | Track auto-detect — learns each layout’s start-line position, heading and lap length and suggests the track for you to confirm |
| uiscroll.py | Scrolling for the Lap and Race Analyst windows: the left side panel, the chart area (both ways) and the chart tab row |
| tracks.py | Track/course ID to name lookup |
| add_track.py | CLI tool to add a missing track (saved to course_ids_local.csv in your settings folder, so it survives upgrades) |
| add_car.py | CLI tool to add a missing car (saved to car_ids_local.csv in your settings folder, so it survives upgrades) |
| config.py | Settings persistence (console IP, laps folder, sample rate, PSN name, analytics, update-check, voice-alert and top-lap-ghost switches), plus the macOS button-colour fix |
| analytics.py | Sends the anonymous usage-analytics ping (tool/version/OS) to Supabase on launch — see Privacy |
| leaderboard.py | Global lap leaderboard, ghost-lap download, the Dashboard’s one-off top-lap lookup, and consensus racing-line client — talks to the same Supabase project as analytics.py. Also defines the GT7 physics era (update 1.71+) that decides which laps are comparable |
| auth.py | Optional free account — Supabase anonymous sign-up and session refresh, used by the first-launch screen and Lap Analyst's Submit to Leaderboard |
| metrics_server.py | Optional Prometheus metrics export (off by default) — speed/rpm/throttle/brake/fuel/lap-time gauges for Grafana or any Prometheus-compatible scraper |
| notify.py | Desktop/sound notifications (new personal best, race end) — Windows system sound (afplay on macOS, a freedesktop/ALSA player on Linux, Tk bell as a fallback) + a small self-closing on-screen toast, no extra dependencies |
| keepawake.py | Keeps the PC from idle-sleeping or hibernating (Windows, macOS and Linux) the whole time the Dashboard is open — the KEEP AWAKE switch — and lets go when it closes, so a race doesn’t end up incomplete. It can’t stop a closed lid or a manual Sleep/Hibernate |
| consistency.py | Lap-time spread, trend and 0–100 consistency score behind the Race Analyst Consistency tab (laps more than 7% off your best are left out) |
| share_card.py | The shared renderer for the 1200×630 shareable PNGs — the Lap Analyst lap card and the Race Analyst race card are both drawn here (headline stats, chart, speed-coloured map) |
| dyno.py | Dyno & Tune — rebuilds the engine’s power and torque curve, the gear ratios, top speed per gear, best shift points and tuning hints from one lap (the Lap Analyst Dyno & Tune tab) |
| theoretical.py | Theoretical best lap — stitches the fastest micro-sector from each of your laps and finds the zones that hold your best real lap back (the Lap Analyst Theoretical tab) |
| records.py | The Records table opened from the Launcher — best lap per car and track, read from the summary at the start of each saved lap file |
| ghost.py | Live gap to the leaderboard’s fastest lap in the Live Dashboard — rebuilds the top lap’s clock from distance and speed. The one-off request itself is in leaderboard.py — see Privacy |
| voice.py | Spoken fuel and tyre alerts in the Live Dashboard through the OS voice (Windows speech, macOS say, Linux spd-say/espeak), falling back to the alert sound |
| lapclean.py | Junk-lap guards and the duplicate-lap finder — the Dashboard skips recordings that are too short, never moved, or a double save, and the Lap Analyst’s Find Duplicate Laps moves extra copies into a _duplicates folder (nothing is deleted) |
| car_ids.csv | Car ID database — refreshed every time 10 or more new cars have been added since the last update |
| course_ids.csv | Track ID database |
| py.typed | PEP 561 marker so IDEs get proper autocomplete for import gt7telem |
| requirements.txt | Python dependencies |
| README.txt | Setup instructions |