About Features Files Privacy Set It Up → Support
Full Feature List

Everything
It Does.

Every feature across all four tools, and who actually built it. TRACE only exists on top of two other people's work — this page is about being honest about which parts are which.

This list is now final — TRACE has moved to maintenance mode. From here on it's bug fixes and car/track database updates only, no further new features.

Me Built for TRACE itself — the dashboards, analysts, event/incident detection, packaging, all of it.
Bornhall The GT7 UDP protocol, Salsa20 decryption key, and packet byte structure. None of this runs without it.
ddm999 The car ID → name database and the track/course name list (gt7info) — every real car and track name shown anywhere in TRACE.
// foundation
Bornhall

The Protocol
Itself.

One item in this group, but it's the one nothing else in this list can exist without.

Salsa20 Decryption & Packet Structure
The decryption key, IV construction, and the byte-offset map for every field in the packet (speed, RPM, gear, tyres, suspension, fuel, and more) come directly from Bornhall's gt7telemetry reverse-engineering work. Every tool below reads a stream that only exists because of this. Two more community projects — MacManley's gt7-udp and Nenkai's PDTools — documented the per-version packet lengths and the extended-field offsets that TRACE's parser cross-references on top of that.
// foundation
ddm999

The Car & Track
Databases.

The other piece nothing else here can fake. GT7 hands over a number — this is what turns it into a name. And for tracks, where GT7 doesn't even hand over a number, it's the only reason there's a name list to pick from at all.

Auto Car Name Discovery
GT7's telemetry only ever reports a raw numeric car ID. Every car name shown anywhere in TRACE — Dashboard, Lap Analyst, Race Analyst — is resolved instantly through ddm999's gt7info database, shipped as a local car_ids.csv snapshot. No matching logic on this end — it's their data doing the actual work. (The same database backs the track list right below.)
Track Name Database
GT7's telemetry doesn't expose a track/course ID at all — nothing to auto-detect, unlike cars. The TRACK dropdown in the Live Dashboard is instead seeded from ddm999's gt7info course list, shipped as a local course_ids.csv snapshot — 120+ real circuit and layout names (reverse layouts, no-chicane variants, sub-layouts included), kept current as Polyphony adds tracks. No auto-detection, but no more typo'd/inconsistent track folders either.
// everything built on top
Me

Everything
Else.

All of this runs on Bornhall's decrypted stream and ddm999's car and track names, but every line below — every panel, chart, detection system, and build — was written for TRACE.

