UnionTerminal UnionTerminal
Guide Shortcuts Changelog FAQ

Legal

Privacy Policy

Effective May 7, 2026 · Last updated June 2026 · Robot in the Loop Technology Inc.

The short version

UnionTerminal runs on your machine. By default, your terminal output, commands, file paths, and clipboard stay local — we do not collect them. To understand how Union is used, the app collects anonymous usage — a count of installs plus which features get used, with no commands, paths, or content of any kind. We count installs; we never track people or see your content. It’s a single switch (on by default, easy to turn off, and disabled automatically by DO_NOT_TRACK). An off-by-default product-research profile that’s anonymous and deletable, voluntary in-app feedback, automatic update checks, and website analytics are also described below.

What we do not collect

  • Terminal output or command history
  • File paths, file contents, or clipboard contents
  • Keystrokes or input data
  • Your name, email address, or any account information (unless you voluntarily provide an email in feedback or at checkout)

Anonymous usage (on by default)

We count installs; we never track people or see your content. So we can answer basic questions like “how many people actually use Union?” and “which features matter?” without tracking anyone, the app sends a small activation ping to www.unionterminal.app/api/activation — at most once per day. It contains only a random install identifier (a UUID generated and stored locally on your machine), your operating system, and the app version — plus, the first time it runs after an in-app update, the previous version number so we can count upgrades. It carries no events, commands, file paths, clipboard, or terminal output of any kind.

On the server we count these into aggregates using privacy-preserving HyperLogLog structures (total unique installs, active days, which versions are in use, and how many installs upgrade) — we do not retain the individual identifiers, map an identifier to a version, or build any profile. Requests may be rate-limited using a short-lived hash of your IP address; we do not store raw IPs.

The install ping and the feature counts below are controlled by a single switch, on by default but entirely optional. You can turn it off anytime under Settings → Privacy & data → “Anonymous usage”. It is also automatically disabled if you set the DO_NOT_TRACK=1 environment variable (the Console Do Not Track convention).

Feature counts

While Anonymous usage is on (above), the app also sends coarse feature counts to www.unionterminal.app/api/telemetry. This includes a random install identifier (UUID, stored locally and sent only while Anonymous usage is on), app version, platform, and coarse tallies — never the text you type, files you open, or commands you run.

Counts may include: app opens, when you turn sharing on (one-time counter), when you upgrade to a new app version (version numbers only), new terminals, file previews, layout changes, Ask-about-selection usage, feedback-sent (counter only — not your message), and an optional one-question product survey if shown. We may also send a coarse band for how many terminals you typically run (1, 2–4, or 5+). Aggregates use privacy-preserving counting (HyperLogLog for weekly active installs).

Requests may be rate-limited using a short-lived hash of your IP address; we do not store raw IPs in Redis. You can turn Anonymous usage off anytime in Settings.

Product research (opt-in)

This is a separate, off-by-default choice — distinct from the aggregate options above. If you turn on Help shape the product in Settings → Privacy & data, we link your usage to your random install identifier so we can build an anonymous per-install profile. Unlike the aggregate tiers, this profile does retain a small amount of information keyed to that identifier so we can answer questions like “which versions do people stay on?” and “do people who don’t upgrade also skip new features?” — to guide what we build.

What the profile may contain: your app version history and upgrade events (version numbers + timestamps), counts of which features you use (e.g. how many terminals, file previews — never the content), your survey answer, and a scrubbed copy of any free text you choose to send via the survey or feedback. It never contains your name, your reply email, commands, file contents, clipboard, or terminal output.

Safeguards: the identifier is random and anonymous (no name, email, or IP); free text is scrubbed of emails, links, file paths, IP addresses, and long tokens before it leaves your machine, and again on our server; dashboard breakdowns apply k-anonymity (small groups are hidden); and per-install records expire after about 18 months. You stay in control: turn it off anytime, reset your anonymous ID (which unlinks past data), or delete your data outright — both under Settings → Privacy & data. Setting DO_NOT_TRACK=1 also disables it.

In-app feedback

When you send feedback from the sidebar, we transmit your message, an optional reply email, app version, platform, theme, and optional category (bug/idea/workflow/other) to our server so we can respond. Feedback is delivered by email to our team. If — and only if — you have turned on Help shape the product (above), we additionally keep a scrubbed copy of the message text (without your reply email) linked to your anonymous install ID, so it can inform aggregate word clouds of what people want.

Automatic update checks

When UnionTerminal is running, it periodically checks for software updates by contacting GitHub's release servers (api.github.com). This is a standard HTTPS request that may expose your IP address to GitHub. This behavior is governed by GitHub's Privacy Statement. You cannot disable update checks in the current version.

Website analytics

The UnionTerminal website (www.unionterminal.app) uses Vercel Analytics to count page visits. We also keep a first-party page-view count: on each page load the site sends the page's route (e.g. /manifesto) to www.unionterminal.app/api/site-pageview so we can see which pages are popular. This is an aggregate counter per page — no cookies, no visitor identifier, and unknown paths are bucketed as “other.” It honors your browser's Do-Not-Track setting. When you click a download button, the site may send a small request to our server to record aggregate download statistics (platform only). We store running totals in Redis — not your name, email, or raw IP address.

On your first download click from the site, we set a first-party cookie (ut_sdl, HttpOnly, one year) so repeat clicks from the same browser are not counted again as a new distinct downloader. In-app software updates download directly from GitHub and do not use this cookie or endpoint. Beacons may be blocked by privacy tools; counts may be lower than actual site interest.

Third-party services

  • GitHub — release hosting and update delivery. GitHub Privacy Statement
  • Vercel — website hosting and analytics. Vercel Privacy Policy
  • Stripe — voluntary contributions and subscription management on the contribute page. Payment details are handled entirely by Stripe; we do not store card information. Stripe Privacy Policy
  • Resend — delivers in-app feedback to our team and sends one-time billing portal links when you request subscription management. Resend Privacy Policy

Children's privacy

UnionTerminal is not directed at children under 13. We do not knowingly collect any information from children.

Changes to this policy

We may update this Privacy Policy as the product evolves. Material changes will be noted in the app's release notes. Continued use of UnionTerminal after a change constitutes acceptance of the updated policy.

Contact

Questions about this policy? Reach us at iamtherobot.io.

UnionTerminal Built by Robot in the Loop
Guide Shortcuts AI coding Privacy Terms Contribute Changelog