These docs have been generated using AI. Expect inaccuracies until we remove this banner.
- Docs
- Troy Client
- How It Works
How Troy Client Works
You don't need to understand the technical details to use Troy Client—it just works. But if you're curious (or troubleshooting), here's what happens under the hood.
The Basic Flow
When WordPress checks for plugin updates (which it does automatically, or when you click "Check for updates"), Troy Client steps in:
- Scans your plugins for special headers that say "I'm a Troy plugin"
- Groups plugins by their server to minimize network requests
- Asks each server if updates are available
- Tells WordPress what it found
Updates then appear in your normal WordPress dashboard, just like any other plugin update.
How Plugins Identify Themselves
Plugin developers add a simple header to their plugin's main file:
/**
* Plugin Name: My Plugin
* Version: 1.0.0
* Troy: repo.example.com
*/
That Troy: repo.example.com line is all it takes. Troy Client sees this and knows to check repo.example.com for updates instead of WordPress.org.
Privacy: What Gets Sent
Troy Client was designed to protect your privacy. When checking for updates, it sends:
- The plugin slug (like
my-plugin) - The current version number
- Your WordPress and PHP versions
- Your site's language
- A random anonymous ID
That's it. No domain name, no email address, no personal information.
The Anonymous ID
Troy Client generates a random identifier for your site. This ID:
- Is completely random (no connection to your domain)
- Changes every week
- Lets developers count installations without knowing who you are
Think of it like a library card with no name on it—the library knows how many people borrowed a book, but not which specific people.
Caching
To avoid hammering servers with requests, Troy Client caches responses for 10 minutes. This means:
- If you just checked for updates, checking again immediately won't make a new request
- After 10 minutes, the next check will contact the server again
Cache Size Optimization
The cache is capped at ~333KB of serialized data—roughly 20 plugins worth of update metadata. This prevents database bloat while ensuring typical sites never hit the limit.
The math: each plugin's update response serializes to ~15–17KB. At 333KB, that's about 20 plugins before the oldest entries get pruned. It's one of many micro-optimizations that keep Troy lightweight.
If you need to force a fresh check, you can clear the cache (see Troubleshooting).
Plugin Dependencies
Some plugins depend on other plugins. Troy supports this too. A developer can write:
/**
* Troy Dependencies: helper-plugin, another-plugin <different-repo.com>
*/
Troy Client will ensure those dependencies are available and updated.
Security
All communication with Troy Servers happens over HTTPS. Troy Client refuses to connect to non-secure servers.
Requests also timeout after 7 seconds—if a server is down or slow, your site won't hang waiting for it.
Next Steps
- Having issues? Check Troubleshooting
- Want to know more about privacy? See Introduction
