Skip to content

Data and connections

Your telemetry stays in your environment. This page lists every connection the product can make to anything outside your cluster, so you can review it and write egress rules for it. Each one is off until you turn it on or configure a destination, apart from pulling the images when you install.

There are two, and you can run with neither.

Off by default (queryApi.connected.enabled). When on, the core sends one HTTPS request to the license endpoint we give you every 6 hours (queryApi.connected.callhomeInterval), authenticated with a per-customer token. The request carries exactly these fields:

Field What it is
license_id The ID of the license you have installed.
customer_id Your customer ID, as written in that license.
instance_id A random ID generated at install, so we can tell two installs on one license apart.
core_version The version you’re running, e.g. 0.1.136.
reported_at, period_start When the report was made, and the start of the month it covers.
active_nodes_now, peak_nodes, node_minutes How many nodes run the sensor now, the most at once this month, and the month’s node-minutes.
per_site For each site, its site ID and node count. Site IDs are the names you chose, such as eu-west.

Nothing else is sent: no telemetry, no hostnames, pod or service names, no user accounts or configuration. The response is a renewed license file. The core checks its signature against the public key built into the product before installing it, so a response that isn’t from us can’t change your license.

If a request fails or is blocked, nothing degrades: the core keeps running on the license it has, and Core status shows whether the last renewal worked. For an air-gapped install, leave connected mode off and install renewed license files yourself; see Licensing.

Images and the Helm chart are pulled from ghcr.io/ultrvlt when you install or upgrade, or from your own registry if you mirror them. If you turn on the lifecycle manager (lifecycleManager.enabled, off by default), it also checks ghcr.io/ultrvlt/charts/ultrvlt-channels for the current release of the channel you track and verifies its signature. These are ordinary registry pulls: they send no information about your install.

These connect only to endpoints you configure, and send only what’s described.

Feature Default Connects to What it sends
Alert notifications No channels Your webhook, SMTP server, Slack, Microsoft Teams, PagerDuty or incident.io The alert (rule name, state, observed value and threshold, or your own message template) and a link back to your portal.
AI write-ups of investigations Off The model you configure: one you host, or OpenAI, Anthropic, Google Gemini or Vertex AI The investigation’s evidence report, never raw telemetry. Set queryApi.ai.redactLogs to leave log lines out. Each write-up is recorded in the audit trail.
AI agents (MCP) Off Nothing itself: your agent connects in with an API token Query results, to whatever model your agent uses. Read-only, every call audited, and redactLogs applies.
Cloud bill import Off Your BigQuery billing view, or the bucket your billing export lands in Nothing: it reads your bill.
Synthetic monitors None The URLs you add The requests you define.
Single sign-on Off Your identity provider A standard OIDC sign-in.
Actions Off Your cluster’s Kubernetes API, and your identity provider if revokeAfterUse is on The change you approve, as you, with your sign-in token.
Session replay Off Your object storage bucket Recorded browser sessions, to your bucket only.

Notification targets can’t be pointed at the core’s own loopback addresses or at cloud metadata endpoints (such as 169.254.169.254), including through DNS or redirects. Set ULTRVLT_NOTIFY_ALLOW_PRIVATE=false to block private addresses too. Notification delivery honors HTTPS_PROXY.

None are needed for a single cluster. Two features accept inbound traffic when you turn them on:

  • Remote sites send telemetry to the core over mutual TLS, with each site’s identity taken from its certificate. See Connecting remote sites.
  • Browser monitoring accepts data from your users’ browsers, limited to the origins you allow, and optionally rate limited. See RUM.

Our license service keeps what we need to license and support you:

  • Account details: your company name, the legal and billing details on your agreement, and the contacts you give us (name, email, phone, title). Payment details are held by our payment processor, never by us.
  • Licenses: what each one entitles you to and when it expires.
  • Usage reports: the connected-mode fields listed above, with the time we received them. Our hosting provider’s request logs also record the address each request came from.
  • Call-home tokens: a SHA-256 hash only. The token itself is shown to you once and never stored by us.
  • License delivery links: when one was opened, and the IP address and browser that opened it.

It holds no telemetry, because none is ever sent.

These providers run our license service, documentation, release distribution, email and billing. None of them receives your telemetry.

Provider Used for
Google Cloud Hosting the license service; sign-in for our staff.
Neon The license service’s database.
Cloudflare Hosting this documentation and our internal admin console.
GitHub Source code, release builds, and the registry that serves images and charts (ghcr.io).
Google Workspace Email, including messages to support and security addresses.
Stripe Invoicing and payments.