flightopsDocumentation
Reference

Flightops command reference

11 min readdocs/reference/cli.md (source repository)

Run flightops --help to see the options in your installed version. Run flightops doctor before a live session if ROS discovery fails. In an installed beta build, every command needs an activated device; see commands that work without a license.

Commands

CommandWhat it does
flightops or flightops attachOpens the terminal and observes nodes in the current ROS environment. It does not start or stop those nodes.
flightops launch PACKAGE FILE [NAME:=VALUE ...]Starts an installed ROS 2 launch file and opens the terminal.
flightops ./path/to/file.launch.py [NAME:=VALUE ...]Starts a local launch file. Python, XML, and YAML launch files are accepted.
flightops setupSelects a detected ROS setup script.
flightops doctorChecks installation, ROS environment, discovery, and session access.
flightops results FILE... [-o OUTPUT] [--open]Writes a desktop HTML report from saved result files. --open also asks the default browser to open it.
flightops workbench --run NAME=PATH [--run NAME=PATH ...]Opens recordings in the Scene Workbench desktop app, read-only; two or more runs open Compare. --sample opens the bundled Nav2 runs. See Scene Workbench.
flightops docs [--open]Prints the path of the offline documentation in your install; --open opens it in the browser.
flightops license activate, status, refresh, deactivateManages this device's beta license. See License and usage metrics.
flightops telemetry show, status, sendShows exactly what usage metrics are queued, and sends them now. See Usage metrics.
flightops --versionPrints the version, and in an installed build its release and source commit.
flightops ai setupStarts the optional AI connection wizard.
flightops ai loginStarts explicit browser sign-in for the managed ChatGPT route; use ai test afterward.
flightops ai statusShows saved connection status locally, without calling a provider.
flightops ai test [CONNECTION]Sends a synthetic test greeting to a provider. This is an explicit network call and may incur usage.
flightops ai disconnect [CONNECTION]Removes a saved connection or the selected one.
flightops ai ask, ai jev, ai select-evidence, ai compare-evidenceAsk about saved evidence and optionally prioritize a receipt with Jev. See Ask about saved evidence.

Recording, evidence, history, and checks

These command families work in Standard mode, without a model connection. Run flightops COMMAND --help for the subcommands and options of your install. Every family below is in the beta builds and in the source checkout. Being present does not mean every path was accepted; see build features.

CommandWhat it doesReference
flightops record enable, disable, status, list, show, viewEnables a standing exact-topic policy for bounded recording of managed launches, then lists and inspects retained sessions and writes an offline catalog page.Managed recording commands, Managed recording
flightops record collector install, start, pause, resume, stop, status, uninstallControls an independent scoped recorder that neither starts nor stops your application.Independent collector
flightops retention configure, status, horizons, list-pins, plan-expiry, pin, release-pin, release-derivative, expire, reconcileSets a scoped retention budget, pins an incident window, and applies a reviewed expiry plan. No ROS process or model runs.Retention
flightops reduce-recording plan, runPlans and runs a bounded reduction of one finalized recorded-data failure.Recording reduction
flightops evidence register, verify, read, recordingRetains a digest-bound receipt for one selected file, verifies or reads it later, and reads a bounded finalized recording segment.Evidence resolver
flightops history list, view, search, show, investigate, put, import-task, import-results, rebuild, backup, restoreIndexes saved task and result files in a local catalog, searches it, reopens selected investigations, and backs the catalog up.History commands, History catalog
flightops checks [--context FILE]Lists the bounded sensor checks or evaluates their eligibility. It never runs a check.Check catalog, History commands
flightops rank-checks --context FILE --snapshot-id IDOrders the technically eligible sensor checks deterministically.Check ranking
flightops run-check plan, executePlans and runs one fixed read-only sensor graph check.Check ranking
flightops review-change --base-snapshot FILE --candidate-snapshot FILE …Compares two frozen configuration snapshots and saved fixed-check outcomes to select the checks a change affects.Change review
flightops contracts validate, evaluateValidates a frozen integration requirement, then evaluates it against selected saved observations.Integration contracts

Knowledge, learning, workspace, and sharing

These work in Standard mode. flightops retrospective is the only command in these tables that can call a model, and only when you explicitly ask it to.

