Skip to content

CLI Commands

The @kaiord/cli package provides a command-line interface for converting, validating, and inspecting fitness files.

Installation

bash
pnpm add -g @kaiord/cli

Or use without installing:

bash
pnpx @kaiord/cli --help

convert

Convert workout files between formats. Detects formats from file extensions.

bash
kaiord convert -i workout.fit -o workout.krd
kaiord convert -i workout.krd -o workout.tcx
kaiord convert -i "workouts/*.fit" --output-dir converted/
kaiord convert -i data.bin --input-format fit -o workout.krd
OptionAliasDescription
--input-iInput file path or glob pattern (required)
--output-oOutput file path
--output-dirOutput directory for batch conversion
--input-formatOverride input format: fit, gcn, krd, tcx, zwo
--output-formatOverride output format: fit, gcn, krd, tcx, zwo

validate

Validate round-trip conversion integrity of FIT files (FIT to KRD to FIT).

bash
kaiord validate -i workout.fit
kaiord validate -i workout.fit --tolerance-config custom.json
OptionAliasDescription
--input-iInput file path (required)
--tolerance-configPath to custom tolerance configuration JSON

Tolerance config example:

json
{
  "time": { "absolute": 1, "unit": "seconds" },
  "power": { "absolute": 1, "percentage": 1, "unit": "watts" },
  "heartRate": { "absolute": 1, "unit": "bpm" },
  "cadence": { "absolute": 1, "unit": "rpm" }
}

inspect

Parse a fitness file and display a summary or full KRD JSON.

bash
kaiord inspect -i workout.fit
kaiord inspect -i workout.fit --json
kaiord inspect -i workout.fit --input-format fit
OptionAliasDescription
--input-iInput file path (required)
--input-formatOverride format detection: fit, tcx, zwo, gcn, krd

diff

Compare two workout files and show differences. Supports cross-format comparison.

bash
kaiord diff --file1 workout1.fit --file2 workout2.fit
kaiord diff --file1 workout.fit --file2 workout.krd
kaiord diff --file1 a.krd --file2 b.krd --json
OptionAliasDescription
--file1-1First file to compare (required)
--file2-2Second file to compare (required)
--format1Override format detection for first file
--format2Override format detection for second file

extract-workout

Extract the structured workout definition from a fitness file as JSON.

bash
kaiord extract-workout -i workout.fit
kaiord extract-workout -i workout.krd
OptionAliasDescription
--input-iInput file path (required)
--input-formatOverride format detection

garmin

Garmin Connect operations. Requires authentication via garmin login.

garmin login

bash
kaiord garmin login -e user@example.com -p password
OptionAliasDescription
--email-eGarmin Connect email (required)
--password-pGarmin Connect password (required)

garmin logout

bash
kaiord garmin logout

garmin list

bash
kaiord garmin list
kaiord garmin list --limit 50 --offset 20
OptionAliasDescription
--limit-lMaximum workouts to list (default: 20)
--offsetNumber of workouts to skip (default: 0)

garmin push

bash
kaiord garmin push -i workout.krd
kaiord garmin push -i workout.fit --input-format fit
OptionAliasDescription
--input-iInput workout file path (required)
--input-formatOverride format detection

Global options

OptionDescription
--verboseEnable verbose logging
--quietQuiet mode (errors only)
--jsonJSON output (machine-readable)
--log-formatLog format: pretty or json
--helpShow help
--versionShow version

Configuration file

Create .kaiordrc.json in your project or home directory for defaults:

json
{
  "defaultInputFormat": "fit",
  "defaultOutputFormat": "krd",
  "defaultOutputDir": "./converted",
  "verbose": false,
  "quiet": false,
  "json": false,
  "logFormat": "pretty"
}

CLI options always override config file defaults.

Supported formats

FormatExtensionTypeDescription
FIT.fitBinaryGarmin FIT protocol
KRD.krdTextKaiord canonical JSON
TCX.tcxTextTraining Center XML
ZWO.zwoTextZwift workout XML
GCN.gcnTextGarmin Connect JSON

Exit codes

  • 0: Success
  • 1: Error (invalid arguments, file not found, parsing error)