Heartbeat / UDP Connection Handling
The threads that send the heartbeat to :33739 and listen on :33740, plus connection-state tracking, reconnect logic, and — as of the latest build — detailed connection error diagnostics (distinguishing a bad IP, a firewalled port, or another instance already bound to it) instead of a generic "timeout."
Race Start / End Detection
Detects both rolling starts (sustained speed above threshold) and grid starts (stationary + on-track within an armed window after a loading transition), and fires a race-end event when lap number crosses total laps.
Pause / Resume Detection
Watches the raw paused flag and fires pause/resume events other parts of the app (like the Lap Analyst's recorder) hook into.
Incident Detection
Flags tyre-slip spikes and sudden sway/heave/surge (body motion) events during a race — spins, rear step-outs, big kerb strikes — with cooldown so one incident isn't logged a dozen times.
Fuel Mixture Change Detection
GT7 doesn't expose the mixture setting over telemetry, so this watches fuel-burn rate for a sustained step-change and flags a likely mixture switch, in either direction.
Debug State Event Stream
Fires a snapshot event any time loading, on-track, or lap-count state changes — so a misfire in the start/pause detection can be diagnosed from the exact state that triggered it, without a console window.
Saved Settings
Console IP, recording sample rate, and the analytics/metrics toggles are all set in the Dashboard header and persist to a settings.json, remembered automatically between runs. (The laps folder lives in the same file but has no in-app control — move it by editing LAPS_FOLDER directly.) The standalone builds keep it next to the executable so they stay portable; pip/source installs use ~/.gt7telem/ so an upgrade can’t wipe your settings.
Adjustable Recording Sample Rate — Live Dashboard
Optional REC RATE dropdown next to the connection controls — pick how often samples get recorded during Record Lap / Record Race (10 / 20 / 30 / 60 Hz). Lower rates keep saved lap/race files smaller; higher rates capture more detail for the Lap Analyst's finer charts. Recording never invents data between real telemetry packets — it only thins samples down to the rate you pick, never up. Laps and races recorded at different rates compare and sync correctly against each other in the Lap Analyst and Race Analyst, since both key off each sample's actual recorded timestamp rather than assuming a fixed interval.
Track Picker — Live Dashboard
TRACK field is a searchable dropdown backed by ddm999's course database (see the ddm999 section above) instead of a free-typed box — pick the real name instead of retyping it every session. Still free-typeable for anything not in the list. If GT7 ships a new track before the database catches up, add_track.py (ships with the source) adds it in one prompt — just the name, no ID needed, since telemetry doesn't expose one to look up in the first place.
Real-Time Multi-Channel Display — Live Dashboard
Speed, RPM, gear, throttle/brake, tyre temps, fuel, G-forces, and 40+ other channels updating live at 10Hz.
Live Track Map — Live Dashboard
A mini canvas that draws your position in real time from world X/Z coordinates — no pre-loaded track data needed, it draws itself as you drive.
Tyre & Fuel Alert Banners — Live Dashboard
Flashing hot/cold tyre and low-fuel banners so you don't have to watch the numbers constantly.
Lap History Panel — Live Dashboard
A scrollable, sortable list of every lap in the current session, with car and track names (via ddm999's database) instead of raw IDs.
16 Chart Groups — Lap Analyst
Inputs, Engine, Tyres, Dynamics, Maps, G-Force, Fuel, Braking, Sectors, Traction, Tele Diff, Ratings, Heat Maps, Timeline, Extended, and Consensus — all rendered from a single recorded lap.
Replay System — Lap Analyst
Scrub through a recorded lap and watch every chart and the track position move together in sync.
A vs B Lap Comparison — Lap Analyst
Load two laps side by side and compare every metric directly — where time was gained or lost, and why.
Full-Race Replay & Comparison — Race Analyst
Load two complete race sessions and replay them synced, side by side, start to finish.
CSV / HTML Export — Race Analyst
Export the full breakdown of a session to share or dig into outside the app.
Windows & Linux One-File Builds — Packaging
PyInstaller onefile builds — no Python install required. Produced on GitHub-hosted runners on every release; the exact build commands live in the build workflows if you want to reproduce one yourself.
Automated macOS Builds — Packaging
TRACE.app is built automatically on every release by a GitHub-hosted Apple Silicon runner — no physical Mac needed on this end, and no more asking the community to build and email one in.
Anonymous Usage Analytics — All Tools
One small anonymous record sent on launch — tool, version, and OS, nothing else — so effort goes toward what people actually use. On by default, one checkbox to turn off. Full breakdown on the Privacy page.
Global Lap Leaderboard — Lap Analyst
Submit a recorded lap to a public per-car, per-track leaderboard, with a live Top-10 panel right in the sidebar. Submitting needs a free account (see below) — the name that appears on the row is the PSN name you type in the submit dialog, pre-filled from last time and editable each submit. Backed by a Supabase database; see Privacy for exactly what gets submitted.
Server-Side Anti-Cheat — Leaderboard
Every submission is checked in the database itself before it can appear: physically-impossible lap times are rejected outright, and times beating the current record by more than 20% are held for manual review instead of publishing immediately.
Ghost Lap Download — Lap Analyst
Download any Top-10 leaderboard lap and load it straight into the A-vs-B compare view as Lap B — same charts, same diff tools, no need to already own a recording of it yourself.
Consensus Racing Line — Lap Analyst
Pull a community-average speed/throttle/brake line — computed from the current top 10 leaderboard laps for your car and track — and overlay it against your own lap on a dedicated Consensus chart tab.
Crowdsourced Car & Track Submissions — Live Dashboard
If GT7 reports a car ID that's not in the local database yet, or you type in a track name that isn't in the picker, it's submitted to a shared community inbox automatically — instead of just showing a blank name until someone notices and runs add_car.py/add_track.py by hand.
Optional Free Accounts — All Tools
A one-time onboarding screen offers a free account — just a display name, no email or password, ever — so a leaderboard submission ties to a real identity instead of a self-typed name anyone could fake. Skipping is one click and still gives full access to viewing the leaderboard, downloading ghost laps, and the consensus line; only submitting a lap needs an account, and you can sign up later from the tool menu at any time.
Replay CSV Export — Lap Analyst
Export a loaded lap's Replay data — distance, speed, throttle, brake, RPM, gear, steering — straight from the Replay tab, one click.
Micro-Sector Heatmap — Lap Analyst
Toggle the race-line on the Replay tab to color by 25m-sector time delta against a loaded reference lap — red where you're slower, green where you're faster, at a glance.
Track Boundary Overlay — Lap Analyst
Save an estimated left/right track edge straight from a lap's own GPS trace — no external track-map data needed — and it renders under the race-line automatically on every future lap loaded for that track.
Prometheus Metrics Export — Live Dashboard
Optional, off by default: expose speed, RPM, throttle, brake, fuel, and lap-time as Prometheus gauges on a local port, for Grafana or any Prometheus-compatible scraper to pull from.
// the honest breakdown

So How Much
Did I Actually Add?

0Features — Me
0Feature — Bornhall
0Features — ddm999

Counting it up: 31 of the 34 features listed on this page — every dashboard panel, both analysts, every detection system, the settings, the packaged builds, and the Supabase-backed leaderboard/analytics/accounts work — are original TRACE code. That's genuinely most of what you're clicking through when you use the app.

But that count is a little misleading on its own, so here's the honest version: the other 3 features are the 3 that everything else depends on. Take away Bornhall's decryption and there's no telemetry stream to read in the first place — every one of those 31 features would just be a GUI pointed at nothing. Take away ddm999's databases and cars show up as meaningless IDs, and the TRACK field has nothing to pick from at all. It's 31 features tall, standing on 3 foundations I didn't build. That ratio isn't something to gloss over — it's the whole reason the About page exists.

Read The Full Story
Bornhall
Reverse-engineered the GT7 UDP protocol from nothing. Full origin story, including exactly how demoralising it was before finding this repo, on the About page.
About TRACE →
Go Star It
ddm999
Maintains gt7info, the community car/track/manufacturer database that powers every car and track name shown anywhere in this app. Kept current as Polyphony adds new content.
github.com/ddm999/gt7info ↗