# alineo telemetry
URL: /docs/cli/commands/telemetry

Show, enable, or disable anonymous CLI usage telemetry.



```bash
bunx alineo-cli telemetry status|enable|disable
```

## Arguments [#arguments]

| Argument                      | Description                                                         |
| ----------------------------- | ------------------------------------------------------------------- |
| `status` (default if omitted) | Print whether telemetry is enabled and this machine's anonymous ID. |
| `enable`                      | Turn telemetry on.                                                  |
| `disable`                     | Turn telemetry off.                                                 |

## What it does [#what-it-does]

`alineo` can send small, anonymous usage events — which subcommand ran, a per-command allowlist of boolean flag presence, success/failure, and timing — to help prioritize development. `alineo telemetry` reads and writes the local config file that controls this (`~/.config/alineo/telemetry.json`), created on first use with a random `anonymousId`.

**Default-on**, sent to `https://telemetry.alineo.tech`. See [Opting out](#opting-out) below.

## What's collected [#whats-collected]

Never anything beyond this:

| Field                                                      | Example                                                                             |
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `command`                                                  | `"spawn"`                                                                           |
| `flags`                                                    | `{ "json": true, "prompt": false }` — presence only, never values                   |
| `specProvider`                                             | `"nvidia"` — `start`/`spawn` only, read from the target spec's own `provider` field |
| `outcome`                                                  | `"success"` or `"error"`                                                            |
| `errorClass`                                               | `"CommandError"` — the error's constructor name only, never its message             |
| `durationMs`                                               | `842`                                                                               |
| `cliVersion`, `osPlatform`, `osArch`, `bunVersion`, `isCI` | environment metadata                                                                |
| `anonymousId`                                              | a random UUID generated once per machine                                            |

**Never collected**: raw `argv`, flag values, file paths, spec contents, prompts, sandbox output, or anything else that could identify you or your code.

## Example [#example]

```bash
bunx alineo-cli telemetry status
```

```
[alineo] telemetry: enabled
  anonymous id: 3f2e9c1a-8b7d-4e6f-a1c2-9d8e7f6a5b4c
```

```bash
bunx alineo-cli telemetry disable
# [alineo] telemetry disabled
```

## Opting out [#opting-out]

Telemetry is on by default. Turn it off any time with:

```bash
bunx alineo-cli telemetry disable
```

or by setting either env var, which take priority over the persisted config and require no config file read at all:

```bash
ALINEO_TELEMETRY_DISABLED=1 alineo start ./agents/my-agent.json
# or the cross-tool convention:
DO_NOT_TRACK=1 alineo start ./agents/my-agent.json
```

## Notes [#notes]

* A one-time notice is printed to stderr the first time an event would actually send, naming both opt-out mechanisms — never mixed into `--json` output.
* Sending is bounded: a 500ms timeout races the request, and a failed or slow send never delays or fails the real command it's attached to.
* Scoped to the `alineo` CLI only — `alineo`/`alineo`/`@alineo-labs/workflow` used as libraries in your own code are never instrumented.
