Telemetry

Telemetry & privacy

Telemetry is off unless you pass a fluxcompute_key. Prompt and response text are never sent by default.

Early access

The hosted FluxCompute dashboard is in invite-only early access: the public telemetry endpoint is not yet generally available, and without a reachable endpoint the SDK's telemetry is a silent no-op (it never delays or fails your LLM calls). Self-hosted and dev deployments can point the SDK anywhere via FLUX_TELEMETRY_URL / FLUX_GRAPH_EVENTS_URL. For dashboard access, get in touch at fluxcompute.dev.

What gets reported

With a key set, the SDK reports:

Provider API keys are never transmitted.

Opting in to content

To include model output in the dashboard (a 500-character preview per node, plus full prompt/output snapshots for failed nodes), opt in explicitly:

python
client = FluxClient(anthropic_key="...", fluxcompute_key="flx_...",
                    content_capture=True)

Content filtering happens before anything leaves the process; your local graph always keeps full output. Turn everything off with telemetry=False.

python
client = FluxClient(anthropic_key="...", telemetry=False)

The two channels

Both are batched and fire-and-forget, and neither can delay or fail an LLM call. Failures are never raised to the caller. The two failure modes differ, though: a transport error re-buffers the batch for a later flush, while a non-200 response is logged and that batch is dropped.

ChannelEndpointCarries
TelemetryPOST /v1/telemetry/eventPer-request routing + cost metrics
Graph eventsPOST /v1/graph/eventsExecution-graph node structure
IdentityGET /v1/whoamiKey validation, on demand only

The full wire format (every field, batching behaviour, and the versioning rules) is documented in docs/telemetry-contract.md.

Checking a key

The emitters deliberately swallow failures, so a typo in a key would otherwise surface only as a silent gap. FluxClient.verify() is a startup handshake that catches it early: it raises ValueError if the endpoint answered and rejected the key, and ConnectionError naming the endpoint if nothing answered at all.

python
account = await client.verify()

Sending it somewhere you control

Point the SDK at a local server or your own implementation of the contract:

VariableEffect
FLUX_TELEMETRY_URLSets the telemetry endpoint. Highest precedence
FLUX_GRAPH_EVENTS_URLSets the graph-events endpoint. If FLUX_TELEMETRY_URL is unset, the telemetry endpoint's host is derived from it, as is /v1/whoami