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
| Command | What it does |
|---|---|
flightops or flightops attach | Opens 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 setup | Selects a detected ROS setup script. |
flightops doctor | Checks 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, deactivate | Manages this device's beta license. See License and usage metrics. |
flightops telemetry show, status, send | Shows exactly what usage metrics are queued, and sends them now. See Usage metrics. |
flightops --version | Prints the version, and in an installed build its release and source commit. |
flightops ai setup | Starts the optional AI connection wizard. |
flightops ai login | Starts explicit browser sign-in for the managed ChatGPT route; use ai test afterward. |
flightops ai status | Shows 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-evidence | Ask 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.
| Command | What it does | Reference |
|---|---|---|
flightops record enable, disable, status, list, show, view | Enables 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, uninstall | Controls 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, reconcile | Sets 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, run | Plans and runs a bounded reduction of one finalized recorded-data failure. | Recording reduction |
flightops evidence register, verify, read, recording | Retains 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, restore | Indexes 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 ID | Orders the technically eligible sensor checks deterministically. | Check ranking |
flightops run-check plan, execute | Plans 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, evaluate | Validates 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.
| Command | What it does | Reference |
|---|---|---|
flightops knowledge case, strategy, review, retract, invalidate, events, legacy-lessons | Stores selected investigation cases and immutable human-guidance revisions next to the history catalog. | Knowledge |
flightops sources import, list, show, refresh, delete, revoke, read | Imports 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, withdraw | Records frozen evaluation suites and governs optional training and model candidates. It launches no training. | Governed learning |
flightops retrospective prepare, run, show | Prepares 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 KEY | Starts a private loopback desktop workspace over recordings, retention, and history for one exact scope. | Personal workspace |
flightops handoff export, import, list, inspect | Exports 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:
{
"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.
| Command | What it does | Guide |
|---|---|---|
onscope | Diagnoses a ROS 2 graph: peek, hz, rates, shape, graph, tf, doctor, sourcing, debrief | onscope (source repository) |
splashdown | Analyses MCAP and rosbag2 recordings: query, readiness, stats, slice, assert, triage, fixture, replay, report | splashdown (source repository) |
lcc (also launchcommit) | The launch gate: init, run, intake, compare, bench, hil and more | launchcommit (source repository) |
highbay | Warm, isolated ROS 2 build containers | highbay (source repository) |
flightops-mcp | MCP server with four read-only tools for coding agents | integrations (source repository) |
flightops-results | Desktop HTML results from saved evidence | results tutorial |
flightops-tui | Saved-results viewer and advanced subcommands such as simulation-run, provenance, timeline, tf-history, reproduction, launch-resolve, config-diff | advanced user guide |
flightops-service | The Scene Workbench's local service; flightops workbench starts it for you | Scene Workbench |
flightschool | path, install [DIR] [--agents] [--force], validate: the 14 ROS 2 skills for coding agents | flightschool (source repository) |
flightlead (preview) | init [DIR], then flightlead VERB inside the coordinator directory | flightlead (source repository) |
flightops-gym-smoke (research preview) | One local Gym smoke run in a KVM guest | Gym (source repository) |
Attach and launch options
Options for attach and launch come before the command:
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.pyThe 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
| Option | Use |
|---|---|
--project PATH | Index a source project and use its .flightops/readiness.json for launch if present. |
--ros-domain-id N | Observe a specified ROS domain, from 0 to 232. |
--readiness FILE | Use a declared readiness file with launch. |
--new-session | Always create a fresh session, including when --session-dir is supplied. |
--session-dir PATH | Choose a specific session directory. |
--ai | Enable an already configured AI connection for this run. Standard startup leaves AI off. |
--json | Print initial session state instead of opening the terminal. It does not run a live collector. |
--ros-container NAME | Advanced attach to an existing ROS container. Public launch requires a local ROS environment. |
--bag FILE | An 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:
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
| Key | Action |
|---|---|
? | Show help in the terminal. |
1–9, 0 | Open 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. |
y | In Health, copy the selected problem's check command (OSC 52). |
L | Open 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/k | Select an item. |
Tab | Switch between the item list and its details. |
A | Open the assistant panel. C there opens the setup wizard. |
q or Ctrl+C | Leave 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.
| Command | What it does |
|---|---|
flightops ai ask PROMPT --session-dir DIR --evidence FILE | Reviews 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 --jev | Reviews 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 status | Shows local selector configuration without resolving the key or contacting TypeSafe. |
flightops ai jev disconnect | Removes the separate Jev configuration and its managed key. |
flightops ai select-evidence PROMPT --session-dir DIR --evidence FILE | Reviews and sends receipts to Jev for an advisory choice or insufficient-evidence result. |
flightops ai compare-evidence TRIAL.json | Compares recorded trial data offline; makes no provider calls. |
For example, replace the file paths with your saved logs:
flightops ai ask 'Why did the camera stop?' --session-dir ./camera-trial \
--evidence ./camera.log --evidence ./navigation.log --jevFor 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.