Dify supports several plugin types, each targeting a different extension point inside the platform. Pick the one that matches how your code will be invoked.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.
Quick decision
| You want to… | Build a… |
|---|---|
| Add a callable action to Agents and Workflows (search, send email, transform data, etc.) | Tool |
| Make a new LLM, embedding, rerank, TTS, STT, or moderation model selectable inside Dify | Model |
| Implement a custom reasoning loop for Agents (ReAct, Function Calling variant, etc.) | Agent Strategy |
| Expose an HTTP endpoint that external services can call to drive a Dify workflow | Extension (Endpoint) |
| Ingest documents from an external system into a Knowledge Base | Datasource |
| Start a workflow when something happens upstream (a webhook fires, a file lands) | Trigger |
Common questions
Can one plugin combine multiple types?
Can one plugin combine multiple types?
Yes. A Tool plugin can also expose endpoints. For example, a Discord bot plugin sends messages (tool) and receives webhooks (endpoint) in one package. Model plugins are stricter: they cannot bundle tools or endpoints.
Tool vs. Agent Strategy: what's the difference?
Tool vs. Agent Strategy: what's the difference?
A Tool is an individual capability the Agent decides to call (like “search the web”). An Agent Strategy is the reasoning loop itself: the policy that decides which tools to call, in what order, and when to stop. Build a tool unless you’re replacing how Agents think.
Datasource vs. Trigger: both pull from external systems?
Datasource vs. Trigger: both pull from external systems?
Datasource brings documents into a Knowledge Base for retrieval. Trigger fires a workflow in real time on an upstream event. Same systems can power both, but the consumption pattern is different: indexing vs. event-driven execution.
Extension vs. Tool: when is a plain HTTP endpoint right?
Extension vs. Tool: when is a plain HTTP endpoint right?
Extensions are for the other direction: an outside service calls into Dify. Tools are for Agents/Workflows calling out to a service. Build an Extension when your plugin is the entry point, not the action.
Next steps
Once you’ve picked a type, set up the CLI and scaffold a project:Install the CLI
Get
dify on your machine and run dify plugin init.Read the manifest spec
Understand the YAML structure every plugin shares.
Edit this page | Report an issue