Skip to main content

Telemetry

Velaptor collects anonymous, non-personal usage data to help the team understand how the framework is being used, prioritize improvements, and catch performance issues before they reach your players.

Velaptor telemetry never collects personal data (no names, emails, project names, content, or file paths). It only collects anonymous technical metadata about your environment and how Velaptor is used.

This page explains what is collected, why it is collected, and how to control it.

Quick Overview

QuestionAnswer
Is telemetry enabled by default?No — it is 100% opt-in. Data is never sent unless you explicitly enable it.
Is any personal information collected?No — No personally identifiable information of any kind such as project names, game content, or user data is ever collected.
Is telemetry sent in published games?No — Data is only sent when running your game from a development environment (i.e., your IDE or build output). Compiled/published games distributed to players will never send telemetry.
Can I audit the telemetry code?Yes — Velaptor is fully open source. All telemetry code lives in the Velaptor.Telemetry Namespace and can be audited publicly at any time.
How do I opt in?Set the VELAPTOR_OPT_IN_TELEMETRY environment variable to 1 or true and restart your IDE
How do I opt out?Remove the variable or set it to 0 or false, then restart your IDE

What Data Is Collected

When telemetry is enabled and all conditions are met, the following anonymous technical data is sent:

FieldDescription
lifeCycleEventThe framework lifecycle event (e.g., app-start)
featureAreaThe Velaptor feature area involved (if applicable)
featureNameThe specific Velaptor feature involved (if applicable)
versionThe version of Velaptor being used
dotnetVersionThe version of the .NET runtime
languageThe UI language of the operating system
osNameThe operating system name (Windows, Linux, or macOS, etc.)
osArchitectureThe OS CPU architecture (e.g., x64, arm64)
hardwareSpecsCPU, GPU, RAM, etc. (if applicable)

Specifically, no PII data is collected. The following are examples of PII data:

  • Your name, email, or any account information
  • Your project name, game title, or source code
  • File paths or directory structures from your machine
  • IP address or geographic location (beyond OS language/locale)
  • Any game content, assets, or user-generated data
  • We do not use device-specific IDs to track you across different machines.
  • Does not scan or store the contents of any local files or environment variables except for the VELAPTOR_OPT_IN_TELEMETRY variable

Opting in & out

How to create an environment variable

Setting and/or creating environment variables varies across operating systems. You can set the environment variable in the following ways:

  1. In shell configuration files such as ~/.bashrc or ~/.zshrc (Linux/macOS), or via Windows Environment Variables settings.

    • This works when you are executing the application from the terminal.
  2. Permanently in the operating system's environment variable settings.

    • On Windows, you can set it in the System Properties → Environment Variables.
    • On Linux, you can add it to a ~/.config/environment.d/velaptor.conf file for systemd to pick up.
  3. In your IDE's run/debug configuration environment variables settings.

    • This works when you are executing the application from the IDE's run/debug commands.
    • How you do this will depend on the IDE/editor you are using (e.g., Visual Studio, Rider, VS Code).

The following examples show how to set up your IDE/editor to include the environment variable, as this is the most straightforward approach. If you want to set up the variable permanently or in a profile that can be used in a terminal, there are plenty of resources online that can show you how to do that for your specific operating system and shell.

IDE vs OS

Visual Studio only runs on Windows, but JetBrains Rider and VS Code run on Windows, Linux, and macOS.

Setting precedence

If you run a launch config from the launch.json file, the environment variables defined in that launch config will take precedence over the launchSettings.json file.

How to opt in

Telemetry is disabled by default. To enable it, set the following environment variable on your development machine:

VELAPTOR_OPT_IN_TELEMETRY=1
or
VELAPTOR_OPT_IN_TELEMETRY=true
IDE Restart Required

After setting the environment variable, you must fully close and restart your IDE (e.g., Visual Studio, Rider, VS Code) for the change to take effect. The IDE reads environment variables at startup and will not pick up the new value until it is relaunched.

When telemetry is enabled, a message similar to the following will appear in your Debug console output when your application starts.

Enabled telemetry console message
Velaptor Telemetry: Enabled
───────────────────────────────────────────────────────────────────────────────────
You have opted in to telemetry, and Velaptor is collecting
anonymous usage data to help us understand how the framework
is being used to improve future versions.

What is being collected:
• Various game lifecycle events
• Velaptor features
• Velaptor version
• .NET runtime version
• Language
• Operating system
• Operating system architecture
• Hardware specs (CPU, GPU, RAM, etc.)

No personal information, project names, or game content is ever collected.
Data is only collected from the developers that use Velaptor.
Data is NOT collected in built/compiled games!

Learn more: https://docs.velaptor.io/telemetry

To opt out, set this environment variable:
VELAPTOR_OPT_IN_TELEMETRY=0 or VELAPTOR_OPT_IN_TELEMETRY=false
───────────────────────────────────────────────────────────────────────────────────

