Skip to main content

Telemetry

In this section, you will find a description of the DevPod telemetry - why we are collecting telemetry, what data points are we gathering, where we are sending the data, and how to opt-out.

Why do we collect telemetry

Because DevPod is a freely available open-source project, we as maintainers have a very limited idea of how the project is being used, and very limited possibilities to gather this information from the users. Without reliable information, it is difficult to make decisions about the prioritization of features, test automation, or bug fixes. Deprecation of the flags and features turns into guesswork, and removal becomes nearly impossible. To move forward quickly, and ensure long-term maintainability, we will be making decisions about new features, deprecations, prioritizing test coverage, etc., and we want these decisions to be data-driven.

What are we collecting and how

When a user executes a non-trivial CLI command, one that loads the configuration, the CLI will send an event about the command and basic information about the execution environment (Operating system, CPU architecture, DevPod version, etc.). Another event is sent if a command fails, or when it takes longer than 10 seconds to complete. The events are sent to our self-hosted backend.
We want to emphasize that we are not interested in collecting data about individuals that are using DevPod, we are collecting only data about how it is being used. This should be evident from the code that implements telemetry on the CLI side, which is of course open source and included in the same source code repository.

Telemetry payload example

Below you can find an example of the payload that DevPod CLI would send to our telemetry backend.

{
"type":"cmdfinished", # type of event, another type is "cmdstarted"
"event":{
"timestamp":1683878643781772,
"executionID":"23736e5...83b3d656a0", # random ID to de-duplicate information received via different event types
"command":"devpod provider delete", # the CLI command that was executed
"provider":"kubernetes", # the default provider
"processingTime":71980, # how long it took for the command to execute
"errors":"provider 'docker' does not exist"
},
"instanceProperties":{
"uid":"3ed2c7...ee308e6", # securely hashed machine ID to de-duplicate information received from the same user
"arch":"amd64", # CPU architecture
"os":"linux", # Operating system
"version":{ # DevPod CLI version
"major":"0",
"minor":"1",
"patch":"0"
},
"flags":{
"setFlags":[ # List of flags(names only) that were set
"debug"
]
},
"ui": false
},
"token":"eyJhbG...coNz80" # Token generated from the static key included in the CLI binary. It is used to validate payload integrity.
}

Telemetry opt-out process

To disable the telemetry execute the following command:

devpod context set-options -o TELEMETRY=false