DéLOG is a fast, GPU-accelerated drone flight-log and live-telemetry analyzer. It supports PX4 ULog, ArduPilot BIN, and MAVLink telemetry logs from QGroundControl or Mission Planner, and when a format or a derived signal isn't built in, you extend it in Python - both file parsers and analysis scripts - without recompiling.
- Drag-and-drop UI - drop a log file anywhere on the window to load it; arrange plots in a tiling workspace that persists across sessions.
- Multiple log formats - PX4 ULog (
.ulg), ArduPilot (.BIN), MAVLink telemetry logs (.tlog) from QGroundControl or Mission Planner, and Parquet files, with automatic format sniffing and a manual-override picker. Structured DéLOG Parquet files open automatically; generic Parquet files prompt for a timestamp field and unit. - Live MAVLink telemetry - stream from a vehicle over UDP, TCP, or serial through the
same ingest path as files, and record incoming frames to a
.tlog. - Custom parsers - add Python parsers for formats DéLOG doesn't ship, defining a single
Parse(raw_data)function. See docs/custom_parsers.md. - Custom scripts - embedded CPython + NumPy for derived fields and live transforms; results plot exactly like parsed data. See docs/scripting.md.
- Visual data flows - build and save derived numeric signals with a node graph, no Python required. See docs/data_flow.md.
- Fast WGPU visualization - GPU-rendered line/scatter/step plots with automatic decimation for million-point series, plus a 3D trajectory view with vehicle models.
- Live and offline share one path. A live MAVLink stream and a recorded
.tloground-trip through identical decoding code, so what you see live is what you replay. - Structured Parquet preserves native topics. DéLOG exports retain each topic's own
timestamps and supported integer, floating-point, boolean, and UTF-8 fields, then
reopen automatically without a timestamp prompt. Columns are named
TOPIC.fieldand carry unit, description, and multiplier metadata, so pandas or DuckDB read the file without decoding the DéLOG manifest. - Export sampling is format-aware. Parquet writes each selected topic's native samples, while CSV retains uniform resampling.
- Extend it in Python, no rebuild. Custom parsers and analysis scripts are plain
.pyfiles in your config directory - edit them in any editor and they appear in the menus. - Real CPython, not a sandboxed subset. Scripts get the full interpreter with NumPy (and SciPy/Bottleneck/CFFI when installed), so derived-field math is just NumPy.
- Single binary. Shaders, 3D models, and the color palette are embedded at build time; a stripped binary always renders.
# Build and run (embedded Python scripting is on by default)
cargo run -p delog-app
# Build without Python - no interpreter or dev headers required
cargo run -p delog-app --no-default-featuresScripting embeds CPython via pyo3, so the default build needs
Python 3.12.3 plus
the matching development headers. Disabling the default feature drops that
requirement entirely. See docs/scripting.md
for interpreter-pinning tips.
DéLOG runs Python scripts that read the loaded dataset and emit new fields and topics -
derived signals that flow through the normal ingestion path and plot like log data. There
are two modes: snapshot scripts that run once against the current data, and live
transforms (@delog.live_transform) that append derived fields as telemetry arrives. A
Console window provides an editor and a persistent REPL.
Bundled examples live in scripts/: one-shot examples are in
scripts/snapshot/ and future-batch examples are in
scripts/live/. Each declarative example sets its mode
explicitly, so its filename and directory match when it runs.
Full API reference and examples:
docs/scripting.md.
When DéLOG's built-in parsers don't cover a format, add a Python parser under
Tools ▸ Parsers. The file receives the raw bytes as a NumPy float32 array and returns
(field_name, values, tooltip) triples that become topics and fields. Full guide:
docs/custom_parsers.md.
- Data Flow editor - visual derived signals, timeline alignment, and publishing.
- Scripting - embedded-Python derived fields, the
delogAPI, live transforms. - Custom parsers - Python file parsers via
Parse(raw_data).
DéLOG is released under the MIT License.


