Skip to content

Telemetry & Privacy

CategoryExamples
Project contentssource code, migrations, env values, database rows, logs
Identityhostname, directory paths, git remotes, user names, email addresses
Secretslicense keys (only a truncated SHA-256 hash is used), env secrets, JWT contents
Trafficrequests to your stack, user session data, query results

All CLI telemetry is off by default. Enable with NSELF_TELEMETRY=1 or nself config set telemetry true.

Fields sent with every event when opt-in is active:

FieldExamplePurpose
installIdUUID generated on first runDedupe pings from the same install
cliVersion1.1.0Version adoption tracking
platformdarwin, linux, windowsPlatform distribution
archarm64, amd64Architecture distribution
eventevent type stringRouting
payloadevent-specific JSONNon-PII structured extras

Server also records request IP (for abuse limits), User-Agent, and a timestamp. Retention: 90 days for raw rows, indefinite aggregates.

Emitted once per successful nself install or nself upgrade.

FieldValue
cli_versionInstalled version, e.g. 1.1.0
osdarwin, linux, windows
archarm64, amd64

Not collected: hostname, project name, directory path, user identity.
Opt-out: NSELF_TELEMETRY=false or nself config set telemetry false.


Emitted by ping_api when a bundle subscription activates (triggered by Stripe webhook — not the CLI).

FieldValue
tenant_idPaying account identifier (UUID, not personal identity)
bundle_namenclaw, nchat, ntv, nfamily, clawde, nsentry
planmonthly, annual, nself_plus

Not collected: payment method, card details, billing address, personal name.
Opt-out: Not applicable — tied to an active paid subscription (GDPR Article 6(1)(b)). Cancel the subscription to stop future events.


Emitted when a ClawDE desktop client connects to a backend with a valid license.

FieldValue
tenant_idBackend account identifier
license_key_hashSHA-256 truncated to 16 chars — not reversible
app_versionClawDE version

Not collected: project files, conversation history, code, hostname.
Opt-out: NSELF_TELEMETRY=false in the backend environment.


Emitted when an ɳSentry plugin is installed via nself plugin install.

FieldValue
tenant_idBackend account identifier
plugin_namee.g. nself-uptime-monitor
versionPlugin version

Not collected: monitored URLs, alert contacts, project config.
Opt-out: NSELF_TELEMETRY=false.


Emitted by the ɳCloud provisioning service when a new server is provisioned. Server-side only — not emitted by the CLI.

FieldValue
tenant_idCloud customer account identifier
server_typeHetzner tier selected, e.g. CX23, CAX11
regionDatacenter, e.g. fsn1
bundle_scopeBundle that triggered the provision, e.g. nself_plus, ntv

Not collected: hostname chosen by user, SSH keys, project contents, provisioned server IP.
Opt-out: Not applicable — required cloud service action (GDPR Article 6(1)(b)). Cancel the ɳCloud subscription to stop future provisions.


Emitted on nself license set, nself plugin install <pro-plugin>, and nself build (when pro plugins are in the manifest). This is a required service call, not optional telemetry.

FieldValue
tenant_idAccount identifier from license record
license_key_hashSHA-256 truncated to 16 chars
ip_for_geolocation_onlyRequest IP — used solely for geo-distribution dashboards and fraud detection

Not collected: actual license key, project contents, env values.
Retention: 30-day raw (shorter — contains IP), indefinite aggregate counts.
Opt-out: Not applicable — required for license validation (GDPR Article 6(1)(b)).


SettingBehaviour
(default, neither set)No telemetry is sent
NSELF_TELEMETRY=1 or =trueTelemetry events sent (license_validate always fires regardless)
NSELF_TELEMETRY=false or =0No telemetry. Wins over any opt-in. license_validate still fires.
NSELF_TELEMETRY_OPT_OUT=1Alias for NSELF_TELEMETRY=false
nself config set telemetry falsePersisted opt-out, survives shell restarts

Requests that reach the endpoint with X-Telemetry-Opt-Out: true or {"optOut": true} are answered 204 and nothing is stored.

  • GDPR Article 6(1)(a) — consent. Telemetry is opt-in; the default is off.
  • GDPR Article 6(1)(b) — contract performance. license_validate, bundle_purchase, and ncloud_provision events are tied to active paid subscriptions.
  • CCPA. No sale of personal information. Telemetry contains no personal information as defined by CCPA §1798.140(o).
  • Deletion requests. Email privacy@nself.org with your installId or tenant_id. Raw rows are deleted within 72 hours. Aggregate statistics cannot be retroactively removed (they contain no personal data).
  • Server schema: web/backend/services/ping_api/PRIVACY.md
  • Endpoint source: web/backend/services/ping_api/src/index.ts
  • Schema validation: web/backend/services/ping_api/src/schema.ts
  • Feature flag registry: .claude/docs/sport/F23-FEATURE-FLAG-REGISTRY.md (NSELF_TELEMETRY flag)