CommandWhat it doesReference
flightops knowledge case, strategy, review, retract, invalidate, events, legacy-lessonsStores selected investigation cases and immutable human-guidance revisions next to the history catalog.Knowledge
flightops sources import, list, show, refresh, delete, revoke, readImports explicitly selected owned text files as inert knowledge sources.Owned sources
flightops learning freeze-suite, report, show-report, assess-training, register-model, activate, route, rollback, withdrawRecords frozen evaluation suites and governs optional training and model candidates. It launches no training.Governed learning
flightops retrospective prepare, run, showPrepares an exact evidence disclosure, then on explicit request asks the selected API provider for one quarantined proposal. Standard mode makes no call.Retrospective AI
flightops workspace --scope-key KEYStarts a private loopback desktop workspace over recordings, retention, and history for one exact scope.Personal workspace
flightops handoff export, import, list, inspectExports a selected task timeline as a package and holds an imported package in local quarantine.Structured handoff

flightops --list, --verify, --rollback, and --uninstall manage an archive-installed release; see Manage your installation.

Connect a coding agent over MCP

flightops-mcp serves four read-only tools over MCP stdio: onscope_sourcing, splashdown_stats, splashdown_assert and splashdown_query. --root names the only folder whose recordings the tools may read. Add it to your agent's MCP configuration, for example:

json
{
  "mcpServers": {
    "flightops": {
      "command": "/home/YOU/.local/bin/flightops-mcp",
      "args": ["--root", "/home/YOU/robot-project/evidence"]
    }
  }
}

Like every installed command it needs an activated device. The tools do not launch nodes, write project files, control playback or move hardware.

Other installed commands

The beta installs these commands beside flightops. Run COMMAND --help for their options.

CommandWhat it doesGuide
onscopeDiagnoses a ROS 2 graph: peek, hz, rates, shape, graph, tf, doctor, sourcing, debriefonscope (source repository)
splashdownAnalyses MCAP and rosbag2 recordings: query, readiness, stats, slice, assert, triage, fixture, replay, reportsplashdown (source repository)
lcc (also launchcommit)The launch gate: init, run, intake, compare, bench, hil and morelaunchcommit (source repository)
highbayWarm, isolated ROS 2 build containershighbay (source repository)
flightops-mcpMCP server with four read-only tools for coding agentsintegrations (source repository)
flightops-resultsDesktop HTML results from saved evidenceresults tutorial
flightops-tuiSaved-results viewer and advanced subcommands such as simulation-run, provenance, timeline, tf-history, reproduction, launch-resolve, config-diffadvanced user guide
flightops-serviceThe Scene Workbench's local service; flightops workbench starts it for youScene Workbench
flightschoolpath, install [DIR] [--agents] [--force], validate: the 14 ROS 2 skills for coding agentsflightschool (source repository)
flightlead (preview)init [DIR], then flightlead VERB inside the coordinator directoryflightlead (source repository)
flightops-gym-smoke (research preview)One local Gym smoke run in a KVM guestGym (source repository)

Attach and launch options

Options for attach and launch come before the command:

bash
flightops --project ~/ros2_ws/src/my_robot attach
flightops --ros-domain-id 42 launch my_robot bringup.launch.py robot_name:=test_bot
flightops --readiness ./readiness.json launch ./launch/robot.launch.py

The launch argument must be a literal NAME:=VALUE. Use shell quotes around an argument with spaces, such as 'robot_name:=test bot'. The launch file must exist, and a package launch file must be installed in the active ROS environment. launch owns its process group and stops it when you quit the terminal. It sends SIGINT first and allows up to 6 seconds for a clean shutdown, one second more than ros2 launch waits by default. It then sends SIGTERM and, if needed, SIGKILL. A terminal hangup or SIGQUIT stops the owned launch the same way. Reopening a saved session never restarts that launch.

Common options

OptionUse
--project PATHIndex a source project and use its .flightops/readiness.json for launch if present.
--ros-domain-id NObserve a specified ROS domain, from 0 to 232.
--readiness FILEUse a declared readiness file with launch.
--new-sessionAlways create a fresh session, including when --session-dir is supplied.
--session-dir PATHChoose a specific session directory.
--aiEnable an already configured AI connection for this run. Standard startup leaves AI off.
--jsonPrint initial session state instead of opening the terminal. It does not run a live collector.
--ros-container NAMEAdvanced attach to an existing ROS container. Public launch requires a local ROS environment.
--bag FILEAn MCAP recording for the Playback view (attach only). Starting playback publishes it on this ROS domain and needs a domain with no other nodes.

