Skip to content

Dive Telemetry

Download Artifacts (Releases)

A Kotlin Multiplatform library, desktop app, and CLI tool that converts Shearwater and Garmin dive computer exports into the CSV format used by Telemetry for video overlays.

Source → parse → [DiveLogPlugin chain] → convert (24 cols) → [OutputPlugin chain] → write → Sink

The core converter produces 24 columns. Output plugins add additional columns on demand — up to 49 columns when all three built-in output plugins are enabled.

Dive Telemetry]

Supported formats

FormatInputParser
Shearwater CSV.csv (29 columns)ShearwaterDiveLogParser
Garmin FIT.fit (binary)GarminDiveLogParser
DAN DL7.zxu (text)Dl7DiveLogParser

Built-in plugins

PluginPhaseColumnsDescription
InterpolationPluginPreResamples dive samples to 1-second intervals
EnforcePressureUnitPluginPreForces tank pressure to PSI or BAR
TechnicalOCPluginPost+16NDL state machine, deco tracking, clear, NDL snapshot
TechnicalCCRPluginPost+8Per-sensor PPO2, calibration, diluent PPO2
SafetyStopPluginPost+1Safety stop countdown timer

Quick start

bash
# CLI
dive-telemetry --format shearwater dive-log.csv
dive-telemetry --format garmin --technical-oc --technical-ccr --safety-stop dive-log.fit

# Desktop app
./gradlew :app:run

Project structure

Three Gradle modules:

  • :lib — Kotlin Multiplatform library (JVM, macosArm64, macosX64, linuxX64, mingwX64)
  • :app — Compose Desktop GUI
  • :cli — Kotlin/Native CLI tool (no JVM required at runtime)

Dependencies

LibraryVersionPurpose
Kotlin Multiplatform2.3.10Cross-platform compilation
Compose Multiplatform1.10.1Desktop GUI
Arrow Core2.2.1Typed error handling (Raise, Either)
Okio3.9.1Multiplatform buffered I/O
Clikt5.0.3CLI argument parsing