Skip to content

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/send endpoint uses isbot by default to filter out non-browser UAs (returns 200 but silently discards). Verify with isbot before changing the UA, otherwise statistics will silently drop to zero.

Collected Data Fields (Payload) ​

  • Event Name: install
  • Version: From [project].version in the repository root pyproject.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 switch
  • INVEST_NO_TELEMETRY — Alias consistent with the repository's INVEST_* environment variable prefix
  • DO_NOT_TRACK — Industry-wide convention (consoledonottrack.com)
bash
OPENINVEST_NO_TELEMETRY=1 bash skills/install.sh

The 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 ​

  1. 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.
  2. 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.
  3. 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).