Skip to content

Commit 0455747

Browse files
committed
updates to docs to explain how to enable wave ai without turning on telemetry. update telemetry page as well
1 parent 4dc517a commit 0455747

3 files changed

Lines changed: 45 additions & 116 deletions

File tree

docs/docs/faq.mdx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ id: "faq"
44
title: "FAQ"
55
---
66

7+
import { VersionBadge } from "@site/src/components/versionbadge";
8+
79
# FAQ
810

911
### How can I see the block numbers?
@@ -52,3 +54,15 @@ If you've installed via Snap, you can use the following command:
5254
```sh
5355
sudo snap install waveterm --classic --beta
5456
```
57+
58+
## Can I use Wave AI without enabling telemetry?
59+
60+
<VersionBadge version="v0.13.1" noLeftMargin={true}/>
61+
62+
Yes! Wave AI is normally disabled when telemetry is not enabled. However, you can enable Wave AI features without telemetry by configuring your own custom AI model (either a local model or using your own API key).
63+
64+
To enable Wave AI without telemetry:
65+
1. Configure a custom AI mode (see [Wave AI documentation](./waveai-modes))
66+
2. Set `waveai:defaultmode` to your custom mode's key in your Wave settings
67+
68+
Once you've completed both steps, Wave AI will be enabled and you can use it completely privately without telemetry. This allows you to use local models like Ollama or your own API keys with providers like OpenAI, OpenRouter, or others.

docs/docs/telemetry.mdx

Lines changed: 27 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -8,152 +8,63 @@ id: "telemetry"
88

99
Wave Terminal collects telemetry data to help us track feature use, direct future product efforts, and generate aggregate metrics on Wave's popularity and usage. We do NOT collect personal information (PII), keystrokes, file contents, AI prompts, IP addresses, hostnames, or commands. We attach all information to an anonymous, randomly generated _ClientId_ (UUID). You may opt out of collection at any time.
1010

11-
Heres a quick summary of what is collected:
11+
Here's a quick summary of what is collected:
1212

13-
- Basic App/System Info OS, architecture, app version, update settings
14-
- Usage Metrics App start/shutdown, active minutes, foreground time, tab/block counts/usage
15-
- Feature Interactions When you create tabs, run commands, change settings, etc.
16-
- Display Info Monitor resolution, number of displays
17-
- Connection Events SSH/WSL connection attempts (but NOT hostnames/IPs)
18-
- AI Commands – Only which AI backend is used (e.g., OpenAI, Claude) – no text or prompts sent
19-
- Error Reports Crash/panic events with minimal debugging info, but no stack traces or detailed errors
13+
- Basic App/System Info - OS, architecture, app version, update settings
14+
- Usage Metrics - App start/shutdown, active minutes, foreground time, tab/block counts/usage
15+
- Feature Interactions - When you create tabs, run commands, change settings, etc.
16+
- Display Info - Monitor resolution, number of displays
17+
- Connection Events - SSH/WSL connection attempts (but NOT hostnames/IPs)
18+
- Wave AI Usage - Model/provider selection, token counts, request metrics, latency (but NOT prompts or responses)
19+
- Error Reports - Crash/panic events with minimal debugging info, but no stack traces or detailed errors
2020

2121
Telemetry can be disabled at any time in settings. If not disabled it is sent on startup, on shutdown, and every 4-hours.
2222

2323
## How to Disable Telemetry
2424

25-
If you would like to turn telemetry on or off, the first opportunity is a button on the initial welcome page. After this, it can be turned off by adding `"telemetry:enabled": false` to the `config/settings.json` file. It can alternatively be turned on by adding `"telemetry:enabled": true` to the `config/settings.json` file.
25+
Telemetry can be enabled or disabled on the initial welcome screen when Wave first starts. After setup, telemetry can be disabled by setting the `telemetry:enabled` key to `false` in Wave’s general configuration file. It can also be disabled using the CLI command `wsh setconfig telemetry:enabled=false`.
2626

27-
:::tip
28-
29-
You can also change your telemetry setting (true/false) by running the wsh command:
27+
:::info
3028

31-
```
32-
wsh setconfig telemetry:enabled=true
33-
```
29+
This document outlines the current telemetry system as of v0.11.1. As of v0.12.5, Wave Terminal no longer sends legacy telemetry. The previous telemetry documentation can be found in our [Legacy Telemetry Documentation](./telemetry-old.mdx) for historical reference.
3430

3531
:::
3632

37-
:::info
33+
## Diagnostics Ping
3834

39-
This document outlines the new telemetry system as of v0.11.1. The previous telemetry documentation is still relevant and can be found in our [Legacy Telemetry Documentation](./telemetry-old.mdx), but in general, the new telemetry is a superset of the old.
35+
Wave sends a small, anonymous diagnostics ping after the app has been running for a short time and at most once per day thereafter. This is used to estimate active installs and understand which versions are still in use, so we know what to support and when it's safe to remove old code paths.
4036

