Skip to content(if available)orjump to list(if available)

Show HN: Undercutf1 – F1 Live Timing TUI with Driver Tracker, Variable Delay

Show HN: Undercutf1 – F1 Live Timing TUI with Driver Tracker, Variable Delay

66 comments

·April 19, 2025

undercutf1 is a F1 live timing app, built as a TUI. It contains traditional timing pages like a Driver Tracker, Timing Tower, Race Control, along with some more detailed analysis like lap and gap history, so that you can see strategies unfolding.

I started to build undercutf1 almost two years ago, after becoming increasingly frustrated with the TV direction and lack of detailed information coming out of the live feed. Overtakes were often missed and strategies were often ill-explained or missed. I discovered that F1 live timing data is available over a simple SignalR stream, so I set out building an app that would let me see all the information I could dream of. Now undercutf1 serves as the perfect companion (like a second Martin Brundle) when I'm watching the sessions live.

If you want to test it out, you replay the Suzuka race easily by downloading the timing data, then starting a simulated session:

1. Download undercutf1 using the installation instructions in the README.

2. Import the Suzuka race session data using `undercutf1 import 2025 -m 1256 -s 10006`.

3. Start the app (`undercutf1`) then press S (Session) then F (Simulated Session), then select Suzuka then Race using the arrow keys, then press Enter.

4. Use arrow keys to navigate between the timing pages, and use N / Shift+N to fast-forward through the session.

If you want to test it out during this weekends Jeddah GP, simply install as in the README then start a live session by pressing S (Session) then L (Live Session).

The app is built for a terminal of roughly 110x30 cells, which probably seems an odd size but just so happens to be the size of a fullscreen terminal on a MBP zoomed in far enough that the text is easily glanceable when the laptop is placed on a coffee table some distance away from me :) Other terminal sizes will work fine, but information density/scaling may not be ideal.

If you're using the TUI during a live session, you'll want to synchronise the delay of the timing feed to your TV feed. Use the N/M keys to increase/decrease the delay. During non-race session, I find it fairly easy to sync the session clock on TV with the session clock on the bottom left of the timing screen. For race sessions, synchronisation is a little harder. I usually aim to sync the start of the race time (e.g. 13:00 on the timing screen clock) with the start of the formation lap, where the live feed helpfully shows the clock tick over to 0 minutes. I usually delay the feed by 30 to 60 seconds.

happosai

TUI for sports reminds me that in Finland, teletext is still very popular for following sports (football, ice hockey, even F1)

TUI gets you straight to the point, no ads, etc. So the teletext format is now outliving TVs and people read the teletext pages on their mobile phones (via we of dedicated apps)

https://yle.fi/aihe/tekstitv?P=207

deltaknight

Oh that's fantastic, way better than searching for results on modern sports news sites. Definitely bookmarking this, maybe I'll accidentally learn a bit of Finnish.

herodoturtle

Awesome work, thanks for sharing!

If you weren't already aware of it, check out the #f1 community on libera.

Hamuko

>maybe I'll accidentally learn a bit of Finnish.

Your chances are slim, or mahdollisuutesi ovat niukat.

PaulRobinson

This is really very cool and as a geek who loves F1, I can't wait to play with this over this weekend and beyond.

I'm curious where the live/static data is coming from and how freely available it is. Most sports are very protective of their data rights in the betting era (I know of one guy who spends six figures on tennis data a year - and yes, he makes a profit from it), so I'm wondering if/how F1 sees all this.

Regardless, I think this is absolutely marvellous, and can see this becoming my second/third screen while sat on the sofa enjoying the races live. Thanks, and if I can find a way to contribute/give back, I will.

deltaknight

Thank you! The data comes from a SignalR data stream that F1 provides. It's not exactly public, but also not protected. There are some other projects (like FastF1) which have done a lot of working understanding this data, so all kudos go to them.

There's also static API endpoints which contain .json and .jsonStream files after a session ends, so you can process all the data and run some analytics on it.

