Troy Server: For Developers

Troy Server lets you distribute WordPress plugins from your own server. Your code, your rules.

No approval process. No arbitrary takedowns. No one between you and your users.

Download Troy Server

Download Troy Server Package — This is a small installer package. Upload it via Plugins → Add New → Upload Plugin and activate it. The installer sets up Troy Client and Troy Server, then deactivates itself. See the installation guide for the full walkthrough.

Why Host Your Own Repository?

If you've followed WordPress development in recent years, you've seen what can happen when a centralized directory controls plugin distribution. Plugins blocked. Access revoked. Years of work made unavailable overnight.

Troy Server ensures that can't happen to you.

When you host plugins on your own Troy Server:

  • You control distribution. Publish updates when you're ready, not when someone approves them.
  • You own the relationship. Your users connect directly to you.
  • You can't be deplatformed. Your code lives on your infrastructure.
  • You respect privacy. Statistics are anonymized via rotating identifiers — no user tracking.

How It Works

  1. Install Troy Server on a WordPress site (it can be a simple VPS).
  2. Create a plugin entry and register a slug for it.
  3. Add a Troy header to your plugin with your repository URL — Troy Server requires this header in every ZIP it processes.
  4. Connect your GitHub repository, enter the WordPress.org plugin slug, or upload ZIP files to the plugin entry.
  5. Create a Package to distribute your plugins with Troy Client included.
  6. Share the Package link — users get your plugins and updates directly in their WordPress dashboard.

That's the bare minimum workflow. Your plugin users see updates in their WordPress dashboard just like any WordPress.org plugin, except the updates come from you.

Plugins vs Packages:

Plugins are for updates. Packages are for distribution.

Upload plugin versions to serve updates. Create Packages to distribute plugins to new users — the Package installer downloads and activates Troy Client automatically, so users don't need to set it up separately.

System Requirements

RequirementVersion
WordPress6.8+
PHP8.4+
MySQL8.0.19+
HTTPSRequired

About PHP 8.4:

Troy Server uses modern PHP features to keep the codebase clean, fast, and maintainable. Most quality hosts support PHP 8.4. If yours doesn't, move to another host.

No Caching or Translation Plugins:

Don't install caching plugins (WP Super Cache, W3TC, LiteSpeed, etc.) or translation plugins on your Troy Server. They may break REST API responses and cause update failures.

Quick Example

Your plugin needs one header to use Troy:

/**
 * Plugin Name: Example Plugin
 * Version: 1.3.0
 * Troy: repo.example.org
 */

When a user has Troy Client installed, they'll see updates for this plugin from repo.example.org in their WordPress dashboard — just like any WordPress.org plugin. They click "Update" and your new version installs.

Opt-in by design:

Troy only checks for updates on plugins that include a Troy header. Plugins without this header continue to update from WordPress.org as usual.

Who Uses Troy Server?

  • Independent plugin developers who want control over their distribution.
  • Agencies managing private plugins for clients.
  • Enterprise teams distributing internal tools.
  • Anyone who needs a reliable alternative for distributing their own code.

Your code. Your server. Your users.

In This Section