41-
:::
37+
The ping includes only: your Wave version, OS/CPU arch, local date (yyyy-mm-dd, no timezone or clock time), your randomly generated anonymous client ID, and whether usage telemetry is enabled or disabled.
38+
39+
It does not include usage data, commands, files, or any telemetry events.
40+
41+
This ping is intentionally separate from telemetry so Wave can count active installs. If you'd like to disable it, set the WAVETERM_NOPING environment variable.
4242

4343
## Sending Telemetry
4444

45-
Provided that telemetry is enabled, it is sent 10 seconds after Waveterm is first booted and then again every 4 hours thereafter. It can also be sent in response to a few special cases listed below. When telemetry is sent, it is grouped into individual days as determined by your time zone. Any data from a previous day is marked as `Uploaded` so it will not need to be sent again.
45+
Provided that telemetry is enabled, it is sent shortly after Wave is first launched and then again every 4 hours thereafter. It can also be sent in response to a few special cases listed below. When telemetry is sent, events are marked as sent to prevent duplicate transmissions.
4646

4747
### Sending Once Telemetry is Enabled
4848

4949
As soon as telemetry is enabled, a telemetry update is sent regardless of how long it has been since the last send. This does not reset the usual timer for telemetry sends.
5050

51-
### Notifying that Telemetry is Disabled
52-
53-
As soon as telemetry is disabled, Waveterm sends a special update that notifies us of this change. See [When Telemetry is Turned Off](#when-telemetry-is-turned-off) for more info. The timer still runs in the background but no data is sent.
54-
55-
### When Waveterm is Closed
51+
### When Wave is Closed
5652

5753
Provided that telemetry is enabled, it will be sent when Waveterm is closed.
5854

59-
## Event Types
60-
61-
Below is a list of the event types collected in the new telemetry system. More events are likely to be added in the future.
62-
63-
| Event Name | Description |
64-
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
65-
| `app:startup` | Logged every time you start the app. Contains basic app information like architecture, version, buildtime, etc. |
66-
| `app:shutdown` | Logged on every shutdown |
67-
| `app:activity` | Logged once per hour of app activity |
68-
| `app:display` | Logged on startup and contains information about size of displays |
69-
| `app:counts` | Logged once per hour when app is active, contains basic counts like number of windows, tabs, workspaces, blocks, number of settings customizations, etc. |
70-
| `action:magnify` | Logged each time a block is magnified |
71-
| `action:settabtheme` | Logged each time a tab theme is changed |
72-
| `action:runaicmd` | Logged each time an AI request is made (no prompt information or text is sent), only sends "ai:backendtype" to know what type of AI backend is being used (OpenAI, Claude, Gemini, etc.) |
73-
| `action:createtab` | Logged when a new tab is created |
74-
| `action:createblock` | Logged when a new block is created (contains the block view type) |
75-
| `wsh:run` | Logged when a wsh command is executed (contains the command type) |
76-
| `debug:panic` | Logged when a backend (Go) panic happens. Contains a debugging string that can be used to find which panic was hit in our source code. No data is sent |
77-
| `conn:connect` | Logged each time a backend ssh/wsl connection connects (logs the conneciton type, no hostname or IP is sent) |
78-
| `conn:connecterror` | Logged when you try to connect but it fails (logs the connection type, no hostname or IP is set, and no detailed error information is sent) |
79-
| `waveai:post` | Logged after AI request completion with usage metrics (tokens, request counts, latency, etc. - no prompts or responses) |
80-
81-
## Event Properties
82-
83-
Each event may contain the following properties that are relevant to the particular events.
84-
85-
| Property | Description |
86-
| ------------------------ | ------------------------------------------------------------------------------------------------------ |
87-
| `client:arch` | Wave architecture (darwin, windows, linux) and x64 vs arm64 |
88-
| `client:version` | The Wave version (e.g. v0.11.1) |
89-
| `client:initial_version` | Initial installed wave version |
90-
| `client:buildtime` | The buildtime (more exact wave version) |
91-
| `client:osrelease` | A string representing the version of the OS you're running -- different for darwin, windows, and linux |
92-
| `client:isdev` | True/False if using the dev build |
93-
| `autoupdate:channel` | What auto-update channel you're on (latest vs beta) |
94-
| `autoupdate:enabled` | True/False if auto-updated is enabled |
95-
| `loc:countrycode` | Two character country code (e.g. US, CN, FR, JP) |
96-
| `loc:regioncode` | Two character region code (usually the State or Province within a country) |
97-
| `activity:activeminutes` | For app:activity, a number between 0-60 of how many minutes were active within the hour |
98-
| `activity:fgminutes` | For app:activity, a number between 0-60 of how many minutes Wave was the foreground application |
99-
| `activity:openminutes` | For app:activity, a number between 0-60 of how many minutes Wave was open |
100-
| `action:initiator` | For certain actions logs if the action was initiated by the UI or the backend |
101-
| `debug:panictype` | The string that identifies the panic location within our Go code |
102-
| `block:view` | Type of block, e.g. "preview", "waveai", "term", "sysinfo", etc. |
103-
| `ai:backendtype` | AI backend type (e.g. OpenAI, Gemini, Anthropic, etc.) |
104-
| `wsh:cmd` | The wsh command that was run, e.g. "view", "edit", "run", "editconfig" etc. |
105-
| `wsh:haderror` | True/False whether the wsh command returned an error |
106-
| `conn:conntype` | Type of connnection (ssh / wsl) |
107-
| `display:height` | Height of the main display in px |
108-
| `display:width` | Width of the main display in px |
109-
| `display:dpr` | DPR of the main display |
110-
| `display:count` | How many total displays |
111-
| `display:all` | JSON for all the displays attached (same attributes as above) |
112-
| `count:blocks` | Total number of blocks |
113-
| `count:tabs` | Total number of tabs |
114-
| `count:windows` | Total number of windows |
115-
| `count:workspaces` | Total number of workspaces |
116-
| `count:sshconn` | Total number of SSH connections |
117-
| `count:wslconn` | Total number of WSL connections |
118-
| `count:views` | Counts of the types of blocks (views) |
119-
| `waveai:apitype` | AI API provider (OpenAI, Anthropic, etc.) |
120-
| `waveai:model` | AI model name |
121-
| `waveai:inputtokens` | Number of input tokens used |
122-
| `waveai:outputtokens` | Number of output tokens generated |
123-
| `waveai:requestcount` | Number of requests in conversation |
124-
| `waveai:toolusecount` | Number of tool uses |
125-
| `waveai:tooluseerrorcount` | Number of tool use errors |
126-
| `waveai:tooldetail` | Map of tool names to usage counts |
127-
| `waveai:premiumreq` | Number of premium API requests |
128-
| `waveai:proxyreq` | Number of proxy requests |
129-
| `waveai:haderror` | True/False if request had errors |
130-
| `waveai:imagecount` | Number of images in context |
131-
| `waveai:pdfcount` | Number of PDFs in context |
132-
| `waveai:textdoccount` | Number of text documents in context |
133-
| `waveai:textlen` | Total text length in context |
134-
| `waveai:firstbytems` | Latency to first byte in milliseconds |
135-
| `waveai:requestdurms` | Total request duration in milliseconds |
136-
| `waveai:widgetaccess` | True/False if accessed via widget |
55+
## Event Types and Properties
13756

138-
---
139-
140-
## When Telemetry is Turned Off
141-
142-
When a user disables telemetry, Waveterm sends a notification that their anonymous _ClientId_ has had its telemetry disabled. This is done with the `wcloud.NoTelemetryInputType` type in the source code. Beyond that, no further information is sent unless telemetry is turned on again. If it is turned on again, the previous 30 days of telemetry will be sent.
143-
144-
---
145-
146-
## A Note on IP Addresses
57+
Wave collects the event types and properties described in the summary above. As we add features, new events and properties may be added to track their usage.
14758

148-
Telemetry is uploaded via https, which means your IP address is known to the telemetry server. We **do not** store your IP address in our telemetry table and **do not** associate it with your _ClientId_.
59+
For the complete, current list of all telemetry events and properties, see the source code: [telemetrydata.go](https://github.com/wavetermdev/waveterm/blob/main/pkg/telemetry/telemetrydata/telemetrydata.go)
14960

150-
---
61+
## GDPR Opt-Out Compliance
15162

152-
## Previously Collected Telemetry Data
63+
When telemetry is disabled, Wave sends a single minimal opt-out record associated with the anonymous client ID, recording that telemetry was turned off and when it occurred. This record is retained for compliance purposes. After that, no telemetry or usage data is sent.
15364

154-
While we believe the data we collect with telemetry is fairly minimal, we cannot make that decision for every user. If you ever change your mind about what has been collected previously, you may request that your data be deleted by emailing us at [support@waveterm.dev](mailto:support@waveterm.dev). If you do, we will need your _ClientId_ to remove it.
65+
## Deleting Your Data
15566

156-
---
67+
If you want your previously collected telemetry data deleted, email us at support (at) waveterm.dev with your _ClientId_ and we'll remove it.
15768

15869
## Privacy Policy
15970

docs/docs/waveai-modes.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ wsh setconfig waveai:defaultmode="ollama-llama"
7474

7575
This will make the specified mode the default selection when opening Wave AI features.
7676

77+
:::note
78+
Wave AI normally requires telemetry to be enabled. However, if you configure your own custom model (local or BYOK) and set `waveai:defaultmode` to that custom mode's key, you will not receive telemetry requirement messages. This allows you to use Wave AI features completely privately with your own models. <VersionBadge version="v0.13.1"/>
79+
:::
80+
7781
### Hiding Wave Cloud Modes
7882

7983
If you prefer to use only your local or custom models and want to hide Wave's cloud AI modes from the mode dropdown, set `waveai:showcloudmodes` to `false`:

0 commit comments

Comments
 (0)