I assume they don't mind too much about the usage - on the basis that some of these projects have existed for quite a while. I'm pretty sure everything who performs F1 analysis (like journalists, YouTubers etc) with charts and the like and getting their data via these feeds (either directly or via packages like FastF1.

If you want to learn more about the implementation itself, I'd recommend checking out the DataImporter.cs and LiveTimingClient.cs files in the UndercutF1.Data project of the repo. Although fair warning, my codes not that beautiful :).

noisy_boy

Congratulations - that is a nicely written README, shows the care you put into this.

scrlk

Great work!

> Tyre Strategy page

Nice, I'll be able to see how Ferrari have fumbled strategy for their drivers.

atonse

We have to make sure the screen goes all the way to Plan H.

PaulRobinson

You're being optimistic. Like Excel, I think we need double letters...

MengerSponge

Plan H? We are checking.

yahoozoo

This is awesome. My wife and me and are going to the Miami Grand Prix here in a few weeks, big fans. Excited to play with this for Jeddah sessions/race.

deltaknight

Wow I'd love to go to a US race at some point, the vibe in those weekends feels so unique compared to the classic European race. Hope you have a great time! Happy to take any feedback/suggestions after the Jeddah sessions if you have any

glenngillen

I was fortunate enough to go to the very first race in Austin. That was pre the DTS-driven levels of attendance you get at races these days, and (maybe because it was their first time hosting?) it was also super cheap compared to attending any other race. And honestly it was one of the best race weekends I've attended. The layout of the track (e.g., a main straight that goes into a hairpin, comes back downhill, sweeps back right and uphill...) seems almost uniquely designed to give someone in the paddock the ability to watch multiple parts of the circuit. Also Austin was just a great city to visit too.

nikolayasdf123

have nice f1 mate

cbgonz

Looks enticing! Regrettably a quick install (using the dotnet tool method, Win10) installs without error, but running the app results in an unresponsive window (both terminal and console), logs show no error... None of the key commands work (not even Q). Import data woks, but does not change the unresponsive window. Not looking for tech support, just making you aware that some additional steps might be required in the README (are there geographic limitations?). Thanks!

deltaknight

Got in front of my Windows machine and figured out the issue. I believe Windows support should be fixed in v3.0.10 now (https://github.com/JustAman62/undercut-f1/releases/tag/v3.0....). Let me know if you are still facing issues!

cbgonz

Thank you, it seems to be working now, will give it a try tomorrow during the race!

deltaknight

Thanks for the heads up. I think there might be some intricacies with different terminals and OS's which I hasn't fully appreciated (I've only been testing this on a arm64 Mac unfortunately). I have made a new release (https://github.com/JustAman62/undercut-f1/releases/tag/v3.0....) which might help fix the issue - but I'll need to get my hands on a windows machine again to validate, which I should be able to do in the next couple of days.

monkeydust

Just tried it, windows wont download says there is a virus

deltaknight

Unfortunately I think this is because I haven't signed the executable. I've signed the Mac executable (as I already have an Apple dev account), but the Microsoft process seems to be a bit more involved and requires an expensive EV certificate. I'll look in to this further, but I can't promise anything.

Usually downloading the app as a dotnet tool doesn't get flagged as a virus, but it seems this isn't always the case.

mysterydip

Thank you for this! I love F1 and TUIs, this will be perfect for my desire to know more of what my midfield favorites are doing while the broadcasters are watching the front!

deltaknight

As it happens, I started to make this back when McLaren weren't doing quite as well as they are now... for exactly the reason you describe. Being able to see pit windows easily for drivers all the way down the field, and observe lap times and relative gaps for drivers makes following the midfield much easier.

Unfortunately I don't handle lapped drivers very well, once they're lapped much of the gap related stuff stops working for them. Thankfully the last year or so the field has been close enough where that's not too much of an issue.

williamscales

I installed on Windows using the dotnet method and it doesn't seem to work. The top line with Quit / Cursor / Session / etc shows up but none of the keys do anything.

I was hoping to test it out during the session currently going on :)

sixothree

I am getting the same thing. Any ideas?

deltaknight

Windows support should be fixed now in 3.0.10 (https://github.com/JustAman62/undercut-f1/releases/tag/v3.0....). Hopefully this works for you!

williamscales

I just tried it on Windows and it seems to work for me :)

Thanks! This is awesome work and I'm looking forward to tomorrow with much excitement.

williamscales

The creator mentioned in another reply that they had only tested on MacOS. I’m going to try on Linux later.

deltaknight

Yes correct, sorry forgot to reply to this chain. I've confirmed it works correctly on MacOS, Linux, and Windows under WSL (with the artefacts from the latest release). However, running directly under Windows has this issue where the terminal becomes unresponsive, and also only outputs a single line. I'm tracking the issue here: https://github.com/JustAman62/undercut-f1/issues/14 if anyone wants to know when Windows support is working.

johnbellone

This is freaking awesome. I am going to use it tomorrow. Great work!

StrLght

Looks great!

However, I'd appreciate an easier way to run it: binaries for Linux aren't standalone -- they require 3rd party dependencies to be installed. Static binaries (or maybe container image?) would be nice.

sixothree

Are you not able to compile this as "self-contained"?

deltaknight

I have compiled as self-contained, however I missed some configs to make sure that all native binaries were included in the final executable. I've made a new release recently (https://github.com/JustAman62/undercut-f1/releases/tag/v3.0....) which should resolve this issue.

As noted in https://github.com/JustAman62/undercut-f1/issues/3#issuecomm..., I think there's still more work to do to make the single-file executable work properly on Linux, due to the intricacies of the native Skia libs.

deltaknight

True single file static executables should now be working in the latest release.

jerkstate

this looks pretty cool, but I can't get delay working properly. Trying to watch the qualifying session on about a 25 minute delay, the clock indicates the correct time (17:05 or so a few minutes into the session) but the driver times aren't showing, and the radio and race control messages are current (like, I can see all of the race control messages and radio messages for all of Q1).

deltaknight

Ah, so unfortunately the delay is only applied to new data coming in. When you start a live session, we only get the current state and new data coming from the F1 feed, so we can't delay back to a point before you started listening to the feed. You also can't "rewind" the session, so any data that has been shown won't be removed, only new data will be added (after the delay you've set).

Currently the delay is designed for a minute or two's worth of delay for a live TV feed, or for replaying old sessions. I don't currently have a good way to support a long delay during a live session, without you starting the app before the session starts, and applying the 25 minute delay immediately so that all the data is queued up to be displayed in 25 minutes time.

jerkstate

oh, thanks for responding! I'll try to start the program before the race starts tomorrow.

cx0der

Gets flagged as Trojan by Windows Defender. I followed dotnet tool install method.