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
| Question | Answer |
|---|---|
| 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:
| Field | Description |
|---|---|
lifeCycleEvent | The framework lifecycle event (e.g., app-start) |
featureArea | The Velaptor feature area involved (if applicable) |
featureName | The specific Velaptor feature involved (if applicable) |
version | The version of Velaptor being used |
dotnetVersion | The version of the .NET runtime |
language | The UI language of the operating system |
osName | The operating system name (Windows, Linux, or macOS, etc.) |
osArchitecture | The OS CPU architecture (e.g., x64, arm64) |
hardwareSpecs | CPU, 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_TELEMETRYvariable
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:
In shell configuration files such as
~/.bashrcor~/.zshrc(Linux/macOS), or via Windows Environment Variables settings.- This works when you are executing the application from the terminal.
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.conffile forsystemdto pick up.
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.
Visual Studio only runs on Windows, but JetBrains Rider and VS Code run on Windows, Linux, and macOS.
- JetBrains Rider
- VSCode
- Visual Studio
- C# Dev Kit
- Launch Settings JSON file
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.
You can also use a launchSettings.json file to set the environment variable for your project.
This is a .NET-specific settings file supported by C# Dev Kit.
When using this approach, you need to run your application using the built-in C# Dev Kit functionality, such as using
the C#: Launch Startup Project item in the RUN AND DEBUG dropdown.
You can also use the launchSettings.json file in Visual Studio and JetBrains Rider.
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
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_TELEMETRYenvironment variable to a case insensitive value of1ortrue. - Your consuming application (your game) is executing in a development environment.
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.
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
0orfalse.
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.
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.