> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skyvexsoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VA Onboarding

> Walk through creating your virtual airline on Skyvex, configuring it for your pilots, and installing the starter plugins so your pilots can fly.

This guide is for **new VA administrators** who have just been granted access to the Skyvex platform. By the end you'll have a live airline, branded for your VA, with the Dashboard and Flight Tracking plugins installed and ready for pilots.

If you don't have access yet, request it at [skyvexsoftware.com](https://skyvexsoftware.com/#waitlist). VA access is currently invite-only while we're in early access.

## What you'll need

Have these ready before you start — you can fill them in later, but it's quicker to do it once:

* **Airline name** and **ICAO code** (2–4 letters, e.g. `PVA`)
* **Logo files** — one for light backgrounds, one for dark backgrounds (PNG or SVG)
* **Square icon** — used in notifications and app tiles
* **Brand colours** — primary + text colour for both light and dark modes (hex codes)
* **Crew system details** *(optional but recommended)* — your API base URL and whether you'll use credentials or OAuth

## Step 1 — Create your airline

<Steps>
  <Step title="Sign in to Skyvex">
    Open [skyvexsoftware.com/login](https://skyvexsoftware.com/login) and sign in with the account that was granted VA admin access.
  </Step>

  <Step title="Open the create form">
    From your dashboard, click **Create Airline**. You'll see a simple form asking for basic information.
  </Step>

  <Step title="Fill in the basics">
    | Field                    | What to enter                                                                           |
    | ------------------------ | --------------------------------------------------------------------------------------- |
    | **Airline Name**         | The full display name, e.g. *Pacific Virtual Airways*                                   |
    | **ICAO Code**            | A 2–4 letter code, e.g. `PVA`. Used as the airline identifier across Skyvex and Stratos |
    | **Website** *(optional)* | Your VA's public URL, shown to pilots in the airline directory                          |

    Click **Create Airline** to continue. You'll land on the airline overview page.
  </Step>
</Steps>

<Tip>
  Everything in this guide is editable after creation. You don't need to get branding or crew system integration right on the first pass — get the airline created, then come back and refine.
</Tip>

## Step 2 — Configure branding

Pilots see your branding the moment they connect to your airline — the logo replaces the Stratos logo in the sidebar, your colours apply to highlights and accents, and your icon shows up in OS notifications.

From your airline page, click **Edit** to open the configuration form, then scroll to the **Branding** section.

<Steps>
  <Step title="Upload your icon">
    A square image, used for app displays and notifications. PNG with transparency works well. Keep it simple — at small sizes, detail disappears.
  </Step>

  <Step title="Upload your logos">
    You upload **two** logos:

    * **Light mode logo** — shown when the pilot is using the light theme. Use a dark logo so it's readable on a white background.
    * **Dark mode logo** — shown in dark theme. Use a light/white logo for the same reason.

    If you only have one logo, upload it as both — it just won't adapt to the user's theme.
  </Step>

  <Step title="Pick your colours">
    Set four hex values:

    * **Light Primary** — your accent colour on a white background (buttons, highlights)
    * **Light Text** — the muted text colour for secondary labels in light mode
    * **Dark Primary** — your accent colour on a dark background
    * **Dark Text** — the muted text colour for secondary labels in dark mode

    The colour picker accepts any valid hex code. The same accent colour usually works for both light and dark; the text colours typically differ.
  </Step>

  <Step title="Save">
    Click **Save Changes** at the bottom of the form. Branding takes effect immediately — pilots who are already signed in will see the update the next time their app syncs.
  </Step>
</Steps>

## Step 3 — Connect your crew system

Stratos is an ACARS client — it sends pilots' flight data back to your crew system (phpVMS, vaCentral, in-house, etc.) so PIREPs land where your roster, schedules, and league tables live.

This step is **optional** for testing, but required before pilots can submit real flights.

<Steps>
  <Step title="Set the API Base URL">
    In **Edit Airline → Crew System Integration**, enter your crew system's API base URL. For example:

    ```
    https://crew.yourairline.com/api/
    ```

    Trailing slash is required. This is the prefix Stratos uses for every VA API call.
  </Step>

  <Step title="Choose your authentication method">
    Stratos supports two methods:

    * **Credentials** — pilots enter their crew system username and password directly in Stratos. Stratos forwards them to your VA API for verification. Simpler to set up; less secure (pilots type their password into a desktop app).
    * **OAuth 2.0 (PKCE)** — pilots are redirected to your crew system's login page, sign in there, and Stratos receives an access token. Strongly recommended.

    For OAuth, you'll need to register Stratos as a public OAuth client on your crew system and fill in the Client ID, authorise URL, token URL, and refresh URL. The full walkthrough is in [OAuth Authentication Setup](/guide/oauth-setup) — including the Laravel Passport example and the security controls your crew system must enforce.
  </Step>

  <Step title="Save and verify (OAuth only)">
    After saving an OAuth config, the airline edit page shows a **Verification Status** card. Click **Test Connection** — Skyvex runs through the full sign-in and refresh flow once and marks the config **Verified** with the current date if everything works. Any OAuth field change clears the verified status, so you can re-test after updates.
  </Step>
</Steps>

## Step 4 — Make your airline discoverable

By default, your airline is hidden from the public Stratos directory while you set it up. You have two ways to let pilots in:

<Steps>
  <Step title="Option A — Publish to the directory">
    In **Edit Airline → Visibility**, tick **Show in Stratos**. Your airline now appears in the public airline list inside the Stratos app — any pilot can find it and sign in.

    Use this once you're confident the setup is correct and you're ready for general onboarding.
  </Step>

  <Step title="Option B — Share an invite code">
    On your airline overview page, you'll see a **Share code** — a short, copyable code unique to your airline. Pilots can paste it into the airline picker in Stratos to find your airline directly, without it being publicly listed.

    Use this for staged rollouts, private VAs, or pre-launch testing with a few pilots.
  </Step>
</Steps>

You can use both at the same time — publish to the directory *and* share the code for direct links.

## Step 5 — Install the starter plugins

Stratos ships with a thin shell — the actual pilot-facing features (dashboards, flight tracking, landing analysis, etc.) come from plugins your airline installs. The two we recommend installing first are **Dashboard** and **Flight Tracking**.

<Steps>
  <Step title="Open the plugins page">
    From your airline overview, click the **Plugins** button. You'll see two sections:

    * **Installed plugins** — what your pilots currently have, in the order they appear in their sidebar
    * **Available plugins** — everything in the Skyvex catalog that your airline can install
  </Step>

  <Step title="Install Dashboard">
    Find **Dashboard** in the available list and click **Add**. A dialog asks how you'd like to scope it:

    * **Install for everyone** — every pilot in the airline gets it. This is what you want for Dashboard.
    * **Select pilots…** — only the pilots you pick. Useful for instructor-only or beta-testing tools, not for Dashboard.

    Click **Install for everyone**. Dashboard moves to the installed list.

    Dashboard gives pilots a welcome page with a banner, a "From the Team" announcement section, their pilot profile, and quick-access tiles you configure.
  </Step>

  <Step title="Install Flight Tracking">
    Repeat the same flow for **Flight Tracking** — click **Add**, then **Install for everyone**.

    Flight Tracking is the core of the ACARS client: real-time position reporting, multi-simulator support, flight phase detection, booking management, a live map, and the flight history view. Without it, pilots can't track or submit flights.
  </Step>

  <Step title="Set the order">
    Plugins appear in the pilot's sidebar in the order shown on this page. Drag the grip handle on the left of each plugin to reorder. A typical order is:

    1. **Dashboard** (top of sidebar — first thing pilots see on launch)
    2. **Flight Tracking** (the main workflow)
    3. Any custom or third-party plugins below

    Changes save automatically — you'll see a **Saving…** / **Saved** indicator in the header.
  </Step>
</Steps>

<Tip>
  You can install more plugins (Landing Analyser, Pilot Centre, your own custom plugins) the same way. The two starters above are the minimum needed for a usable airline.
</Tip>

## Step 6 — Configure plugin settings

Each plugin can expose airline-level settings — defaults and behaviours that apply to all your pilots. On the airline plugins page, plugins with airline-scoped settings show a small **cog icon** next to them. Click it to open that plugin's settings page.

### Dashboard

Dashboard exposes two airline-scoped settings:

| Setting                | What it does                                                                                                                                                                   |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Welcome Message**    | The text shown in the "From the Team" panel on every pilot's dashboard. Use it for ops announcements, current event info, or just a friendly greeting. Plain text, multi-line. |
| **Quick Access Links** | A JSON array of up to 10 tiles linking to external URLs — dispatch tools, league tables, training pages, etc. Each item has an icon, title, subtitle, and link.                |

The Quick Access Links field accepts items in this shape:

```json theme={null}
[
  {
    "icon": "Plane",
    "title": "Dispatch a flight",
    "subtitle": "SimBrief · OFP · Fuel",
    "link": "https://www.simbrief.com/system/dispatch.php"
  },
  {
    "icon": "Map",
    "title": "Route network",
    "subtitle": "All available routes",
    "link": "https://yourairline.com/routes"
  }
]
```

Supported icons: `Award`, `BookOpen`, `Calendar`, `FileText`, `Globe`, `HelpCircle`, `History`, `Home`, `Map`, `MessageSquare`, `Plane`, `Settings`, `Star`, `Target`, `Users`, `Wrench`. Unknown names fall back to `Plane`.

### Flight Tracking

Flight Tracking has a larger set of airline-scoped settings — these change how every pilot's tracking behaves:

| Setting                           | What it does                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Can Delete Bookings**           | If on, pilots can cancel their own booked flights from the booking list. Off by default.                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Allow Aircraft Changes**        | If on, pilots can change the aircraft on a booked flight before tracking starts. The dropdown only offers aircraft eligible for that flight (rank, type-rating, and location rules still apply). Off by default.                                                                                                                                                                                                                                                                                             |
| **Allow Start Override**          | If on, pilots can use "Start Anyway" to bypass a failed pre-flight check (e.g. the aircraft isn't on the ground) and start the flight regardless. If off, the "Start Anyway" button is disabled with a tooltip telling the pilot the restriction is set by your airline, and every pre-flight condition must pass before a flight can start. On by default. Note: some aircraft don't report the simulator's "on ground" flag correctly, so turning this off can make starting impossible in those aircraft. |
| **Tracking Interval**             | How often Stratos sends a position report. `15` / `30` / `60` seconds. Lower = smoother live map, more API traffic.                                                                                                                                                                                                                                                                                                                                                                                          |
| **Time Capture**                  | How flight time is measured for PIREPs. `Block Time` (pushback → arrived at gate) or `Air Time` (takeoff → landing).                                                                                                                                                                                                                                                                                                                                                                                         |
| **Starting Fuel Capture**         | When the flight's starting fuel is locked in for fuel-burn calculations. `Pushback` or `Takeoff`.                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Time Compression as Real Time** | If on, a 4× sim rate multiplies accumulated flight time by 4. Off by default — most VAs reward only real wall-clock time.                                                                                                                                                                                                                                                                                                                                                                                    |
| **Additional Fields**             | A per-phase matrix choosing which optional fields are appended to position reports (per flight phase) and which are included in the completion PIREP. Replaces the old separate Position Report Fields and PIREP Fields lists. Has no effect on what Skyvex stores. Full reference: [Additional Fields](/guide/additionalfields).                                                                                                                                                                            |
| **Event Rules**                   | Structured rules controlling which flight events get logged into the PIREP (engine on/off, flap changes, stalls, phase transitions, etc.). Edit on the dedicated event rules page.                                                                                                                                                                                                                                                                                                                           |

The defaults are sensible — most airlines won't need to change anything beyond Time Capture and the Event Rules. Pilot-scoped settings (auto-start, auto-submit) are configured by each pilot in the Stratos app itself.

## Step 7 — Test end-to-end

Before you announce the airline to your pilots, do one full dry run yourself:

<Steps>
  <Step title="Install Stratos">
    Download from [skyvexsoftware.com/download](https://skyvexsoftware.com/download) and install on your own machine.
  </Step>

  <Step title="Connect to your airline">
    On first launch, find your airline in the directory (or paste your share code). Sign in with your crew system credentials (or via OAuth if you configured it).

    Verify:

    * Your logo replaces the Stratos logo in the sidebar
    * Your accent colours show up on highlights and active states
    * Dashboard and Flight Tracking appear in the sidebar in the order you set
  </Step>

  <Step title="Fly a short test flight">
    Spin up your simulator, book a short flight via Flight Tracking, click **Start Tracking**, and fly a quick circuit. Submit the PIREP when you arrive.

    Check that the flight lands in your crew system with the right pilot, route, times, and any custom fields you configured.
  </Step>

  <Step title="Sweep the event log">
    Open the flight history in Flight Tracking and inspect the logged events for that flight. If something's missing (or noisy), tweak **Event Rules** on the airline plugin settings page and try again.
  </Step>
</Steps>

If anything in this flow surprises you — branding doesn't apply, PIREPs don't land, OAuth refresh forces a re-sign-in — fix it before you invite pilots. The first flight a pilot tries is the one that decides whether they'll trust the system.

## What pilots see

Once your airline is live, the pilot experience is:

1. Pilot downloads Stratos from [skyvexsoftware.com/download](https://skyvexsoftware.com/download).
2. On first launch, they find your airline (directory or share code) and click it.
3. They authenticate via the method you configured.
4. Stratos auto-installs the plugins you've published — Dashboard, Flight Tracking, plus anything else you've added.
5. Their first time on the Dashboard, they see your welcome message and quick-access tiles.
6. They book a flight, fly it, and submit — flight data flows to your crew system in real time.

The [pilot Getting Started guide](/guide/getting-started) covers their side of this in detail. It's worth skimming so you know what your pilots are reading.

## Next steps

* **Running phpVMS 7?** Install our open-source [Stratos API Modules](/guide/stratos-api/overview) and wire your crew system up in minutes — drop-in phpVMS modules, no patches, no custom tables. Start with the [Core API](/guide/stratos-api/core), then add [Logbook](/guide/stratos-api/logbook) for full pilot flight history.
* **OAuth setup** — if you chose OAuth, the full setup guide is at [OAuth Authentication Setup](/guide/oauth-setup), including PKCE setup, refresh token rotation, and the security controls your crew system must enforce.
* **Custom plugins** — build airline-specific dashboards, livery browsers, or dispatch tools using the [Plugin SDK](/sdk/overview).
* **Landing rates** — if you'd like landing-rate scoring with airline-configurable thresholds, install the Landing Analyser plugin from the Plugins page. Details in [Landing Rate Analysis](/guide/landing-rates).
* **Support** — your airline page has a **Support** button that opens a private ticket queue between you and Skyvex Software. Use it for integration questions, bug reports, or feature requests.
