v1.3.5 — Open Source · Local First

GOOSE

Flight Forensic Platform

Case-oriented, evidence-preserving investigation for UAV crash analysis and anomaly investigation. Run locally. No cloud required.

case-workflow

Investigation workflow

Create Case
Ingest Evidence
Parse
Analyze
Findings
Hypotheses
SHA-256/512
Evidence hashed
17 built-in plugins
Analyzers
Findings + Hypotheses
Output

Built for rigorous investigation

Evidence-preserving, case-oriented, and fully local — every finding traces back to its source.

🔒

Immutable Evidence Ingest

SHA-256/512 hashing on ingest. Original evidence is never mutated. Chain of custody built in.

📁

Case-Oriented Investigation

Every investigation lives in a named case. Evidence, findings, hypotheses, and exports are all case-scoped.

🔍

Formal Parser Framework

ULog parsed with diagnostics: format confidence, missing streams, corruption indicators, timebase anomalies.

🔌

17 Built-in Analyzers

Crash detection, battery sag, GPS health, EKF, vibration, motor saturation, attitude tracking, RC signal, failsafe detection, wind estimation, compass health, thermal analysis, and more.

📋

Forensic Finding Model

Every finding cites its evidence, plugin version, confidence score, and trust state. No finding without evidence.

🧠

Hypothesis Generation

Auto-generated root-cause candidates (crash, power, navigation, vibration) with supporting and contradicting finding links.

🛡️

Plugin Trust System

Plugins declare manifest metadata, trust state, and required streams. Built-in plugins are verified. Community plugins are labeled.

📦

Export and Replay

Case bundles export all findings, hypotheses, diagnostics, and plugin versions. Replay verification detects version drift.

How it works

01

Create a Case

Open the web GUI and create an investigation case. Every case is a self-contained workspace with its own evidence, findings, and hypotheses.

02

Ingest Evidence

Upload your .ulg log file. It is hashed (SHA-256/512) and stored immutably. The original evidence is never modified.

03

Parse & Diagnose

The ULog parser runs with full diagnostics: confidence score, stream coverage, corruption indicators, and timebase anomalies.

04

Run Analysis

17 plugins run deterministically on the parsed data. Plugin trust state and required streams are checked before each run.

05

Review Findings

Browse evidence-linked findings with severity, confidence, plugin provenance, and evidence references. Every finding cites its source.

06

Investigate Hypotheses

Auto-generated root-cause candidates with supporting and contradicting finding links. Crash, power, navigation, vibration — all scored.

07

Export

Export a replayable case bundle with all findings, diagnostics, and plugin versions. Replay verification detects version drift.

Architecture

A clean pipeline from raw log bytes to evidence-backed findings — no magic, no black boxes.

data-flow
  .ulg (PX4 ULog)           |      [ Parser Layer ]      Format confidence, stream coverage,      corruption indicators, timebase check           |      [ Evidence Store ]      SHA-256/512 hash · immutable · chain of custody           |      [ Plugin Engine ]      17 deterministic analyzers      Manifest · trust state · required streams           |      [ ForensicFinding Pipeline ]      EvidenceReference · confidence · plugin version           |      [ Hypothesis Generator ]      Root-cause candidates · supporting/contradicting links           |      ┌────┴────┐      |         |    [ API ]  [ Web GUI ]    FastAPI  Investigation workspace    REST     Cases · Findings · Hypotheses             Export · Replay verification
Parser Layer

Parses PX4 ULog with full diagnostics. Reports format confidence, missing streams, corruption indicators, and timebase anomalies. ArduPilot and MAVLink parsers coming.

Evidence Store

Immutable ingest with SHA-256/512 hashing. Original log files are never mutated. Chain of custody is maintained for every evidence item in a case.

Plugin Engine

17 deterministic analyzers run against parsed data. Each plugin declares its manifest, trust state, and required streams. BUILTIN_TRUSTED plugins are verified; community plugins are labeled.

ForensicFinding Pipeline

Every finding carries an EvidenceReference, confidence score, plugin version, and trust state. The Hypothesis generator links root-cause candidates to supporting and contradicting findings.

Plugin Library

17 built-in analyzers · formal plugin contract · trust-state model · write your own in Python

Built-in — v1.3.5

crash_detectionBUILTIN_TRUSTED

Motor failure, power loss, GPS loss, impact signature detection

Detects rapid altitude loss (>5 m/s sustained), sudden attitude divergence (>30 deg in <2s), motor output drops to zero, and high-g impact signatures. Classifies crashes as motor_failure, power_loss, gps_loss, pilot_error, mechanical, or unknown with confidence scoring.

altitudeattitudeimpactconfidence
vibrationBUILTIN_TRUSTED

