- Docs
- Troy Server
Troy Server: Distribute Your Plugins
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
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
- Install Troy Server on a WordPress site (it can be a simple VPS).
- Create a plugin entry and register a slug for it.
- Add a
Troyheader to your plugin with your repository URL — Troy Server requires this header in every ZIP it processes. - Connect your GitHub repository, enter the WordPress.org plugin slug, or upload ZIP files to the plugin entry.
- Create a Package to distribute your plugins with Troy Client included.
- 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.
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.
In This Section
- Installation — Set up your repository server.
- Adding Plugins — Upload ZIPs or connect GitHub.
- Packages — Create installer packages for your users.
- Composer — Require Troy-hosted plugins directly in your
composer.json. - GitHub Integration — Automate releases from tags.
- WordPress.org Integration — Sync your plugins from WordPress.org.
- Troubleshooting — When things don't work.
- API Reference — Technical endpoint documentation.
- Code Reference — Browse all PHP functions, classes, and constants.
