Race Admin
Quick access to iRacing session admin chat commands from your Stream Deck. Designed for league race directors and hosted session admins who need to issue commands like !yellow, !black, !pitclose, and more without typing them manually. Every mode sends its command through the iRacing SDK chat API — no keyboard bindings, no telemetry awareness.
Every command that accepts an optional [message] parameter supports template variables, so you can include live data like lap number, session time, or track name in the messages you send.
Select the mode from the Mode dropdown in the Property Inspector. The dropdown is grouped by Race Control, Session Management, Driver & Chat Management, and — on Elgato Stream Deck — Car Selection.
Throw Yellow Flag
Section titled “Throw Yellow Flag”Throw a caution flag — sends !yellow [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Message
Section titled “Setting: Message”Optional caution message (supports template variables).
Black Flag Driver
Section titled “Black Flag Driver”Issue a penalty — sends !black <driver> [time/laps/D]. Black Flag supports three penalty types.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Penalty Type
Section titled “Setting: Penalty Type”- Time (default) — Penalty duration in seconds (e.g.,
30) - Laps — Number of laps to serve (e.g.,
2) - Drive-Through — Drive-through penalty (
D)
Disqualify Driver
Section titled “Disqualify Driver”Disqualify a driver without removing them — sends !dq <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional disqualification message (supports template variables).
Show Disqualifications (Field)
Section titled “Show Disqualifications (Field)”Display disqualifications for the entire field — sends !showdqs.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Show Disqualifications (Driver)
Section titled “Show Disqualifications (Driver)”Display disqualifications for a specific driver — sends !showdqs <driver>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Clear Driver Penalties
Section titled “Clear Driver Penalties”Clear all penalties for a driver — sends !clear <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional explanation (supports template variables).
Clear All Penalties
Section titled “Clear All Penalties”Clear all penalties for the entire field — sends !clearall.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Wave Driver Around
Section titled “Wave Driver Around”Wave a car to the next lap and the end of the pace line — sends !waveby <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional explanation (supports template variables).
End of Line Penalty
Section titled “End of Line Penalty”Move a driver to the end of the pace line — sends !eol <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional explanation (supports template variables).
Close Pit Entrance
Section titled “Close Pit Entrance”Close pit entrances during green flag running — sends !pitclose.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Open Pit Entrance
Section titled “Open Pit Entrance”Open pit entrances during green flag running — sends !pitopen.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Adjust Pace Laps
Section titled “Adjust Pace Laps”Add, subtract, or set pace laps until green — sends !pacelaps <+n|-n|n>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Pace Laps Operation
Section titled “Setting: Pace Laps Operation”- + (default) — Add the given number of pace laps
- − — Subtract the given number of pace laps
- = — Set the absolute pace lap count
Setting: Pace Laps Value
Section titled “Setting: Pace Laps Value”The number of laps passed with the operation.
Single-File Restart
Section titled “Single-File Restart”Switch to single-file restart rules — sends !restart single.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Double-File Restart
Section titled “Double-File Restart”Switch to double-file restart rules — sends !restart double.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Advance Session
Section titled “Advance Session”Advance to the next session (e.g., qualify to grid) — sends !advance [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Message
Section titled “Setting: Message”Optional message to broadcast with the session change (supports template variables).
Delay Race Start
Section titled “Delay Race Start”Disable auto-race start for a number of minutes — sends !gridset [minutes] (max 10 minutes).
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Minutes
Section titled “Setting: Minutes”Number of minutes to delay. iRacing caps this at 10.
Start Race
Section titled “Start Race”Initiate the pace car or standing start sequence — sends !gridstart.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Track State (Rubber)
Section titled “Track State (Rubber)”Set the track usage percentage for the next session — sends !trackstate [percent].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Percent
Section titled “Setting: Percent”Track usage percent from 0 to 100, or -1 to carry the current state forward.
Grant Admin
Section titled “Grant Admin”Grant admin privileges to a driver — sends !admin <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional message (supports template variables).
Revoke Admin
Section titled “Revoke Admin”Revoke admin privileges from a driver — sends !nadmin <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional message (supports template variables).
Remove Driver
Section titled “Remove Driver”Permanently remove a driver from the session — sends !remove <driver> [message].
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Setting: Message
Section titled “Setting: Message”Optional removal message (supports template variables).
Enable Chat (All)
Section titled “Enable Chat (All)”Re-enable chat for all drivers — sends !chat.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Enable Chat (Driver)
Section titled “Enable Chat (Driver)”Re-enable chat for a specific driver — sends !chat <driver>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Disable Chat (All)
Section titled “Disable Chat (All)”Disable chat for all non-admin drivers — sends !nchat.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Settings
Section titled “Settings”- No additional settings
Mute Driver
Section titled “Mute Driver”Mute a specific driver — sends !nchat <driver>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Driver Target
Section titled “Setting: Driver Target”See Shared settings below — this mode needs a driver.
Message All Participants
Section titled “Message All Participants”Send a message to every participant, bypassing chat disables — sends /all <message>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Message
Section titled “Setting: Message”Required. Supports template variables.
Race Control Message
Section titled “Race Control Message”Send a message visible only to administrators — sends /rc <message>.
Details
Section titled “Details”- Method: Chat command
- Dial: No rotation support
- Default binding: No keyboard binding
- Telemetry-aware icon: No
Setting: Message
Section titled “Setting: Message”Required. Supports template variables.
Select Car (Admin Target)
Section titled “Select Car (Admin Target)”Elgato Stream Deck only. Turns a key into a self-populating car button for a race-control car selector. It auto-fills with one car from the live session and, when pressed, remembers that car as the shared admin target and switches to your per-car commands profile. Combine it with the bundled iRaceDeck Car Selector selector profile and any command mode set to the Selected Car target (see Shared settings) so a whole page of admin commands acts on the car you picked — instead of hand-building a page per car number. The selection is per-session: when a new session starts (car numbers reshuffle), a stale selection is voided rather than silently pointing at a different driver.
This mode sends no iRacing command itself; it’s navigation plus shared state.
Details
Section titled “Details”- Method: Navigation (stores the admin target, switches profile) — no iRacing command
- Dial: No rotation support (keypad only)
- Default binding: No keyboard binding
- Telemetry-aware icon: Yes — shows the car’s number big and centered (fixed size, fits 3-digit numbers) with the driver’s last name below, updating as the field changes. An empty slot (fewer cars than keys) shows a blank black key.
How keys map to cars
Section titled “How keys map to cars”The field is sorted by car number (pace car and spectators excluded), then fills your Select Car keys left-to-right, top-to-bottom. Place any number of keys anywhere on the page — corners included, mixed freely with other actions — and every page of a multi-page selector may hold a different number of car keys. Nothing is reserved: the Back-to-profile and Previous/Next page keys in the bundled profile are ordinary keys that simply aren’t Select Car keys.
On a multi-page selector, the plugin learns how many car keys each page holds as you visit the pages. Profile switches always land on the first page and page navigation moves one page at a time, so the counts are known by the time you reach a later page. If a later page briefly shows blank keys (for example right after a plugin restart mid-browse), step back to the first page once and the field fills in.
Setting: Selector Page
Section titled “Setting: Selector Page”0-based page number for this key. Leave at 0 for a single-page selector; on a multi-page selector, set it to the page each key lives on so the cars stay in order across pages.
Setting: Target Profile
Section titled “Setting: Target Profile”The bundled profile to switch to after a car is picked, chosen from the profiles available for this device. Leaving it unset uses the bundled iRaceDeck Race Admin Per Car profile for this device.
Shared settings
Section titled “Shared settings”Driver Target
Section titled “Driver Target”Every mode that accepts a <driver> parameter shares a single targeting setting:
- Type in Chat (default) — One-tap “open chat with the right command pre-filled, let me type the number myself”. The action opens iRacing chat, pastes the command prefix (e.g.
!clearfollowed by a trailing space), and stops — it does not press Enter. You type the car number off the standings sheet and press Enter to submit. Useful for league admins who handle a different driver each lap and don’t want to pre-bind a specific number. - Use Viewed Car — The action reads the car number of the car currently being followed in the replay / broadcast view at send time. View a car and press the button; the command targets that car.
- Specific Car Number — Selecting this reveals a number input. The same car number is used on every press, regardless of which car is being viewed, and is also rendered on the button icon so you can tell which car the button targets.
- Selected Car (Elgato only) — Targets whichever car was last picked with a Select Car button (the shared admin target). The button shows the selected car’s number, or
NO CARwhen nothing is selected. This is the target you put on a per-car commands page so every command acts on the car chosen in the selector.
Driver-management modes refuse non-user targets
Section titled “Driver-management modes refuse non-user targets”Grant Admin, Revoke Admin, Enable Chat (Driver), Mute Driver, and Remove Driver manage users, not cars — and iRacing applies them to you when the target isn’t a real user, which can revoke your own admin and end your session. So these five modes refuse to send when the resolved target is an AI car, the pace car, or a car number that isn’t in the current session: the key flashes a warning and nothing is sent. Revoke Admin additionally refuses your own car — revoking your own admin can end the session you’re hosting, and it’s an easy slip with the Use Viewed Car or Selected Car targets. Race-control commands (Black Flag, EOL, DQ, Clear Penalties, Wave Around) are car-targeted and still work against AI cars. The Type in Chat target bypasses these checks — you type the number yourself and submit manually.
Message templates
Section titled “Message templates”Every [message] parameter supports template variables, so you can include live telemetry or session data in the messages you send. Examples:
!advance Race starting in {{session.time_remaining}}!yellow Caution for incident on lap {{self.lap}}/all Welcome to {{track.short_name}}!Common workflows
Section titled “Common workflows”Issue a black flag:
- Set the mode to Black Flag Driver with your desired penalty type
- View the offending car in the replay / broadcast
- Press the button — the command targets the viewed car automatically
Throw a yellow with a message:
- Set the mode to Throw Yellow Flag
- Enter a message like
Caution for debris - Press the button when you need the caution
Quick pit control:
- Set up two buttons: one for Close Pit Entrance, one for Open Pit Entrance
- Press to toggle pit status during green flag racing
Run race control on one car at a time (Elgato Stream Deck only):
- Switch your Stream Deck to the bundled iRaceDeck Car Selector profile — from the Stream Deck Profiles section in any action’s settings, or with a Switch Profile key. The Stream Deck app asks to install the profile the first time you switch to it.
- The selector fills its keys with the cars in the session, sorted by car number — one big car number per key with the driver’s name below. Use the page keys to reach larger fields. Press the car you need to act on.
- Your Stream Deck switches to the iRaceDeck Race Admin Per Car profile, where every command key — black flag, end-of-line, disqualify, clear penalties, wave around, and the rest — uses the Selected Car target and acts on the car you picked.
- When you’re done with that car, the profile’s back key (a Switch Profile key set to Back to previous) returns you to the car selector to pick the next one.

