flightopsDocumentation
Get started

Install Flightops

5 min readdocs/INSTALLATION.md (source repository)

Flightops is in beta (0.2.0b1) for invited ROS 2 teams. You need the license key from your beta email; register if you have none. Choose the build that matches your Ubuntu and ROS 2 installation. Flightops does not install ROS 2.

Your systemBuild
Ubuntu 22.04, x86_64, system Python 3.10, ROS 2 HumbleHumble build
Ubuntu 24.04, x86_64, system Python 3.12, ROS 2 JazzyJazzy build

The installer needs no sudo, source checkout, Cargo or GitHub access. It installs Flightops into ~/.local/share/flightops and puts its commands in ~/.local/bin. The release notes list the exact release of each build.

Install the matching ROS 2 desktop distribution first. The first-steps demo uses demo_nodes_cpp. Source your ROS setup file in every terminal where you run Flightops or ROS commands. If your project has a workspace overlay, source its install/local_setup.bash after the ROS underlay.

Install on Ubuntu 22.04 with ROS 2 Humble

Follow the official Humble installation instructions if ROS 2 is not installed. Then, as your ordinary user, run the commands from the install page. Stop if a command fails:

bash
source /opt/ros/humble/setup.bash

Copy the Humble command from the install page and run it. It downloads the Humble installer (install-humble-….sh) and runs it. Then:

bash
export PATH="$HOME/.local/bin:$PATH"
flightops --version

The installer checks your Ubuntu version, Python and ROS, then shows the FlightOps beta terms (source repository) and asks you to type yes. Only then does it download the pinned archive, and it checks the archive's size and SHA-256 before it installs anything. It records the accepted terms version in ~/.config/flightops/terms-accepted, so a later install of the same version does not ask again. Without a terminal (for example in a provisioning script), read the terms first and set FLIGHTOPS_ACCEPT_TERMS=1 or pass --accept-terms:

bash
FLIGHTOPS_ACCEPT_TERMS=1 bash flightops-install.sh

Install on Ubuntu 24.04 with ROS 2 Jazzy

Follow the official Jazzy installation instructions if ROS 2 is not installed. Source Jazzy before you run the installer, so that its Python packages are available. Then run the commands from the install page:

bash
source /opt/ros/jazzy/setup.bash

Copy the Jazzy command from the install page and run it. Then:

bash
export PATH="$HOME/.local/bin:$PATH"
flightops --version

Activate this device

Every installed command except --help, --version and the license and installer commands needs an activated device. Activation needs the internet once:

bash
flightops license activate

Read the usage-metrics notice (the 0.2.0b1 builds title it "Flightops beta terms"), type yes, then paste the key from your email at the hidden prompt. For scripts, --key-file and other options, see the license reference.

Confirm the installation and ROS discovery

bash
flightops --verify
flightops doctor

flightops --verify checks the managed installation. flightops doctor checks the terminal, ROS environment and discovery, and writable session storage. It should show the expected ROS distribution and domain. A count of zero nodes is normal if no nodes are running. If ROS is installed but not sourced, source its setup file or run flightops setup to choose a detected installation. The system Python minor must match the build and the ROS installation.

Continue with first steps to attach to a demo node. For installation failures, use troubleshooting.

What the install contains

CommandPurpose
flightopsthe terminal, launch, doctor, results, recording, history, AI, docs, license, telemetry, workbench
onscope, splashdown, lcc (also launchcommit), highbaycomponent tools (index)
flightops-mcp, flightops-results, flightops-tui, flightops-serviceMCP server, results viewer, advanced subcommands, Scene Workbench service
flightschoolinstalls the ROS 2 skills for coding agents
flightleadcoordinator directory for coding agents (preview)
flightops-gym-smokeone local Gym smoke run (research preview)

The install also holds the Scene Workbench app (flightops workbench), the offline documentation (flightops docs --open), two Nav2 sample recordings (flightops workbench --sample), and the project license and third-party notices.

Some features need packages that Flightops does not install:

FeatureInstall
Scene Workbench on a minimal systemsudo apt install libxkbcommon-x11-0 libxkbcommon0 libxcb1 libfontconfig1 libfreetype6 and a Vulkan or OpenGL driver
Recording to MCAP on Humblesudo apt install ros-humble-rosbag2-storage-mcap (Jazzy includes it)
Graph images in onscope debriefsudo apt install graphviz
Containers for highbay and lcc container stagesDocker Engine, with your user in the docker group
ChatGPT account route (preview)sudo apt install bubblewrap and the pinned Codex runtime (AI connections)
flightleadtmux, git and a coding agent such as Claude Code or Codex
flightops-gym-smoke/dev/kvm, QEMU, a readable x86_64 kernel and static BusyBox (Gym (source repository))

Change or remove an installation

The managed commands live in ~/.local/bin. Installation does not edit shell startup files; add that directory to your PATH in future shells if needed. A newer compatible archive keeps configuration, the license and saved evidence. The managed command offers:

bash
flightops --list
flightops --verify
flightops --rollback
flightops --uninstall

These work without an activated device. Use flightops --rollback --version RELEASE_ID to choose a retained build. Uninstall removes the managed commands and application versions, and keeps configuration, the license, sessions and saved evidence. To free the device's license slot as well, run flightops license deactivate before you uninstall.

Test the current source checkout

This section is for contributors. An archive install does not build a checkout. From the repository root:

bash
bash scripts/bootstrap.sh --with-tui
source .venv/bin/activate
command -v flightops
flightops --help

This needs Python 3.10–3.12, Rust Cargo for the native terminal, and the development prerequisites (source repository). For Python integrations without the terminal, use --with-integrations. Source ROS before bootstrapping when you need live ROS imports, and activate the checkout's .venv in every test terminal so that flightops resolves to source code instead of an installed archive. A source checkout is not license-gated. Offline evidence comparisons do not require ROS.

To install a release archive you built or downloaded, use the repository root's install.sh with the archive's published 64-character digest; it refuses a mismatch before extraction:

bash
bash install.sh --archive /path/to/flightops-release.tar.gz --sha256 SHA256_DIGEST

It asks you to accept the beta terms (source repository) first, as the published installer does (--accept-terms or FLIGHTOPS_ACCEPT_TERMS=1 without a terminal).

The archive must match your Ubuntu version, architecture and Python minor; --python selects the interpreter for every step.