The problem with single-flight forensics: one log shows you one flight. The interesting question — "is this airframe degrading?" — only becomes answerable after you've accumulated a few flights from the same drone and compared them. Maestro Flight Review now builds that history automatically, on your machine, as you analyse. After a handful of flights per airframe, it starts surfacing trends and anomalies against the drone's own baseline. Free. No cloud, no subscription, no account.

What the archive captures

Every time you drop a .ulg into Maestro Flight Review and the parse succeeds, the parsed summary gets recorded in a local JSON store at ~/Library/Application Support/Maestro/flight-history.json (the OS user-data dir — survives reinstalls, never syncs anywhere). The file is hash-deduplicated, so re-analysing the same flight doesn't double-count toward baselines.

The record includes:

  • The full parsed summary (mode timeline, battery / GPS / position trends, log messages, dropouts, stats)
  • The airframe key (PX4 sys_uuid, which is stable across flights from the same flight controller)
  • The Maestro mission ID if the flight was orchestrated (lets you query by shift)
  • Auto-tags derived from the data: errors-logged, battery-critical, gps-loss, reactive-rtl, vibration-high, long-flight, acro-mode, etc.
  • Optional operator note (free text)

Storage is bounded at 5,000 flights (oldest pruned beyond that). A fleet's worth of flights — even 500 — sits comfortably under 50 MB JSON. Your operator profile owns the file; back it up however you back up the rest of your home directory.

Per-airframe rolling baselines

For each airframe (keyed by sys_uuid), Maestro maintains an incrementally-updated baseline of every interesting metric using Welford's online algorithm — mean and standard deviation, O(1) per sample, no raw-history storage required. The metrics tracked:

  • minBatteryPct — how low the battery got
  • maxAltitudeM, maxSpeedMs, totalDistanceM
  • durationS — flight time
  • modeChanges, gpsLossEvents, errorCount, warningCount
  • vibrationAccelRms, vibrationGyroRms
  • minSatellites, maxGpsEph

After three or more flights for a given airframe, the per-flight panel starts showing an Anomalies vs Your Baseline section — any metric that's more than 2σ from your own historical mean gets flagged with the value, the baseline, and the sigma distance. *"This flight landed at 23% battery vs baseline 58% ± 8% over your prior 7 flights"* is the kind of signal that's invisible to single-flight forensics but obvious in cross-flight context.

Predictive trends — the regression layer

For airframes with 5+ flights, Maestro runs a linear regression of every metric over time and surfaces trends with R² above 0.4. The output classifies each trend as improving, degrading, or stable, depending on whether higher-is-better (minBatteryPct, minSatellites) or lower-is-better (vibration, error count, GPS EPH).

The kind of finding this produces:

Drone-3 — minBatteryPct trend: degrading. Last 8 flights show a -3.1% per flight decline in landing-state battery margin (R² = 0.62). Latest flight landed at 18%; first tracked flight in this airframe's history landed at 47%. Pattern is consistent with cell wear or thermal drift on the pack. Bench-test the battery; rotate to inspection before next shift.

This is the kind of thing manned-aviation maintenance shops have done for decades with engine-hours data. The same statistical machinery applied to drone telemetry catches issues weeks before they'd show up as a single-flight anomaly. No proprietary monitoring stack, no fleet-management SaaS subscription — just regression on data Maestro already has.

Auto-tagging + searchable archive

Every analysed flight gets stamped with rule-based tags so you can find them again. Browse the archive via the Archive button in the Flight Review panel; filter by tag (show me every flight that triggered a reactive RTL, every flight in ACRO mode, every long-flight), by airframe (just show me drone-3's history), or by Maestro mission (every sortie from yesterday's shift).

The tagging is deterministic and rule-based, not LLM-driven — runs locally, produces the same tags every time, doesn't need an API key. The LLM layer sits on top for ad-hoc questions: "of the flights tagged battery-critical, which airframe is responsible for most of them?"

Why local-only — and what that means for compliance

The whole archive lives on the operator's machine. We made this decision deliberately:

  • Sovereignty. Your flight data is your operational IP. We don't get to see it, we don't get to monetise it, we don't get to be a data-processor that has to comply with your customer's compliance regime.
  • No infra cost to us means we can keep the product free.
  • Air-gap compatible. Predictive maintenance works on a Mac that's never connected to the internet. The only thing that needs network is the LLM analysis itself.
  • Backup discipline is yours. The JSON file lives in ~/Library/Application Support/Maestro/. Back it up the same way you back up everything else on the operator's machine — Time Machine, your NAS, a network share you point Maestro at via the MAESTRO_USERDATA environment variable.

For SORA-authorised / EASA Specific Category operators where compliance asks for centralised retention: a network-share is the right answer for most teams. Point Maestro at a shared NAS path; multiple operators on the team can review the same archive when they need to. If you have a regulatory requirement we haven't accounted for, tell us what you need from a Team plan — we'll build the centralised features once we know what's actually required.

What this looks like in practice

The recommended workflow for a 3-drone SAR / commercial / inspection programme:

  1. After every shift: pull .ulg files off the SD cards, drop the whole folder into Flight Review. Per-sortie reports plus the shift-level pattern analysis tell you what happened in the last 8 hours; the per-flight cards flag any individual sortie with anomalies vs each airframe's baseline.
  2. Weekly review: open the Archive tab. Filter by airframe. Look at the predictive trends panel — anything degrading? Service that airframe before the next operation.
  3. Incident review: when something goes wrong, search the archive for similar tags. "Last time we got gps-loss here, what did we do?" The archive is your fleet's institutional memory.

What no PX4 log viewer can offer

This is the differentiated half of Flight Review. PX4 Flight Review doesn't have your fleet's history. pyulog is one-flight-at-a-time by design. The cloud-tier paid tools (AirData UAV, DroneLogbook) provide cross-flight aggregation but require you to upload all your logs to them and pay monthly. Maestro Flight Review is the only thing that gives you fleet-history baselines and predictive trends locally, free, BYO LLM.

That's the wedge. If your single-drone needs grow into a multi-drone operation that benefits from autonomous fleet relay, Maestro fleet orchestration is the next step in the same Mac app — but Flight Review is genuinely useful by itself for everyone who flies PX4.

Get the build

Free download for Mac: Download Maestro Flight Review (Apple-signed App for Apple Silicon, no email gate, no account).

Related reading: Introducing Maestro Flight Review · Multi-file + fleet aggregate analysis · Getting an LLM API key.