# Launching a New Race App

The RUFUS Race App is created and managed from **RUFUS Cloud**. Each Race App instance behaves like a virtual device, with its own App ID, access token, expiration window, and session history.

This article explains how to launch a new Race App, manage its access, and understand how sessions and token rotation work.

## Where to Create a Race App

Race Apps are created from:

**RUFUS Cloud → Devices panel**

In the Devices view, you will find the **Launch Race App** section.

<figure><img src="/files/kGTLkZI1ByYJZjdnMNgJ" alt=""><figcaption><p>Launch Race App Card</p></figcaption></figure>

Launching a Race App creates:

* A virtual device record
* A unique App ID
* An access token
* A token expiration (TTL)
* A Cloud-level audit trail

## Launching a New Race App

To create a Race App:

1. Click **Launch Race App**
2. Enter a friendly alias (device name)
3. Select the **Access Token TTL** (expiration window)
4. Click **Launch Race App**

<figure><img src="/files/uQr0ztHZC5I4EW46urYY" alt=""><figcaption><p>Race App Access Information Card</p></figcaption></figure>

Once created, Cloud generates:

* **App ID**\
  `race-app.runonrufus.com/<AppId>`
* **Access Token** (format `JUDGE-XXXXX-YYYYY`)
* **Expiration time** (`race_app_token_until`)

The Race App now appears in your Devices list as a virtual Race App device.

<figure><img src="/files/oQ20fNA4q03CuE2vYLLG" alt=""><figcaption><p>Race App Card</p></figcaption></figure>

## Understanding Access Token TTL

The Access Token TTL defines how long the token remains valid.

When the TTL expires:

* The token stops working
* Judges can no longer log in
* A new token must be generated

Best practice:\
Set the TTL long enough to cover:

* Setup time
* Full race window
* Post-race buffer

If needed, you can refresh (rotate) the token at any time.

## Sharing Access with Judges

To give access to a judge, you must provide:

* The App link (`race-app.runonrufus.com/<AppId>`)
* The Access Token

Both are required.

At login, the judge must also enter:

* Their name (used for identification and audit)

**Important:**\
Only one active judge can use the token at a time. If another judge logs in using the same token, they take over the session.

## Device Details (Race App Device Card)

<figure><img src="/files/2AlrjcTQXPmfFoIK6hpc" alt=""><figcaption><p>Race App Details</p></figcaption></figure>

Opening the Race App device card in Cloud allows you to see:

* App ID
* Direct App link
* Current Access Token
* Token expiration time
* Sessions tied to this token
* Passings recorded
* Race Actions recorded
* App current location (if Location is enabled in the mobile)

This provides an administrative audit view at Cloud level.

**Remember:**\
Cloud is the administrative control layer. Race operations are managed inside Race Manager.

## Sessions Explained

A session is tied to the active access token.

A session becomes active when:

* The Race App token is used
* The device is assigned to an event in Race Manager

Important behaviors:

* Only one active judge per token
* Logging out does not erase session history
* Live Activity and Team Chat remain available for the same token
* A completely new session is created only when the token is refreshed

If another judge logs in with the same token:

* The previous judge is automatically logged out
* The new judge continues within the same token session

## Token Rotation (Hard Reset)

The **Refresh access token** button generates a completely new token.

When you rotate the token:

* The previous token is immediately invalidated
* Any active judge session is closed
* A new session lifecycle begins

Use token rotation when:

* Access was shared incorrectly
* A judge should no longer have access
* You need a clean operational reset

After rotation:\
You must communicate the new token to the judge. The old one will stop working immediately.

## Assigning the Race App to an Event

Launching the Race App in Cloud does not automatically connect it to an event.

Inside **RUFUS Race Manager**:

1. Open the event
2. Go to Devices
3. Assign the Race App device to:
   * The event
   * One or more checkpoint(s)

<figure><img src="/files/wQ5fz0T6uCqVwzj52TSL" alt=""><figcaption><p>Add Device Dialog in RRM</p></figcaption></figure>

Once assigned:

* The Race App can send Manual Timing passings
* Race Actions will appear in Race Notifications
* The session becomes operationally active

## Sessions, Passings and Race Actions (Cloud View)

From the Cloud device card, you can audit:

### Sessions

Event-bound operational sessions tied to the token.

### Passings

Generated from Manual Timing.

### Race Actions

Generated from:

* Penalty & Bonus
* Status changes
* Race Alerts
* Team Chat

Cloud acts as the control plane and audit layer, while Race Manager handles live race operations.

## Operational Best Practices

Before race day:

* Launch the Race App early.
* Set an appropriate TTL.
* Assign the device to checkpoints in Race Manager.
* Share link and token with judges.

During race day:

* Monitor sessions in Cloud.
* Rotate token if access needs to be reset.
* Verify device assignment in Race Manager.

After race day:

* Review audit history if needed.
* Rotate the token if the device should no longer be accessible.

## Summary

Launching a Race App in RUFUS Cloud creates a controlled, token-based virtual device that judges use during race operations.

The Access Token defines who can log in, the TTL defines how long it remains valid, and token rotation provides a secure reset mechanism.

Cloud manages access and audit. Race Manager handles operational execution.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.runonrufus.com/rufus-cloud/race-app/launching-a-new-race-app.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
