Third-Party Services
Telemetry
No usage analytics are collected β no page views, no feature metrics, no profiling of how you use the software.
Crash reports are sent by default. When something throws an error, a report goes to
SentryΒ after passing through a scrubber that removes credentials, your
username and email, your machineβs hostname, home-directory paths, URL query strings, and
request bodies. Crash reporting is opt-out: each first-party app has a Share crash
reports switch, Companion Hub has Allow anonymous error monitoring in Settings β
General, and CI_TELEMETRY=off or CI_LOCAL_ONLY=true disables it for a self-hosted app
or Hub.
| Data | Collected | Notes |
|---|---|---|
| Usage analytics, page views, feature metrics | β | Not collected |
| Session replay | β | Hub's dashboard can record masked replays around errors, only after consent; the same switches stop it |
| Your memories, files, and messages | β | Stay on your server; the scrubber keeps them out of error reports too |
| Crash reports | β | On by default, opt-out; errors only, scrubbed before sending |
See Crash Reporting for exactly what is sent, what is stripped, and the limits of the scrubber. Hub honors the Settings switch: turning it off stops the next report without a restart. Details are under Companion Hub on that page.
What We Donβt Do
- No user tracking β No analytics, no usage metrics, no advertising or profiling
- No data collection β Your memories, files and messages stay on your server. They are never uploaded, and the crash-report scrubber exists to keep them out of error reports too
- No hidden phone-home β Apart from the connections listed below, Companion Hub runs on your machine. Once installed and paired, the connections that always happen are the hourly check-in with your CI Account and the catalog and image traffic you trigger yourself. Crash reports are the only optional one you must switch off
External Connections
Companion Hub may make outbound connections for:
| Service | Purpose | When | Documented in |
|---|---|---|---|
| Docker HubΒ / GitHub Container RegistryΒ | Pulling app images and the Hub stack image | Installing or updating an app, or updating Hub | Docker and Companion Hub |
CI Cloud (hub.ci.computer) | The app catalog, the alternatives list, each appβs definition at install time, the list of Hub releases, and device pairing | Browsing or refreshing the app store, installing an app, or pairing | App store, Custom app stores |
| CI Cloud check-in | Confirms your device key is still valid and records when the Hub was last seen. Portal treats a device as stale after three hours without one | About 10 seconds after Hub starts, then every hour, once the Hub is paired | Device pairing |
dl.ci.computer | Desktop app update checks and installer downloads | When the desktop app or Settings β System checks for updates | Updating Companion Hub |
| Letβs EncryptΒ | SSL certificate generation | Only if you expose apps on a public domain | Expose your apps |
| CloudflareΒ | Managed tunnel for the Cloudflare Gateway | Only if you use the Cloudflare Gateway via your CI Account | Cloudflare Gateway |
| TailscaleΒ | Sign-in and coordination for the private VPN sidecar. If you add an OAuth client, Hub also calls Tailscaleβs API to list your tailnet | Only if you turn on Private VPN | Environment variables |
| OpenAI, Anthropic, Google, GitHub Copilot | Inference requests, sent straight from your Hub to the provider | Only for a cloud provider you configure in Settings β AI | AI and inference |
| SentryΒ | Crash reports | Unless you opt out of crash reporting | Crash Reporting |
Every connection is outbound from the Hub. Four of these happen only when you turn the feature on, and one stops when you turn it off:
flowchart LR
H["Companion Hub"] -->|"app and Hub images"| R["Docker Hub /<br/>GitHub Container Registry"]
H -->|"catalog, pairing,<br/>hourly check-in"| S["CI Cloud<br/>hub.ci.computer"]
H -->|"update checks"| D["dl.ci.computer"]
H -->|"certificates,<br/>if you expose apps"| L["Let's Encrypt"]
H -->|"tunnel, with<br/>the Gateway"| C["Cloudflare"]
H -->|"private VPN,<br/>if you turn it on"| T["Tailscale"]
H -->|"only providers<br/>you configure"| P["OpenAI, Anthropic,<br/>Google, GitHub Copilot"]
H -->|"crash reports,<br/>unless opted out"| E["Sentry"]