Skip to main content
Version: 0.2.0

Telemetry

Since v0.1.25, tinct collects anonymous usage telemetry to help prioritise plugin development and maintenance. Telemetry is opt-out (enabled by default) and can be easily disabled.

What is collected

When you run tinct generate, two types of events are sent:

Generate event (one per invocation)

DimensionExamplePurpose
app.version0.1.28Tinct version
input.pluginimageWhich input source was used
input.aifalseWhether an AI input plugin was used
output.plugins["kitty","waybar"]Which output plugins were requested (array)
generate.theme_typedarkDetected theme type
generate.seed_modecontentSeed mode used
generate.backendkmeansColour extraction backend
generate.ambiencefalseWhether ambient extraction was enabled
generate.dry_runfalseWhether this was a dry run
generate.dual_themetrueWhether both themes were generated

Plugin used event (one per output plugin)

DimensionExamplePurpose
plugin.namekittyPlugin name
plugin.version0.1.28Plugin version
plugin.externalfalseWhether it is an external plugin
plugin.statusokOutcome: ok, failed, or skipped

Automatic metadata

The statsfactory SDK automatically includes the following in every request via the User-Agent header:

PropertyExamplePurpose
Client nametinctApplication identifier
Client version0.1.28Tinct version
OSlinuxOperating system
Architectureamd64CPU architecture

Each event also includes a distinct_id set to the SHA256-hashed installation identifier, used for unique installation counting.

What is NOT collected

  • No file paths, filenames, or directory structures
  • No image data or colour values
  • No AI prompts or API keys
  • No personal information, usernames, or hostnames
  • No IP-based geolocation

How it works

Telemetry is sent via HTTPS to a self-hosted statsfactory instance, a privacy-first analytics platform. Each installation generates a random identifier that is SHA256-hashed before transmission -- the raw value is never correlated with any personal information.

Events are queued in memory and dispatched asynchronously by the statsfactory SDK's background worker, which batches events (up to 25 per request) and flushes before the process exits. The HTTP request has a 5-second timeout and failures are silently ignored, so telemetry never blocks or affects CLI behaviour.

Installation ID

The anonymous installation identifier is stored separately from the main config, as a plain 64-character hex string in ~/.config/tinct/telemetry.id. It is auto-generated on first run and should not be edited manually.

Disabling telemetry

Environment variable (takes priority)

export TINCT_TELEMETRY=off

Any of off, false, 0, or no (case-insensitive) will disable telemetry.

Config file

Edit ~/.config/tinct/tinct.toml:

[telemetry]
enabled = false
note

Prior to v0.1.26, telemetry settings were stored in ~/.local/share/tinct/telemetry.json. On first run, tinct automatically migrates the installation ID to ~/.config/tinct/telemetry.id and removes the old file.

Why we collect telemetry

Tinct supports 25+ output plugins and multiple input sources. Telemetry helps us:

  • Prioritise maintenance -- focus on the plugins people actually use
  • Track plugin adoption -- understand which external plugins are popular
  • Detect issues -- spot high failure or skip rates for specific plugins or platforms
  • Guide development -- know which features (AI input, ambient extraction, dual themes) are used in practice