The default session lives below ${XDG_STATE_HOME:-$HOME/.local/state}/flightops. Flightops reuses a session for the same directory, project, ROS environment (including Gazebo partition), launch arguments, and readiness source/digest. It allows one writer at a time. --new-session always selects a fresh session. Attach and launch keep separate default sessions. To reopen a launch's session read-only, run flightops --session-dir DIR attach from the same directory, project, and ROS environment. Flightops then shows the retained launch record and log without relaunching; otherwise it opens a sibling session and says so, on standard error and in Health's SESSION block. See reopen a launch session for the full workflow, and troubleshooting when a session is busy.

Manage your installation

These commands work with the archive-installed flightops command, without a ROS environment:

bash
flightops --list
flightops --verify
flightops --rollback
flightops --rollback --version RELEASE_ID
flightops --uninstall

--list shows retained versions. --verify checks the installed runtime. Rollback switches to a retained version; uninstall keeps configuration, the license and saved evidence. Use one management action per invocation. These commands work without an activated device. Source checkouts need archive installation for these commands.

Terminal keys

KeyAction
?Show help in the terminal.
1–9, 0Open Health, Graph, Topics, Nodes, TF, Changes, Results, Playback, Capture, or Project. Clicking a view in the rail does the same.
:Open the command palette: jump to a view, problem, topic, node, or frame, or run an action.
yIn Health, copy the selected problem's check command (OSC 52).
LOpen the owned launch log and declared-check results.
/Edit the current inventory filter. Enter or Esc ends editing; Esc outside editing clears the filter.
↑/↓ or j/kSelect an item.
TabSwitch between the item list and its details.
AOpen the assistant panel. C there opens the setup wizard.
q or Ctrl+CLeave the terminal. Close any open log view first. In launch mode, quitting stops the owned launch.

The full terminal reference (source repository) describes the other views and keys. Start with the first steps for a short walkthrough.

Ask about saved evidence

Live Jev provider calls were not part of beta acceptance; see the known limits. Use an interactive terminal for provider disclosure review.

CommandWhat it does
flightops ai ask PROMPT --session-dir DIR --evidence FILEReviews and sends a question and derived receipt to the selected conversational provider. Repeat --evidence for up to eight artifacts.
flightops ai ask PROMPT --session-dir DIR --evidence FILE --jevReviews a Jev priority request, then separately reviews the assistant request with all receipts retained.
flightops ai jev setup [--key-env NAME]Saves a masked TypeSafe key in the OS credential store, or an existing environment reference. Uses pinned jev-1.13.0; makes no model call.
flightops ai jev statusShows local selector configuration without resolving the key or contacting TypeSafe.
flightops ai jev disconnectRemoves the separate Jev configuration and its managed key.
flightops ai select-evidence PROMPT --session-dir DIR --evidence FILEReviews and sends receipts to Jev for an advisory choice or insufficient-evidence result.
flightops ai compare-evidence TRIAL.jsonCompares recorded trial data offline; makes no provider calls.

For example, replace the file paths with your saved logs:

bash
flightops ai ask 'Why did the camera stop?' --session-dir ./camera-trial \
  --evidence ./camera.log --evidence ./navigation.log --jev

For these assistant commands, --session-dir, --project, --config, and --task can follow the subcommand. To approve a disclosure, type its displayed digest; any other input denies it. This differs from the terminal panel's y/n keys. Each provider call can incur usage. See Jev priority and the comparison format.

AI limits

OpenAI and Anthropic setup asks for a masked API key, fetches candidate models from that provider, and asks you to choose a number. The selected key is saved in the OS credential store when available. Without one, setup opens the app with a session-only key. Local/custom and Gemini setup keep advanced model and environment-reference options. Setup does not turn AI on for later runs.

The ChatGPT account option is a preview. Its isolated text assistant requires the pinned Codex runtime, Linux bubblewrap, browser sign-in, and an explicit successful flightops ai test. Native Codex tools are disabled. No real account exchange has been accepted for the beta. The AI tutorial covers setup and limits.