Skip to content
Community open-source Web · 0.2.8 release docs · 0.2.8Content reviewed: 2026-10-23View Markdown

7.4 Usage statistics and privacy ​

Teloa takes part in worldwide usage statistics by default; the results are published on the global usage page. Official installations (npm install and container deployments) have statistics on and reporting on by default. The app has no settings page and no switch for them.

Applicable versions

This behaviour has been included since 0.2.0-alpha.7 and still applies to 0.2.8; the earlier internal alpha.6 candidate did not include it.

What is sent ​

For usage statistics, each installation sends at most one record per day, containing only these fields (adding a resource from the official catalog sends a separate record; see "Marketplace installs" below):

FieldMeaning
Protocol version (schemaVersion)The version of the report format, currently fixed at 1; it carries no installation or usage information
Installation identifierA persistent random number generated on this machine, used only for de-duplication and not linked to any account
Event typeFirst participation, or used today
DateThe UTC date for a "used today" record
App versionFor example 0.2.8
EditionCurrently Free

Because the installation identifier is persistent, it links records from the same machine together, so it is de-identified rather than fully anonymous. The service stores only a keyed hash of it, never the original value.

What is not sent ​

No names, email addresses, accounts, conversation content, files, prompts, task content, employee content or model configuration. The only exception is the public resource ID sent when you add a resource from the official catalog (a skill, industry solution, AI employee or connection); see "Marketplace installs". Statistics and model requests are separate channels and do not share identifiers.

Where it goes ​

Records are sent to Teloa's own statistics service at metrics.teloa.ai (a Cloudflare Worker with D1). The service infers country and city from the request origin and does not store IP addresses. Country does not mean nationality; with a proxy or VPN the proxy exit is counted, and unrecognised origins are recorded as "unknown". Cities with fewer than 5 installations are not shown separately and only count towards their country. The aggregated result is what the global usage page displays. Marketplace install records store no country or city and do not use the installation hash above: the service derives a separate per-day key from a dedicated secret, so install records share no field with installation records and cannot be linked to them directly, nor to each other across days; resources added by the same installation on the same day do share one key. Residual risk: an operator with access to the statistics database could still try to link the two kinds of record by when they were written, which is easier while installations are few; the install details table keeps no insertion order to reduce this.

What counts as "used" ​

  • A message you send in a conversation is accepted by Teloa.
  • A task run actually starts, including runs started by an automation schedule.

Opening pages, viewing settings or Teloa sitting idle do not count. Each installation counts at most once per UTC day.

Marketplace installs ​

When you successfully add a resource from the Teloa official catalog (a skill, industry solution, AI employee or connection), including AI employees created from catalog resources when you load an official solution, the installation sends one more record so the official marketplace and the in-app marketplace can show install counts and sort by "Most installed" and "Trending". It follows the same switch and the same exclusions as the statistics above; there is no separate switch.

FieldMeaning
Marketplace resource IDThe public identifier of the resource in the official catalog, for example teloa.soc
Resource versionThe resource version that was added, for example 1.0.0
TypeSkill, industry solution, AI employee or connection
DateThe UTC date of the addition (day only, no time)
Installation identifierThe same local random number as above; the service only uses it to derive a one-day key and never stores the value
App version and editionSame as above; used for validation only and not stored
  • Only resources that exist in the official catalog are counted: the service checks the resource ID and type against the signed index of the official marketplace and rejects anything else.
  • The same installation counts at most once per resource per UTC day; adding a skill or industry solution again on a later day counts again, while an AI employee or connection that already exists is not counted again. When the add request itself is replayed by automatic recovery after a network interruption, the record carries the original date, so it is not counted twice; re-sends older than two days are rejected. Teloa has no separate reporting retry queue: a record that still fails after a few quick retries is dropped and simply not counted.
  • Not sent: resource content or files, accounts, the local owner identifier, file paths, prompts, keys or authorization tokens. Imports from GitHub, local drafts and private content are never reported; skills and connections inside a solution are not listed separately in the catalog and are not counted separately; model resources are outside the current install-statistics scope, so completing a model download or preparation does not send a resource-install record.
  • The install count is the number of additions de-duplicated per day. It is not a number of people and does not mean the resource is still in use. "Trending" is the install count over the last 7 UTC days.
  • The app reads the install ranking from metrics.teloa.ai only when the switch is on; if reading fails, the marketplace simply shows its default order.

Retention ​

Daily details are kept for 35 days to compute the 7-day and 30-day figures; older data is kept only as daily totals per country. Marketplace install details are also kept for 35 days; after that only each resource's cumulative install count remains.

Which ways of starting send statistics ​

Teloa sends statistics only when the environment variable TELOA_USAGE_STATS=on is set; without it nothing is sent. These two launchers set it for you:

  • The npm-installed teloa command sets on when it starts Teloa.
  • The container image sets on when it starts Teloa.

Starting from the source repository (for example pnpm dev:dsh), running tests, continuous integration and acceptance testing do not set it, so they send nothing.

Exclusion for deployment environments ​

There is no way to turn statistics off inside the app. The following environments send nothing even when on is set. They exist for development, continuous integration, acceptance testing and offline enterprise deployments, not as a per-user setting:

  • The environment variable TELOA_USAGE_STATS=off is set (set it before starting the teloa command or the container; an external value takes precedence over the entry point's default).
  • Continuous integration (CI=true), acceptance-test environments (TELOA_BROWSER_ACCEPTANCE=1) and development previews (NODE_ENV=development).

Sending happens in the background; a network or service outage never affects what you are doing. If the installation identifier file is corrupt, statistics pause and no new identifier is generated.

Upgrading from earlier development builds ​

Earlier development builds offered a participation switch under "Settings > Usage statistics". After upgrading, that switch and its record file are no longer read and are cleaned up; installations that previously chose "not enabled" or "off" are treated as participating by default. The local installation identifier and the sent-state are kept, so nothing is counted twice.