Telemetry is sent only when all of the following conditions are true:

  • You have explicitly opted in by setting the VELAPTOR_OPT_IN_TELEMETRY environment variable to a case insensitive value of 1 or true.
  • Your consuming application (your game) is executing in a development environment.
Development Environment Detection

Specifically, Velaptor checks whether the executable path contains bin/Debug/ or bin/Release/, or detects that .csproj or .sln files exist in the directory tree of the running executable, in that order.


How to opt out

To disable telemetry, set the environment variable to a case insensitive value of 0 or false:

VELAPTOR_OPT_IN_TELEMETRY=0
or
VELAPTOR_OPT_IN_TELEMETRY=false

You can also simply remove or unset the VELAPTOR_OPT_IN_TELEMETRY environment variable entirely — if the variable is not present, telemetry is treated as disabled.

IDE Restart Required

After changing or removing the environment variable, fully restart your IDE to ensure the change takes effect.

When telemetry is disabled, a message similar to the following will appear in your Debug console output to let you know you could opt in:

Disabled telemetry console message
Velaptor Telemetry: Disabled
────────────────────────────────────────────────────────────────────────────────────────────────────────
Help us improve and evolve Velaptor!

Velaptor is an open-source community-driven and independent project.
Would you be willing to share anonymous technical telemetry and usage data?

What would be collected:
• Various game lifecycle events
• Velaptor features
• Velaptor version
• .NET runtime version
• Language
• Operating system
• Operating system architecture
• Hardware specs (CPU, GPU, RAM, etc.)

Why? It helps us improve Velaptor by understanding what features are used, prioritize optimizations
and catch TDR/lag issues before they hit your players.

Privacy: No PII, no project names, no tracking. Just usage and hardware spec data.
Transparency: You can audit the telemetry code in the Velaptor.Telemetry namespace.
Ownership: This is 100% Opt-In.

To opt in, add the environment variable VELAPTOR_OPT_IN_TELEMETRY=1 or VELAPTOR_OPT_IN_TELEMETRY=true.

Learn more: https://docs.velaptor.io/telemetry
────────────────────────────────────────────────────────────────────────────────────────────────────────

Data is not sent when any of the following conditions are true:

  • Your game has been published and distributed to players.
  • Your application is executing outside of a development environment.
  • The opt-in environment variable does not exist, or exists and is set to 0 or false.

Open Source & Transparency

Velaptor is a fully open-source project. All telemetry-related code is publicly visible in the Velaptor GitHub Repository. To audit the code for the version you have installed, review the matching release tag in Velaptor tags and inspect the Velaptor/Telemetry directory for that version.

You are encouraged to read and audit the code:

  • TelemetryService — controls opt-in/opt-out logic, developer environment detection, and what data is serialized.
  • TelemetryClient — handles the HTTPS call that sends the data to the remote endpoint.
  • TelemetryData — the exact data model (record type) that defines every field sent over the wire.
Note

Telemetry is sent via HTTPS to a Kinson Digital controlled server (currently hosted in Chicago, IL, USA and Amsterdam, Netherlands). No third-party analytics providers are involved. Data is stored securely in West EU (Ireland)


Why We Collect This Data

Velaptor is an independent, community-driven open-source project. The anonymous usage data helps us:

  • Understand which .NET versions and operating systems are most common among our users, so we can prioritize platform support.
  • Track framework adoption and version uptake across the developer community.
  • Improve performance and catch issues by understanding real-world usage patterns.

No data is ever sold, shared with third parties, or used for advertising purposes.


Frequently Asked Questions

Will sending telemetry slow down my game?

No. Telemetry is sent in a fire-and-forget, asynchronous, non-blocking way. Your game never pauses or waits for the data to be delivered — it is dispatched silently in the background and has no measurable impact on frame rate or performance.


Is anything installed on my machine?

No. Velaptor does not install any background agent, service, or daemon on your machine. Nothing runs when your game is not running. The only action taken is a single HTTPS request sent at the moment a lifecycle event occurs inside your running game.


Can the telemetry call fail silently and affect my game?

Yes, silently — but intentionally so. If the network is unavailable or the request fails for any reason, the error is swallowed and your game continues unaffected. Telemetry is designed to never throw or surface errors to your application.


Does telemetry run in unit tests or CI pipelines?

No. Because telemetry only fires when the application is detected as running in a development environment (i.e., the executable path contains bin/Debug/ or bin/Release/, .csproj, .sln, or .slnx files are found nearby), it will not send data in typical CI or automated test contexts where those conditions are not met.


Is telemetry sent every time my game runs?

Only on specific lifecycle events (such as app start). It is not a continuous stream of data — a small payload is sent at defined points during the application's lifetime. Lifecycle events will never send out data on every game loop iteration or in a way that could impact performance.


Can I verify that no personal data is being sent?

Yes. Velaptor is fully open source. You can inspect the exact data model in TelemetryData, the sending logic in TelemetryClient, and the opt-in/environment detection logic in TelemetryService, all inside the Velaptor.Telemetry Namespace. You can also use a network proxy tool (e.g., Fiddler, Wireshark) to inspect the outgoing request yourself.