TwiCC anonymous telemetry

Self-hosted TwiCC installs send anonymous usage statistics to this endpoint once a day. It is enabled by default, and can be turned off in one click from the app's settings.

Why it exists

These statistics are the only way for TwiCC's author to know how the project is actually used — how many installs are alive, how regularly and intensely they run, at what scale, on which platforms — and to decide where to spend the effort. If you leave telemetry enabled: thank you, it genuinely helps.

The telemetry code is open source like the rest of TwiCC, in the TwiCC repository, so anyone can verify that it does nothing more than what this page describes.

What is collected

One JSON document per day, built from two parts: an instance block sent with every payload, and a daily block for each not-yet-sent complete day (UTC). Every field is a counter, a boolean, an enum, or a bucketed value — never free text.

FieldType / bucketsPurpose
Instance block (every payload)
instance_idrandom UUID v4counts distinct instances; identifies nothing
twicc_versionstringadoption of released versions
pythonmajor.minorruntime support planning
oslinux / darwin / windowsplatform support planning
archstringplatform support planning
providersenabled provider keys (claude_code, codex)provider adoption
installenum: pip / pipx / uv-tool / uvx / git-dev / otherpackaging/install-method priorities
projects_bucket0, 1, 2-5, 6-20, 21-50, 51-100, 101+scale of use
workspaces_bucket0, 1, 2-5, 6-20, 21+scale of use
remote_accessbooleanwhether the instance is served beyond localhost (a password is configured)
Daily block (one per complete day)
sessions per model × effortnested counts: provider → model family → version → effort; unresolvable values read unknownvolumetry, model adoption
sessions per permission modecounts by provider × permission modevolumetry, feature usage
user messages sentcountintensity
subagent sessionscountorchestration adoption
workflow runscountfeature adoption
active cronscountfeature adoption
presence_bucketminutes of human presence: 0, <30, 30-120, 120-360, 360-720, 720+intensity
peak concurrent agentsmax simultaneous live processes that dayscale of use
cost_bucket0, <1, 1-10, 10-50, 50-100, 100-250, 250-500, 500-1000, 1000+ USD/dayscale of use
shares createdcountfeature adoption
artifact bookmarks createdcountfeature adoption
sessions spawned by other sessionscountorchestration adoption

The feature block is deliberately small and limited to what can be derived from the database without instrumentation or content scans; it may grow or shrink across schema versions.

What is never collected

The instance identifier

instance_id is a random UUID v4, generated locally the first time telemetry runs. It is derived from nothing about the machine or its owner — no MAC address, no hostname hash — so it identifies nothing beyond making distinct instances countable. A "Reset instance ID" action in settings regenerates it at any time, severing any history tied to the old one.

How to disable it

Turn off the toggle at the bottom of the Global section in TwiCC's settings panel, or set the environment variable TWICC_NO_TELEMETRY=1 before starting the backend, which overrides the setting and prevents the task from starting at all.

Source and full design: github.com/twidi/twicc — see docs/plans/2026-07-18-telemetry-design.md in the repository for the complete design document.