Skip to main content

Telemetry

AxonFlow SDKs and all four integration plugins (OpenClaw, Claude Code, Cursor, and Codex) send a small anonymous telemetry ping so the team can understand adoption, runtime compatibility, and broad deployment patterns. Telemetry is designed to be low-risk, fire-and-forget, and easy to disable.

This page is mainly for platform owners and senior engineers who need to answer two practical questions: what leaves the environment by default, and how should we standardize telemetry behavior across teams?

Default Behavior

Across the current SDKs and plugins:

  • SDK telemetry is off by default in sandbox mode
  • SDK telemetry is on by default in non-sandbox modes, including localhost and self-hosted evaluation
  • OpenClaw plugin telemetry is on by default for local, self-hosted, and remote deployments (fires once per plugin initialization)
  • Claude Code, Cursor, and Codex plugin telemetry is on by default (fires once per install, guarded by a stamp file at $HOME/.cache/axonflow/{plugin}-telemetry-sent)

That means local development on localhost now emits the same anonymous startup telemetry as other non-sandbox/self-hosted evaluation environments unless you explicitly opt out.

What Is Collected

The payload is intended to describe SDK usage shape, not business data.

FieldExampleSourcePurpose
SDK / plugin identifiertypescript, claude-code-pluginAllUnderstand language and integration adoption
SDK / plugin version5.2.0, 0.4.0AllTrack upgrade patterns
Modeproduction or sandbox (SDKs), production or development (plugins)AllUnderstand deployment behavior
OS and architecturelinux, arm64AllPrioritize platform support
Runtime versionnode, python, go, JVM info, or bash versionAllCompatibility tracking
endpoint_typelocalhost, private_network, remote, unknownSDKs onlySDK-derived classification of the configured AxonFlow URL. New in v5.3.0 / v6.3.0. The raw URL is never sent or hashed.
Platform version7.0.1Plugins onlyDetected from AxonFlow /health endpoint (best-effort, 2s timeout)
Features["hooks:2"]Plugins onlyHook count and configuration summary
Random instance identifierUUID-like valueAllDe-duplicate anonymous pings

endpoint_type classification rules

  • localhostlocalhost, 127.0.0.1, ::1, 0.0.0.0, *.localhost, anything in the 127.0.0.0/8 loopback range, the IPv6 unspecified address ::, and any fully-expanded equivalent of ::1 (e.g. 0:0:0:0:0:0:0:1)
  • private_network — RFC1918 IPv4 ranges (10/8, 172.16-31, 192.168/16), IPv4 link-local (169.254/16), IPv6 ULA (fc00::/7, RFC 4193), IPv6 link-local (fe80::/10), and the hostname suffixes .local, .internal, .lan, .intranet
  • remote — everything else (public hostnames, public IPv4 and IPv6 addresses)
  • unknown — any URL that can't be parsed

Deprecated site-local IPv6 addresses (fec0::/10, withdrawn by RFC 3879) are classified as remote, not private_network.

This field lets us distinguish localhost evaluation traffic from real production deployments on the checkpoint dashboard, without ever seeing the URL itself.

What Is Not Collected

  • the configured AxonFlow URL itself — only the SDK-derived endpoint_type classification
  • prompts, responses, or tool outputs
  • MCP statements or connector parameters
  • API keys, client secrets, tokens, or credentials
  • tenant names, company names, or user identities
  • file paths, environment-variable values, or request payload contents
  • hashes of any of the above

How to Disable Telemetry

Environment Variables

export DO_NOT_TRACK=1
# or
export AXONFLOW_TELEMETRY=off

SDK Configuration

const client = new AxonFlow({
endpoint: process.env.AXONFLOW_ENDPOINT!,
clientId: process.env.AXONFLOW_CLIENT_ID!,
telemetry: false,
});

Endpoint

Telemetry pings are sent to https://checkpoint.getaxonflow.com/v1/ping. For private or air-gapped deployments, override the endpoint with the AXONFLOW_CHECKPOINT_URL environment variable.

Operational Characteristics

  • SDK telemetry is sent once per client initialization, not once per request
  • OpenClaw plugin telemetry fires once per plugin registration (on each IDE launch)
  • Claude Code, Cursor, and Codex plugin telemetry fires once per install (stamp file guard prevents repeat pings; delete $HOME/.cache/axonflow/{plugin}-telemetry-sent to re-send)
  • failures are silent and should not break SDK usage
  • the call is designed to run in the background with a short timeout
  • explicit SDK config can override the normal default behavior

Most organizations land on one of these operating patterns:

  • leave telemetry enabled in shared non-sandbox environments, including localhost or self-hosted evaluations, so adoption and compatibility signals reach the AxonFlow team
  • disable telemetry in tightly regulated or locked-down production estates with DO_NOT_TRACK=1 or AXONFLOW_TELEMETRY=off
  • bake the choice into base images, deployment templates, or internal SDK wrappers so application teams get a predictable default

Why This Exists

Telemetry helps the team prioritize the SDKs, operating systems, and runtime combinations that real engineers are using. That is especially important when AxonFlow is used across multiple languages and deployment modes.

If your organization prefers not to send anonymous usage data, the opt-out controls above are the supported way to disable it.