Privacy

Troy is built with privacy by design — no tracking, no domain collection, no data you don't control.

Privacy by Design, Not by Policy

Most update systems collect data because they can. Some plugins collect domain names, IP addresses, all plugins and themes, settings, admin and user email-addresses, sales revenue—all funneled to someone else's servers.

Troy works differently. It can't leak data it never collects.

Privacy isn't a setting you toggle. It's baked into the architecture.


Troy Client

Troy Client runs on sites that receive updates. Here's exactly what it sends to Troy Servers:

Rotating Site ID

A random identifier that changes weekly. No persistent fingerprinting.

Plugin Slugs & Versions

Only plugins and themes registered with the repository—not your entire install list.

Locale Preferences

Which translations you need, so servers can provide language packs.

PHP & WordPress Versions

Used to determine compatibility before offering updates.

That's the complete list. Troy Client never sends:

  • Domain names — Your site URL never leaves your server
  • Email addresses — Admin emails, user emails, customer emails stay local
  • Usernames or display names — Nothing about who runs the site
  • IP addresses — Troy Client doesn't transmit them
  • Settings or configuration — Your site options are yours alone
  • Full plugin or theme lists — Only Troy-enabled plugins and themes, nothing else

Troy Client also filters data sent to other update systems. When WordPress checks for updates with WordPress.org, Troy removes its plugins from the request—so even WordPress.org never learns which Troy plugins you have installed.


Troy Server

Troy Server runs on your infrastructure and receives update requests. Here's what you see as a plugin author:

Data you receive:

  • Update request counts — How many sites are checking for updates
  • Version distribution — What versions are currently deployed
  • Download counts — How many times packages were fetched
  • PHP & WordPress versions — Aggregate compatibility data
  • Locales — Which translations are requested

Data you don't receive:

  • Domain names of sites using your plugin
  • User information from those sites
  • Any data that could identify individual installations

Each repository only sees requests for plugins and themes registered with it. You never see requests meant for other servers.

This is intentional. You don't need identifying data to ship good software.


HTTPS-Only Communication

All communication between Troy Client and Troy Server happens over HTTPS. No exceptions.

Update checks, package downloads, header verification—everything is encrypted in transit. This isn't optional. Troy rejects insecure connections by design.


Self-Hosted Means Self-Controlled

Cloud services promise privacy policies. Self-hosting gives you actual control.

With Troy Server on your infrastructure:

  • Logs stay on your servers — Review, rotate, or delete them as you see fit
  • No third-party processing — Update requests never touch external infrastructure
  • Compliance is your choice — Meet GDPR, CCPA, or any standard without depending on vendor compliance
  • No terms of service — The code is MIT licensed; your data governance is up to you

An Indie Dev's Approach to Privacy

Troy has no investors demanding growth metrics. No advertising model that needs user profiles. No "data-driven" roadmap requiring behavioral analytics.

Data is a liability. It attracts hackers. It creates compliance headaches. And it erodes the trust users place in developers.

I designed Troy to never collect anything personally identifiable in the first place. You trusted me with your update infrastructure—you shouldn't have to trust me with your data.