RMonitor protocol
How Outlap decodes the RMonitor record set: which records it reads, what it does with them, and how it stays correct across dropped packets.
RMonitor is the plain-text protocol that AMB/MyLaps decoders and timing software use to publish live results. It’s a line-based, comma-separated stream over TCP, with quoted strings. If your system can produce RMonitor, it can feed Outlap.
You don’t need to implement this to use Outlap: the timing bridge forwards the raw lines. This page documents what the server does with them, for anyone building a relay or diagnosing a feed.
Records Outlap understands
| Record | Fields | Used for |
|---|---|---|
$F | laps to go, time to go, time of day, race time, flag | Race clock and the current flag. |
$B | run number, run name | The session name. |
$C | class number, description | Class labels. |
$A | reg no, car number, transponder, first name, last name, nation, class | Competitor registration. |
$COMP | reg no, car number, class, first name, last name, nation | Competitor detail (some systems send this instead of $A). |
$G | position, reg no, laps, total time | Running order. |
$H | position, reg no, best lap number, best lap time | Best laps. |
$J | reg no, last lap time, total time | A completed lap, the record that creates laps. |
$I | time of day | Clock resync. |
Anything else is ignored and doesn’t count towards recognised in the stream response.
A short stream
$I,"13:30:00.000","31/08/2026"
$B,3,"Race 1 - GT Cup"
$C,1,"GT4"
$A,"1234","12",8812345,"Aoife","Byrne","IRL",1
$F,25,"00:45:00","13:30:00","00:00:00","Green "
$G,1,"1234",1,"1:42.311"
$J,"1234","1:42.311","1:42.311"
$H,1,"1234",1,"1:42.311"
Decoding rules
- Times accept
1:23.456,83.456and00:01:23.456. Anything that parses to zero, a negative, or more than 24 hours is dropped. - Flags are normalised:
green,yellow,red,white,purple, andfinish,chequeredorcheckeredall becomechequered. Unrecognised flag text is passed through. - Lap numbers come from the timing system’s own
$Glap count when it is ahead of Outlap’s, so a dropped packet doesn’t shift every later lap number. Otherwise Outlap counts up from the last lap it saw. - Redelivery is safe. A lap is skipped if Outlap already holds that lap number for the transponder in the session.
- Driver matching uses the transponder, then the car number, then the registration, against the Paddock roster.
Vendor values
vendor labels where the feed came from. It doesn’t change decoding, since all four use the same records, but it appears in Race Control and as each lap’s source (live:orbits, and so on).
| Value | System |
|---|---|
orbits | MyLaps Orbits |
trackside | MyLaps Trackside / X2 |
axware | AxWare |
rmonitor | Any RMonitor relay (default) |
generic | Anything else, including passings payloads |
Passings alternative
If your system doesn’t speak RMonitor, send passings as JSON objects to the stream endpoint instead, or build against Ingest laps. See Custom integration.