5-Minute Setup

You're a plugin developer. You know what you're doing. Here's the short version.

1. Add a Troy Header

In your main plugin file:

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

That's the only code change. Once Troy Client sees that header, it pulls updates from your server.

2. Create a Plugin Page on Troy Server

  1. Log into your Troy Server.
  2. WP Admin → Repo Plugins → Add New Plugin.
  3. Set the slug (this becomes your plugin folder name).
  4. Upload your ZIP or connect GitHub/WordPress.org via Integrations.
  5. Publish the plugin page.

Don't share the ZIP directly:

If you send users a ZIP file, they might not have Troy Client installed—and they won't get future updates. Instead, create a Package on Troy Server (next step) and share that link.

3. Distribute via Package

Create a Package on Troy Server:

  1. WP Admin → Repo Packages → Add New Package.
  2. Add your plugins to the package.
  3. Publish the package page.

Now share your Package download link. When users install the Package:

  • Troy Client gets installed.
  • Your selected plugins get installed.
  • Future updates just work.

The Package is tiny (~9KB) regardless of how big your plugins are. The actual plugin downloads happen on the user's server network—not through spotty WiFi of their neighborhood café.

Recap

  • Header tells Troy Client where to look.
  • Plugin page hosts your releases.
  • Package bundles everything for easy distribution.

Everything else is optional complexity.

Optional: Dependencies

If your plugin requires another Troy plugin:

/**
 * Troy: repo.example.org
 * Troy Dependencies: required-plugin
 */

Troy Client will automatically install missing dependencies. See Dependencies.

Bundle your dependencies in a Package instead — it's simpler for users.

Optional: Embed Troy Client

If you can't use Packages—for example, when retrofitting Troy onto an already-distributed plugin—you can bundle code that installs Troy Client automatically. See Troy Embed for a code snippet that installs Troy Client in the background.

Be sure to let your users know that Troy Client will be installed. Be transparent about it.