The Dify command line interface (CLI) manages your plugin development workflow, from project initialization to packaging. This guide covers installing the CLI, scaffolding a plugin project, and running it against a Dify instance.
Prerequisites
Before you begin, make sure you have:
- Python 3.12
- Homebrew (macOS only, used to install the CLI)
Install the CLI
brew tap langgenius/dify
brew install dify
Download the latest binary from the Dify Plugin Daemon releases page. Pick dify-plugin-linux-amd64 for x86_64 hosts or dify-plugin-linux-arm64 for ARM hosts.chmod +x dify-plugin-linux-amd64
sudo mv dify-plugin-linux-amd64 /usr/local/bin/dify
Download dify-plugin-windows-amd64.exe (or dify-plugin-windows-arm64.exe) from the Dify Plugin Daemon releases page, rename it to dify.exe, and add its folder to your PATH.
Verify the installation:
Create a Plugin Project
Create a new plugin project with:
Fill in the required fields when prompted:
Edit profile of the plugin
Plugin name (press Enter to next step): hello-world
Author (press Enter to next step): langgenius
Description (press Enter to next step): hello world example
Repository URL (Optional) (press Enter to next step): Repository URL (Optional)
Enable multilingual README: [✔] English is required by default
Languages to generate:
English: [✔] (required)
→ 简体中文 (Simplified Chinese): [✔]
日本語 (Japanese): [✘]
Português (Portuguese - Brazil): [✘]
Controls:
↑/↓ Navigate • Space/Tab Toggle selection • Enter Next step
Choose python and press Enter to use the Python plugin template, then select the type of plugin you want to build:
Select the type of plugin you want to create, and press `Enter` to continue
Before starting, here's some basic knowledge about Plugin types in Dify:
- Tool: Tool Providers like Google Search, Stable Diffusion, etc. Used to perform specific tasks.
- Model: Model Providers like OpenAI, Anthropic, etc. Use their models to enhance AI capabilities.
- Endpoint: Similar to Service API in Dify and Ingress in Kubernetes. Extend HTTP services as endpoints with custom logic.
- Trigger: Webhook-based providers that turn third-party platform events into workflow start signals.
- Agent Strategy: Implement your own agent strategies like Function Calling, ReAct, ToT, CoT, etc.
Based on the ability you want to extend, Plugins are divided into six types: Tool, Model, Extension, Agent Strategy, Datasource, and Trigger.
- Tool: A tool provider that can also implement endpoints. For example, building a Discord Bot requires both sending and receiving messages.
- Model: Strictly for model providers, no other extensions allowed.
- Extension: For simple HTTP services that extend functionality.
- Agent Strategy: Implement custom agent logic with a focused approach.
- Datasource: Provide datasource for Dify Knowledge Pipeline.
- Trigger: Build webhook integrations that emit events to kick off workflows.
We've provided templates to help you get started. Choose one of the options below:
-> tool
agent-strategy
llm
text-embedding
rerank
tts
speech2text
moderation
extension
datasource
trigger
When prompted for the minimal Dify version, leave it blank to use the latest version:
Edit minimal Dify version requirement, leave it blank by default
Minimal Dify version (press Enter to next step):
The CLI creates a new directory named after your plugin and sets up the basic project structure. Move into it:
Run the Plugin
From the hello-world directory, copy the example environment file:
Edit the .env file to set your plugin’s environment variables, such as API keys or other configurations. To get the debugging credentials, log in to your Dify environment, click Plugins in the top-right corner, then click the debug icon. In the pop-up window, copy the API Key and Host Address.
INSTALL_METHOD=remote
REMOTE_INSTALL_URL=debug-plugin.dify.dev:5003
REMOTE_INSTALL_KEY=********-****-****-****-************
REMOTE_INSTALL_URL combines host and port in host:port form. The host and port are shown together in the API Key card on the Plugins page.
Install the dependencies and run your plugin:
pip install -r requirements.txt
python -m main
Edit this page | Report an issue