KartChrono.Cli
1.1.0
dotnet tool install --global KartChrono.Cli --version 1.1.0
dotnet new tool-manifest
dotnet tool install --local KartChrono.Cli --version 1.1.0
#tool dotnet:?package=KartChrono.Cli&version=1.1.0
nuke :add-package KartChrono.Cli --version 1.1.0
kartchrono-cli
Query and monitor KartChrono live karting timing from your terminal.
Overview
KartChrono is a karting timing system used by ~54 tracks across Europe. Each track publishes a
live scoreboard on its own subdomain, fed by a WebSocket stream. kartchrono is a Native AOT
command-line client for that stream: it lists tracks, prints a session snapshot, follows a
leaderboard live, and shows lap-by-lap sector times for a single kart — without a browser.
Everything is passed as an argument, so the tool composes with grep, jq, watch and shell
pipelines.
Installation
dotnet tool install -g KartChrono.Cli
dotnet tool install fetches a framework-dependent package that runs on any platform with
the .NET runtime installed. Standalone Native AOT binaries — no runtime required — are also
published for linux-x64, linux-arm64, osx-arm64, osx-x64 and win-x64, attached to
each release.
Usage
kartchrono tracks # list every connected track
kartchrono session --track mayak # one snapshot of the current run, then exit
kartchrono live --track mayak # follow the leaderboard
kartchrono live --track mayak --kart 25 # follow one kart
kartchrono laps --track mayak --kart 25 # lap-by-lap with sector times
kartchrono records --track mayak --period week # best laps from the archive
| Option | Description |
|---|---|
--track <slug> |
Track subdomain, as listed by kartchrono tracks |
--kart <number> |
Restrict output to a single kart number |
--period <today\|week\|month> |
Range for records |
--json |
Emit JSON instead of a table |
--timeout <seconds> |
Stop after the given time |
--no-color |
Disable ANSI colour |
--help, --version |
Design
kartchrono-cli follows the Pure ecosystem conventions:
- Every type is a
sealed recordimplementing exactly one interface. - Behaviour lives in property getters — there are no methods beyond what the language forces.
- Values are
IString,INumber<T>andIBoolfromPure.Primitives.Abstractions, never raw primitives. - Everything is lazy and immutable; nothing is cached.
IAsyncEnumerable<T>carries every I/O-backed sequence — socket frames, session snapshots and rendered output lines.
Building
All dotnet commands run from ./src:
dotnet restore
dotnet build --no-restore -warnaserror
dotnet test --no-build --collect:"XPlat Code Coverage"
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.