Accelerometer RMS/peak analysis, clipping, bearing degradation

Computes RMS and peak vibration per axis against PX4 thresholds: good <15 m/s², warning 15–30, bad >30. Detects accelerometer clipping/saturation and bearing degradation trends over flight duration.

RMSpeakclippingbearing
battery_sagBUILTIN_TRUSTED

Voltage sag under load, brownout risk, cell health

Measures voltage drop under load, minimum cell voltage (warning <3.5V, critical <3.3V), brownout risk detection (>0.5V drop in <1s), and battery temperature monitoring.

voltagecellbrownouttemperature
gps_healthBUILTIN_TRUSTED

Satellite count, HDOP, dropout detection, jamming

Monitors satellite count (warning <10, critical <6), HDOP quality (warning >2.0, critical >4.0), GPS dropout detection, fix type degradation, and jamming indicators.

satsHDOPdropoutjamming
motor_saturationBUILTIN_TRUSTED

Output limits, asymmetry, failure signatures

Detects motors hitting 100% output (saturated), motor asymmetry between axes, motor failure signatures (output drops to 0 while others compensate), and remaining motor headroom.

saturationasymmetryheadroomfailure
ekf_consistencyBUILTIN_TRUSTED

Innovation monitoring, filter health, fault detection

Checks velocity and position innovation ratios (warning >0.8, critical >1.0), magnetometer consistency, EKF reset detection, and estimator fault flags.

innovationsmagresetsfaults
rc_signalBUILTIN_TRUSTED

RSSI monitoring, dropout detection, stuck channels

Monitors RSSI minimum and average (warning <70%, critical <50%), signal dropout detection (gaps >2s), stuck channel detection, and RC failsafe event tracking.

RSSIdropoutchannelsfailsafe
attitude_trackingBUILTIN_TRUSTED

Roll/pitch/yaw error vs setpoint, oscillation

Compares roll/pitch/yaw actual vs setpoint, computes RMS tracking error per axis (warning >5 deg, critical >15 deg), detects PID oscillation via sign-change rate analysis.

rollpitchyawPID
position_trackingBUILTIN_TRUSTED

Position error vs commanded, hover drift

Measures horizontal position error via Haversine calculation (warning >3m, critical >10m), vertical altitude error (warning >2m, critical >5m), and hover drift detection during low-velocity flight.

Haversinealtitudedrifthover
failsafe_eventsBUILTIN_TRUSTED

Failsafe triggers, emergency mode transitions

Catalogs all failsafe triggers with timestamps, identifies emergency mode transitions (RTL, LAND, emergency), distinguishes failsafe-triggered vs pilot-initiated mode changes.

RTLLANDtimestampsmodes
log_healthBUILTIN_TRUSTED

Data integrity, dropouts, rate checks

Checks for data dropouts (timestamp gaps >1s), verifies all expected data streams are present, validates data rates (warning if <1 Hz), and cross-checks measured duration against metadata.

dropoutsstreamsratesmetadata
damage_impact_classificationBUILTIN_TRUSTED

Structural failure mode classification, impact signature scoring

Classifies damage type from sensor signatures: hard landing, motor failure, structural separation, or unknown. Scores impact severity from peak-G, attitude divergence, and post-impact sensor behaviour.

impactclassificationG-forcestructure
environment_conditionsBUILTIN_TRUSTED

Environmental factor assessment — wind, pressure, temperature anomalies

Estimates wind speed and direction from GPS ground-track vs commanded heading. Detects barometric pressure anomalies and temperature excursions that could affect sensor calibration or motor performance.

windbarometertemperaturepressure
link_telemetry_healthBUILTIN_TRUSTED

RC link and telemetry quality — RSSI trends, data gaps, link degradation

Monitors RC link RSSI trends beyond simple threshold checks: sustained degradation, intermittent dropouts, and correlation between link quality and autopilot state changes. Separate from rc_signal failsafe detection.

RSSIdegradationtelemetrydropouts
mission_phase_anomalyBUILTIN_TRUSTED

Per-phase anomaly scoring — takeoff, cruise, approach, landing

Segments the flight into phases and scores anomaly density per phase. Identifies whether issues were concentrated in a specific phase (e.g., landing approach) vs spread across the full flight.

phasestakeofflandingsegmentation
operator_action_sequenceBUILTIN_TRUSTED

Operator input pattern analysis — mode changes, stick inputs, interventions

Reconstructs the operator action timeline from mode-change events, RC stick inputs, and failsafe interventions. Distinguishes pilot-initiated from autopilot-initiated transitions.

mode-changesRC-inputtimelinepilot
payload_change_detectionBUILTIN_TRUSTED

