Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dify.ai/llms.txt

Use this file to discover all available pages before exploring further.

Publishing through a personal GitHub repository lets you ship a plugin without going through Dify Marketplace review. Users install the plugin by entering your repo URL and selecting a release that contains a .difypkg asset. When to use this method
  • You want full control over versioning and the release cadence.
  • The plugin is open source and you want others to read, fork, or contribute to it.
  • The plugin is for internal use within a team or org, but you still want one canonical install URL.
  • Your plugin is awaiting marketplace review and you need an interim distribution channel.
For a comparison with other publishing methods, see the Publishing Overview.

Prerequisites

  • A packaged plugin (.difypkg file). If you don’t have one yet, see Package as Local File and Share.
  • A GitHub account.
  • A Dify workspace where you (or your users) have permission to install plugins.

Step 1: Create a GitHub repository

1

Create the repository

On GitHub, create a new public repository. The name typically matches your plugin name (for example, dify-plugin-flomo).
2

Push your plugin source

Initialize git in your plugin project and push the source code:
cd your_plugin_project
git init
git add .
git commit -m "initial commit"
git branch -M main
git remote add origin https://github.com/<your-handle>/<repo-name>.git
git push -u origin main
3

Confirm the manifest

The author field in manifest.yaml and in any provider/*.yaml must match your GitHub handle. Mismatches cause plugin_unique_identifier is not valid when users try to install. See the General Specifications for manifest details.

Step 2: Build the plugin package

From the directory above your plugin project, run:
dify plugin package ./your_plugin_project
This produces your_plugin_project.difypkg in the current directory.

Step 3: Publish a GitHub release

GitHub releases are how Dify discovers installable versions of your plugin.
1

Tag a release

On your repository page, click Releases > Draft a new release. Create a new tag using semantic versioning (for example, v0.0.1). The tag should match the version field in your manifest.yaml.
2

Attach the .difypkg file

In the release form, drag the .difypkg file into the Assets area. Dify reads this asset when users install from your repo.
3

Publish

Add release notes describing what changed, then click Publish release.
Repeat Steps 2 and 3 for each new version. Bump the version in manifest.yaml first, repackage, then create a new tag and release.

Step 4: Install from your repository

Share your repository URL with users. They install it in Dify as follows:
1

Open the Plugins page

In Dify, go to Plugins in the top-right corner.
2

Install from GitHub

Click Install Plugin > From GitHub.
3

Enter repository details

Paste the repository URL (for example, https://github.com/<your-handle>/<repo-name>), then select the version from the dropdown. Dify pulls the matching .difypkg asset from that release.
4

Confirm installation

Review the permissions the plugin requests, then click Install.
The plugin appears on the user’s Plugins page within seconds of clicking Install. Dify pulls the .difypkg from your GitHub release on demand.

Troubleshooting

  • plugin_unique_identifier is not valid: the author field in manifest.yaml (and provider/*.yaml) doesn’t match the GitHub handle that owns the repo. Update it, repackage, and re-release.
  • No versions appear in the install dialog: the release has no .difypkg asset attached, or the repo has no releases yet. Open the release on GitHub and confirm the asset is listed under Assets.
  • Signature verification error: self-hosted Dify instances may have signature verification enabled. See Third-Party Signature Verification to sign your release, or see the FAQ for the bypass option.

Edit this page | Report an issue