19 — Telemetry & Data Collection
To understand the real installation count of openInvest while strictly adhering to user privacy and the self-hosted design philosophy, the installation script introduces a completely anonymous, one-time telemetry report. Data is reported to a self-hosted Umami service.
📡 Installation Telemetry (skills/install.sh)
Trigger Timing
Triggered once when the user runs skills/install.sh for the first time. Regardless of whether the report succeeds or fails, a marker file is written to $CLAUDE_SKILLS_DIR/.openinvest-install-reported. Subsequent re-runs or syncs will not report again — the metric is "number of installations," not "number of syncs."
Reporting Method
An anonymous POST is sent in the background via curl (non-blocking to the installation process; network outages or timeouts do not affect the installation result). No third-party packages are introduced. The script prints a prompt before sending, clearly indicating the report and how to disable it.
Implementation Detail: The User-Agent must be a browser-style string like
Mozilla/5.0 (compatible; openInvest-install/<version>)— Umami's/api/sendendpoint usesisbotby default to filter out non-browser UAs (returns 200 but silently discards). Verify withisbotbefore changing the UA, otherwise statistics will silently drop to zero.
Collected Data Fields (Payload)
- Event Name:
install - Version: From
[project].versionin the repository rootpyproject.toml(maintained by release-please, e.g.,0.15.0). - OS: Output of
uname -s(e.g.,Linux/Darwin). - Hostname: Fixed to
openinvest-install, a synthetic value used by Umami for categorization, not the user's actual machine hostname.
Opt-out (How to Disable)
If any of the following environment variables is non-empty, the report is completely skipped:
OPENINVEST_NO_TELEMETRY— Project-specific switchINVEST_NO_TELEMETRY— Alias consistent with the repository'sINVEST_*environment variable prefixDO_NOT_TRACK— Industry-wide convention (consoledonottrack.com)
OPENINVEST_NO_TELEMETRY=1 bash skills/install.shThe same disclosure and opt-out instructions are provided alongside the installation command in the README.
🌐 Website Telemetry (openinvest-site)
The official website (openinvest.involutionhell.com / openinvest.dev) is connected to the same Umami instance, collecting interaction events such as copy and page views. The website is a separate repository, deployed independently (Cloudflare Pages). The definitions and fields of its telemetry events are governed by the openinvest-site repository's own documentation. This page does not maintain them redundantly to avoid drift across repositories.
🔒 Privacy Guarantee Commitment
- Fully Anonymous:
- The telemetry payload does not contain any IP addresses or personally identifiable information (PII).
- Network layer requests will naturally carry the source IP, but the self-hosted Umami service is configured not to store real IPs.
- The User-Agent is a fixed synthetic value
Mozilla/5.0 (compatible; openInvest-install/<version>), which does not leak the real device's browser or system fingerprint. - No geographic location or personally identifiable information such as email addresses is collected.
- One-time + Disableable: Each machine reports only once; setting any of the three opt-out environment variables to a non-empty value completely disables it.
- Zero Business Data Upload: openInvest's runtime portfolio details, API Keys, LLM call logs, etc., are never uploaded to any third party. All sensitive business data remains on your local machine (under the
memory/directory).