Six solutions for WordPress plugin distribution, each with a different philosophy. See how Troy compares.
Six Tools, One Goal
There are several ways to distribute WordPress plugins outside WordPress.org. Each tool takes a different approach β some embed a library into every plugin, others replace the entire ecosystem.
Troy takes a middle path: one client plugin, one server plugin, full control. Your plugins update from your infrastructure, with WordPress.org coexistence built in from day one.
Use the comparison table below to see exactly where each solution stands.
Troy
Private distribution
Low complexityv1.7.1184 (5 months)
Freemius
Hosted monetization platform
Medium complexity~11 years
EDD + SL
Easy Digital Downloads + Software Licensing
eCommerce + licensing + updates
Medium complexityv3.3+ (~14 years)
PUC
Plugin Update Checker
Per-plugin update library
Medium complexityv5.6 (~15 years)
FAIR
Federated And Independent Repositories
WP.org replacement
High complexityPre-release (pivoted to TYPO3)
Git Updater
Git-hosted updates
Low complexityv12.22.0 (~12 years)
Rotate your phone for easier comparison reading.
Feature
Plugin distribution
Theme distribution
Private plugins
Cost model
Per-plugin integration effort
WordPress.org coexistence
FreeβPro funnel via WP.org
Plugin data hidden from WP.org
Who sees your update requests?
Updater security patch rollout
Dependency management
Server-side compatibility checks
Multiple versions hosted
Pre-release channels
Estimated server capacity
Update check batching
Server required
Self-hosting complexity
Automatic failover if server is down
What gets installed on customer sites
Scales with more plugins
Import from GitHub or WP.org
Readme display in WordPress
Changelog display in WordPress
Plugin banner and icon in WordPress
Composer support (for Bedrock sites)
Admin UI
Logging UI
Usage analytics
Per-plugin statistics
Global statistics
Rate limiting risk
Authentication on customer sites
WP-CLI support
Translation updates
License
Troy
β Planned (2026)
Free (MIT, self-hosted)
Add 1 line to your plugin file
Your plugin can stay on WP.org too
WP.org never sees your plugin
Only your own server
Standalone β one update covers all plugins
Via Packages, Composer, and a plugin header
Serves the latest version your site can run
Site owner picks a channel (stable or beta) via one line in wp-config.php
50kβ500k clients
All plugins in one request
Any WordPress site
Low
β Planned
One shared plugin (Troy Client)
Same single client, any number of servers
~30 seconds
Native Composer 2 repository (Bedrock-ready)
Full UI with auto-refresh
Anonymous: PHP, WP, and language breakdown
Your server, no limits
None required (public by design)
β Planned (2026)
β Planned
MIT
Freemius
β ~7% of sale revenue
β Bundle ~147 library files into each plugin
β Free/premium split required
β Your plugin info is sent to WP.org
β Freemius servers (collects site + user data)
β Bundled β every developer must release an update
β Checks, but won't offer an older compatible version
EDD + SLEasy Digital Downloads + Software Licensing
β $199β999/yr (addon)
Embed a ~620-line update script into each plugin
β Exposes your plugin to WP.org
β Developer must build upgrade flow
β Your plugin info is sent to WP.org
β Your store server (sends site URL on every check)
β Bundled β every developer must release an update
β Checks on site only; no older version offered if incompatible
β Per-product opt-in checkbox in admin tools
Depends on your server
One request per plugin
WordPress + EDD + SL
Medium (WordPress + 2 plugins to manage)
~620-line update script added to each plugin
β Extra update script per plugin added
Manual upload + product config
Full eCommerce UI
Sales data only (no site-level insight)
β Sales only
β Sales only
Your server, no limits
License key required (no key = no updates)
Via WP-CLI
GPLv2+ (addon $199β999/yr)
PUCPlugin Update Checker
Requires your own server or private Git repos
Free (MIT)
β Bundle ~60+ library files into each plugin
β Removes your plugin from WP.org checks, but stops working if the plugin is deactivated
Developer must build upgrade flow
β Hidden only while the plugin is active
β Your server or Git host, depending on setup
β Bundled β every developer must release an update
β Beta versions skipped unless the developer enables them in code
Depends on Git host
One request per plugin
β Optional
None (Git) or Low (your own JSON file)
~60 library files added to each plugin
β Extra ~60 files per plugin added
Manual JSON or Git setup
From readme.txt in repo
No UI (code only)
β Git hosts: ~60 req/hr without auth token
Access tokens per Git host
Via WP-CLI trigger
Built-in
MIT
FAIRFederated And Independent Repositories
Mirrors the WP.org directory
Free (MIT/GPLv2)
N/A
Bypasses WP.org entirely
AspirePress servers
Standalone β one update covers all plugins
N/A
Single redirect
Laravel stack
High
One shared plugin (AspireUpdate)
One plugin, one mirror
Scraping only
From WP.org
From WP.org
From WP.org
Web app
Logs stored in database, no UI
Your server, no limits
None required
MIT / GPLv2
Git Updater
β Only via private Git repos
Free core, Pro paid
Add Git host lines to your plugin file
β Exposes your plugin to WP.org
β Leaks plugin data to WP.org
β Your plugin info is sent to WP.org
β GitHub/GitLab/etc. sees every request
Standalone β one update covers all plugins
β Only via Git version tags
β ~60 req/hr without auth token
One request per plugin per host
None
Handled by Git host
One shared plugin (Git Updater)
One plugin, any Git host
N/A (is the source)
Settings
β GitHub: ~60 req/hr without auth token
β Git tokens for private repos + rate limits
GPL-3.0
How Troy Compares
Troy vs. Freemius
Freemius is a SaaS monetization platform that handles licensing, payments, and updates. It takes ~7% of every sale. Each plugin must embed a ~147-file SDK. Your customers' site URLs, WordPress versions, and plugin usage data flow through Freemius servers β not yours. Troy is self-hosted, MIT-licensed, and collects nothing from end users. If you need built-in payments, Freemius is the only turnkey option. If you already handle sales yourself, Troy gives you the update infrastructure β no revenue cut, no customer data collected.
Troy vs. EDD + Software Licensing
Easy Digital Downloads is a full eCommerce platform. Software Licensing is a paid addon ($199β999/yr at renewal) that adds update delivery. Every update check sends the customer's site URL to your store β no anonymization. EDD also ships built-in telemetry that reports your server environment, sales data, and active plugins to Awesome Motive weekly. The onboarding wizard pre-checks the opt-in checkbox. Troy handles update delivery on its own β no storefront, no telemetry, no site URLs sent anywhere.
Troy vs. Plugin Update Checker
Plugin Update Checker is a free MIT library with ~15 years of production use. You bundle ~60 PHP files into every plugin that uses it. Ten plugins means ten full copies in memory, ten HTTP requests per update cycle, and ten independent copies to patch when a vulnerability is found. PUC also stops working the moment you deactivate a plugin β its update service lives inside the host plugin. Troy installs once as a shared client and covers all Troy plugins, activated or not.
Troy vs. Aspire Cloud (FAIR)
Aspire Cloud set out to replace WordPress.org with an independent mirror. It requires a Laravel stack with PostgreSQL and Redis β it's too heavy to run on a $10/month server. Key backers stepped away in February 2026, and the project is pivoting to TYPO3 and Drupal. Troy doesn't replace WordPress.org β it runs alongside it.
Troy vs. Git Updater
Git Updater pulls updates directly from GitHub, GitLab, Bitbucket, or Gitea β no server required. The tradeoff: your Git host sees every update request, unauthenticated GitHub requests cap at 60 per hour, and private repos require each site owner to configure API tokens. Troy routes all update traffic through your own server with no rate limits and no client-side configuration.
Quick Decision Matrix
Not sure which tool fits your use case? This matrix maps common goals to the best-fit solution.
Your Goal
Best Choice
Runner-up
Distribute private/commercial plugins
Troy
PUC (1β2 plugins, no server)
Keep future WordPress.org option open
Troy
Git Updater (public repos only)
Keep plugins off WordPress.org radar
Troy
PUC (also filters proactively)
Zero platform fees
Troy
PUC (also free, MIT)
Full data ownership (no 3rd-party hosting)
Troy
EDD (self-hosted, but phones home)
Lowest barrier to entry
Troy
PUC (no server, but ~60 files per plugin)
10+ plugins at scale
Troy
Git Updater
Fastest plugin publishing (one-click import)
Troy
β
Multiple PHP/WP version support
Troy
β
Network effect (one client, many repos)
Troy
β
Built-in analytics dashboard
Troy
Freemius (hosted, opt-in tracking)
Composer/Bedrock workflow
Troy (native Composer 2 repository)
PUC (manual composer.json config)
Full admin UI for plugin management
Troy
EDD (full eCommerce UI)
No dependency on external services
Troy
EDD (self-hosted)
Built-in licensing and payments
Freemius
EDD + SL
No client plugin on customer sites
PUC (but bundles ~60 files per plugin)
Freemius (bundles ~147 files per plugin)
No separate client install (at the cost of ~60 files per plugin)
PUC
EDD (update script per plugin)
No server maintenance, Git workflow
Git Updater
PUC (Git mode)
Why Is Troy Winning in Almost Every Category?
Because we learned from the others. We spent many days tearing apart every tool on this page β including Troy β cataloguing every feature gap, every silent data leak, every architectural shortcut. We know where Troy falls short too β and we're fixing it.