StreamView privacy policy

StreamView telemetry

Last updated: 31 May 2026

What StreamView sends to LTC Labs, when, and why. Short version: two anonymous events per session (app_launched and app_closed), plus crash reports if the app blows up, plus an update check at most once a day. No personal data, no terminal content, no commands. Every category is independently opt-out in Settings → Data → Privacy (and Updates).

What gets sent today

Per app session

StreamView posts once per session to https://www.ltclabs.dev/api/app/update-check at startup. That request carries:

  • app_launched as the new session starts
  • The previous session's app_closed event with its session summary, queued locally on shutdown and flushed at the next startup

Closed-session summary

Counts, enums, and booleans only. Never names, paths, or content.

Field What it is
session_minutesHow long the app was running
streams_openedStreams launched this session
streams_open_at_closeOpen at shutdown
workspaces_countHow many workspaces existed
most_used_layoutGrid / MainSidebar / Rows / Single
used_*Booleans: tail file, screenshot paste, Ctrl+Tab, history search
theme / default_layout / default_shellConfigured appearance and shell
startup_ms / memory_mb_at_closeStartup time and memory at close
tokens_todayEstimated tokens seen in AI-pane badges (0 if none). No prompts or names.

Crash reports

Posted to /api/app/crash with the exception type, message, and stack trace. No terminal output, no file paths from your machine, no commands. Gated by Send crash reports.

Update check

At most once per 24 hours, posted to /api/app/update-check. Returns the latest version and a support token. Gated by Check for updates automatically.

Support tickets

Only when you press Help → Contact Support. Submitted with what you typed plus the recent app log (no terminal output). You see exactly what is submitted.

Earlier builds pinged a telemetry endpoint every five minutes. That heartbeat is disabled. Per-action events (workspace added, layout changed, and similar) were removed; their useful signal lives in the session summary as aggregates.

What is never sent

  • Terminal output or scrollback history
  • Commands, environment variables, working directories, file paths
  • Workspace names, stream names, template names, custom-icon filenames
  • Window contents, screenshots, keystrokes
  • Your email, account info, or anything you typed (outside a support ticket you compose)

How "anonymous" works

The machine is identified by a SHA-256 hash of Windows MachineGuid. The raw GUID never leaves your machine. There is no user account, no login, and no personal info stored on the LTC side. Reinstalling Windows produces a new hash.

Why we send anything at all

  • Count distinct hashed machine IDs so we know if anyone is using a release
  • First-seen vs last-seen of each hash for retention
  • Crash reports and process-launch failures to catch regressions
  • Layout, theme, and shell defaults so we ship the settings people actually keep
  • Feature-used flags so we know what to keep investing in

Opt-out

Three independent toggles, all on by default, all in Settings:

  • Send anonymous usage data (Settings → Data → Privacy). When off, suppresses launched/closed events and drops any already-queued usage events. The startup update-check still happens (it is how the app gets its support token), but its telemetry payload is empty.
  • Send crash reports (Settings → Data → Privacy)
  • Check for updates automatically (Settings → General → Updates)

Turning all three off leaves only the startup update-check (no event payload) and the support-ticket endpoint (only when you submit a ticket).

Related: Privacy policy · StreamView documentation

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.