These docs have been generated using AI. Expect inaccuracies until we remove this banner.

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:

  1. Scans your plugins for special headers that say "I'm a Troy plugin"
  2. Groups plugins by their server to minimize network requests
  3. Asks each server if updates are available
  4. 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