In-flight payload change detection — mass shift, CG changes, jettison events

Detects sudden changes in flight dynamics consistent with payload drop, mass shift, or centre-of-gravity change. Uses attitude-control effort and motor output asymmetry as detection signals.

payloadCGmass-shiftdynamics

Planned — Community Help Wanted

Plugin Contract

Plugins declare a manifest, trust state, and required streams. Every finding must cite its evidence.

Plugin manifest

Each plugin declares its name, version, description, required streams, and trust state. BUILTIN_TRUSTED plugins are verified. LOCAL_UNSIGNED and COMMUNITY plugins are labeled clearly in findings.

ForensicFinding

What plugins return. Title, severity, confidence score (0–100), evidence references, plugin version, trust state, and optional hypothesis links. No finding is emitted without an evidence reference.

EvidenceReference

Every finding cites the specific evidence it drew from — stream name, timestamp range, value excerpts. Findings are traceable back to raw log data.

PluginDiagnostics

Plugins emit structured diagnostics alongside findings: streams consumed, streams missing, confidence rationale. Provides full audit trail for every analysis run.

Trust state model

BUILTIN_TRUSTED

Verified built-in plugins. Shipped with Goose-Core.

LOCAL_UNSIGNED

Local plugins without a cryptographic signature.

COMMUNITY

Third-party plugins from the community registry.

BLOCKED

Plugins explicitly blocked by policy.

How to contribute

  1. 1.Write a plugin that implements the formal plugin contract — manifest, trust state, required streams, and analyze()
  2. 2.Return ForensicFinding objects with evidence references and confidence scores — no finding without evidence
  3. 3.Emit PluginDiagnostics with streams consumed, streams missing, and confidence rationale
  4. 4.Submit a PR or grab a good first issue from the planned plugins list

Ready to contribute?

Check the GitHub issues for plugins tagged good first issue — planned plugins are waiting for community authors.

Browse Good First Issues →

Supported Formats

FormatAutopilotStatus
ULog (.ulg)PX4Supported
DataFlash (.bin/.log)ArduPilotSupported
MAVLink tlog (.tlog)GCS recordingsPlanned
CSVCustom autopilotsSupported
Goose ProBETA

Advanced capabilities for serious operators

Pro extends the open-source core with fleet-scale analysis, GPS-denied validation, forensic reporting, and full audit trail — all still local, no cloud required.

🛰️

GPS-Denied Validation

Validate navigation accuracy without GPS. Compare flight trajectories against RINEX ground-truth data. Quantify position drift, heading error, and dead-reckoning reliability across the full mission.

📊

Campaign Analysis

Group multiple flights into campaigns. Track health trends, compare anomaly rates, and surface systemic issues across a mission series. Identify whether a problem is flight-specific or fleet-wide.

🚁

Fleet Dashboard

Monitor your entire vehicle fleet in one view. Per-aircraft health scores, flight history, and comparative anomaly rates. Spot the outlier aircraft before it becomes an incident.

📄

Forensic PDF Reports

Generate professional forensic reports with executive summary, findings table, hypothesis narrative, and evidence appendix. Export for regulators, insurers, or internal review.

🗺️

3D Trajectory Visualization

Reconstruct the full 3D flight path from GPS and estimator data. Overlay anomaly events on the trajectory. Visualize altitude profile, velocity vectors, and attitude through the mission.

📋

Full Audit Trail

Every analysis action is logged with timestamp, plugin version, and operator identity. Immutable audit trail from evidence ingest to report export — required for regulatory submissions.

Roadmap

Sprint 1Shipped

Case and evidence foundation

Sprint 2Shipped

GUI case workflow and API

Sprint 3Shipped

Formal parser contract with diagnostics

Sprint 4Shipped

Canonical forensic model: ForensicFinding, Hypothesis

Sprint 5Shipped

Plugin contract, manifests, trust state

Sprint 6Shipped

Full investigation workspace GUI

HardeningShipped

Replay/export subsystem, API modularization

NextShipped

React frontend v2.0 — full UI redesign · PDF report export · RINEX ground truth parser

PlannedIn Progress

Goose Pro — GPS-denied validation, fleet management, campaign analysis, audit trail · Cryptographic plugin signing · Multi-log comparison · Enterprise trust policies

Tech Stack

Python + FastAPI backend · React 19 + TypeScript frontend · Vite build

PythonFastAPIReact 19TypeScriptVitePX4 ULogForensicFindingEvidenceReferenceHypothesisPluginDiagnostics

Community

Open source, no strings attached. Build on it, fork it, ship it.

17
analysis plugins
v1.3.5
current release
370K+
public PX4 logs available
Apache 2.0
open source, modify anything