@duckcodeailabs/dql-telemetry
v1.6.0
Published
Opt-in, privacy-first usage telemetry for DQL.
Readme
@duckcodeailabs/dql-telemetry
Opt-in, privacy-first usage telemetry for DQL.
Principles
- Off by default. Must be explicitly enabled.
- No PII. Ever. Only enum-valued counters and durations.
- One-line opt-out.
DO_NOT_TRACK=1,DQL_TELEMETRY_DISABLED=1, ordql telemetry off. - Transparent event schema. Documented below; nothing hidden.
- Never blocks the CLI. 2-second timeout, silent on failure.
What gets sent
Exactly these fields, nothing else:
{
"event": "cli.command",
"anonymousId": "uuid-or-hostname-hash",
"version": "1.0.0",
"ts": "2026-04-15T12:34:56Z",
"props": {
"command": "init",
"success": true
},
"durationMs": 42
}Events emitted today:
| Event | When | Props (enum-only) |
| --- | --- | --- |
| cli.command | any dql <subcmd> finishes | command, success |
| notebook.open | notebook boots | — |
| block.certified | a block is promoted | domain |
| dbt.synced | dql sync dbt finishes | modelsAdded, modelsRemoved (counts only) |
| dashboard.built | dql build finishes | chartCount |
No file names, query contents, warehouse URLs, schema names, block names, or any other potentially-sensitive strings are ever transmitted.
Opt out
Any of these disable telemetry:
export DO_NOT_TRACK=1 # respects the DNT standard
export DQL_TELEMETRY_DISABLED=1
dql telemetry off # persists to ~/.config/dql/telemetry.jsonOpt in
dql telemetry onOr programmatically:
import { setEnabled } from '@duckcodeailabs/dql-telemetry';
setEnabled(true);Source
Open source, MIT. See
src/index.ts. There is no compiled/minified blob.
