Jetformat

What the usage ping sends

One small ping per command tells us which features get used and where they fail. It never includes a path, a file name, or file contents.

By Jetformat

What is sent

After a command finishes, the CLI queues one record:

Field Example Why
command text, word to-pdf Which features matter
format markdown, json Which output shapes matter
input_ext docx, pdf, url Which file types people bring
duration_ms, ok, error_kind 840, false, not_found Where it is slow or fails
version, os, arch 0.1.6, darwin, arm64 What to keep supporting
client claude-skill, openai-skill, deepseek-harness Which agent host called it (from JETFORMAT_CLIENT)
install_id random 32 hex characters Counts installations, not people

That is the complete list. No path, no file name, no file size, no contents, no hash, no account id, no IP-derived location is stored. The install_id is generated on your machine, lives in ~/.jetformat/telemetry.json, and is not linked to a sign-in.

When it is sent

Pings go to ~/.jetformat/telemetry-queue.jsonl first. The queue is flushed in one request on the first run, then at most once a minute or when 25 pings are waiting, with a 1.5 second timeout. A command never waits on the network, and offline use keeps working; unsent pings are capped at 500 and retried later.

Turn it off

Any of these stops it. Nothing is queued or sent while it is off.

jetformat telemetry off        # saved in ~/.jetformat/telemetry.json
export JETFORMAT_TELEMETRY=off # per shell or per CI job
export DO_NOT_TRACK=1          # the cross-tool convention
jetformat telemetry status     # shows the current state and why

The first ping prints a one-line notice on stderr so nobody finds out later.

What billing sends

Paid commands also report the verb, the unit count, and a job id so credits can be charged. That path is separate and needs a sign-in. See where do my files go.

Last updated