Flightcase is an open-source evidence layer for robots.
It records selected ROS 2 topics, logs, planner events, and heavy-sensor payloads into immutable evidence objects. Those objects can be followed live, fetched later from a rolling cache, sealed into signed incident manifests, exported to MCAP, or replayed safely in an isolated environment.
The goal is simple: when something important happens on a robot, Flightcase gives operators and engineers a trustworthy incident package without turning the robot into a cloud service, analytics platform, or video processing system.
ROS 2 / logs / planner events
-> Flightcase sidecar
-> immutable evidence objects
-> rolling local cache
-> live FOLLOW or retroactive FETCH
-> signed incident manifest
-> MCAP export or safe replay
- Captures robot evidence as named, time-bounded objects.
- Keeps payloads opaque: caches and relays do not decode robot data.
- Signs incident manifests so evidence packages can be verified later.
- Records declared gaps instead of hiding loss or policy rejection.
- Supports live following and retroactive fetch from a rolling cache.
- Exports evidence to MCAP for robot debugging tools.
- Provides safe replay defaults, including control-topic blocking and isolated ROS domains.
- Keeps camera and other heavy sensors default-deny unless explicit policy, trigger, budget, retention, and encryption rules allow them.
src/flightcase/: Python reference implementation and CLI.ros2/flightcase_sidecar/: optional ROS 2 sidecar and replay bridge.examples/: sample configs, manifests, and authorization policy.docs/: runbooks, standard documents, implementation notes, and release checks.scripts/: validation and real-media test helpers.eval/: evaluation scaffolding and real-media validation notes.tests/: unit and integration tests.
Flightcase is not a robot cloud, dashboard, database, analytics product, or replacement for ROS 2/DDS, Zenoh, micro-ROS, EtherCAT, CAN, or any hard real-time control transport.
It observes, packages, verifies, exports, and replays evidence. Control loops stay where they are.
Flightcase also does not perform video understanding. Camera payloads are treated as policy-controlled opaque evidence, not decoded media streams.
python -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
flightcase mock-session --cache ./tmp/cache --org acme --fleet warehouse-a --site zone-3 --robot r17
flightcase sessions --cache ./tmp/cache
flightcase markers list --cache ./tmp/cache --robot acme/warehouse-a/zone-3/r17
flightcase incident create --cache ./tmp/cache --robot acme/warehouse-a/zone-3/r17 --around latest-marker --out ./tmp/near-miss.fc.json
flightcase doctor --cache ./tmp/cache --manifest ./tmp/near-miss.fc.json
flightcase fetch --cache ./tmp/cache --manifest ./tmp/near-miss.fc.json --out ./tmp/near-miss.fcp.jsonl
flightcase export --cache ./tmp/cache --manifest ./tmp/near-miss.fc.json --format mcap --out ./tmp/near-miss.mcap --allow-jsonl-fallback
flightcase replay --cache ./tmp/cache --manifest ./tmp/near-miss.fc.json --dry-runOptional integrations:
pip install -e '.[mcap,crypto,zenoh]'The ROS 2 sidecar package is under ros2/flightcase_sidecar. It can be copied into a ROS 2 workspace and built with colcon after the Python package is installed in that environment.
For a local development check:
python -m pytest tests -m 'not optional_zenoh and not optional_mcap and not optional_ros2' -q
python -m ruff check src tests scriptsFor Docker-backed ROS 2 validation:
./scripts/ros2_runtime_smoke_docker.shFlightcase has also been tested against real robot media from the M2P2 dataset. That run captured compressed camera frames, odometry, transforms, command velocity, and event-like topics while proving that heavy camera evidence remained policy-controlled, encrypted when accepted, explicitly rejected when denied or over budget, and safe for fetch, export, replay, and redaction workflows.
See docs/runbooks/real-robot-video-e2e.md and eval/real_video_e2e/README.md for the real-media runbook and pass/fail criteria.
Flightcase is a release candidate. The core evidence workflow is implemented and tested, including local cache integrity, signed manifests, authorization checks, heavy-sensor policy, MCAP export, live transcripts, redaction, and safe replay.
Hosted cloud features, dashboards, AI diagnosis, unrestricted camera ingestion, and production support guarantees are out of scope for this repository.