explaingit

iamtomshaw/open-pit-wall

21PythonAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A Python tool that replays real Formula 1 timing and telemetry data over a local WebSocket as if it were live, for building and testing race dashboards offline.

Mindmap

mindmap
  root((open-pit-wall))
    What it does
      Replays F1 data as live feed
      WebSocket broadcaster
      Offline testing for dashboards
    Data Channels
      Driver telemetry
      Leaderboard positions
      Weather snapshots
      Race control messages
      Lap counts
    Replay Controls
      Play and pause
      Fast forward and rewind
      Speed multiplier
      Restart
    Data Source
      FastF1 historical records
      JSON file cache
    Tech Stack
      Python WebSocket
      FastF1 library
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build and test an F1 race dashboard against realistic replay data without waiting for a live race session.

USE CASE 2

Develop a driver telemetry overlay for streaming that works entirely offline using cached historical F1 session files.

USE CASE 3

Create a race control message display that subscribes to safety car and flag events from a replayed session.

Tech stack

PythonWebSocketFastF1

Getting it running

Difficulty · moderate Time to first run · 30min

First run downloads session data via FastF1 which requires an internet connection, subsequent replays work offline from cache.

Use freely for any purpose including commercial use, as long as you keep the copyright notice.

In plain English

Open Pit Wall is a Python tool that replays real Formula 1 timing and telemetry data as if it were arriving live. It is aimed at developers who are building dashboards, overlays, or other applications that need a realistic F1 data feed to test against, but do not have access to a live session. Instead of connecting to a live source, you point it at previously recorded session data and it broadcasts that data over a local WebSocket connection as though the race is happening right now. The tool handles downloading and caching session data from a library called FastF1, which provides access to historical F1 timing records. Once a session is downloaded and cached, you can replay it at any speed using terminal commands: play, pause, fast forward, rewind, restart, or set a specific speed multiplier. The broadcaster sends data out on separate channels depending on what kind of information a client wants, covering driver telemetry, leaderboard positions, weather snapshots, lap counts, and race control messages like safety car calls. Clients connect over WebSocket and subscribe to whichever channels they care about. For example, a dashboard showing a single driver's speed and throttle would subscribe only to that driver's telemetry channel. A race control display would subscribe to the race control channel. The repository includes a working example that connects to the server and prints telemetry data for a specific driver. The data is stored and replayed as JSON files rather than a binary format, which keeps things readable and avoids certain security concerns around deserializing untrusted data. Cached session files are stored in a standard application data folder on your machine so they do not clutter the repository. The project is licensed under the MIT license. It uses real F1 timing records for development and educational purposes, and the README notes that Formula 1 and its trademarks belong to their respective owners.

Copy-paste prompts

Prompt 1
I'm building an F1 telemetry dashboard. Use open-pit-wall to replay the 2023 Monaco Grand Prix qualifying session and show me how to connect a WebSocket client to receive speed and throttle data for a specific driver.
Prompt 2
Help me build a simple race leaderboard widget in Python that subscribes to open-pit-wall's position channel and prints the top 5 drivers in order as the replay progresses.
Prompt 3
I want to add a pit stop timing channel to open-pit-wall that broadcasts when each driver enters and exits the pit lane. Show me how the existing channels are structured and help me add this new one.
Open on GitHub → Explain another repo

← iamtomshaw on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.