Dify App
Dify is made for agentic app building. In Studio, you can quickly build agentic workflows via a drag & drop interface and publish them as apps. You can access published apps via API, the web, or as an MCP server. Dify offers two main app types: Workflow and Chatflow. You will need to choose an app type when creating a new app.We recommend choosing Workflow or Chatflow your app type. But in addition to these, Dify also offers 3 more basic app types: Chatbot, Agent, and Text Generator.
These app types run on the same workflow engine underneath, but comes with simpler legacy interfaces:


Workflow
Build Workflow apps to handle single-turn tasks. The webapp interface and API provides easy access to batch execute many tasks at once.Underneath it all, workflow forms the basis for all other app types in Dify.
Chatflow
Chatflow is a special type of workflow app that gets triggered at every turn of a conversation. Other than workflow features, Chatflow comes with the ability to store and update custom conversation-specific variables, enable memory in LLM nodes, and stream formatted text, images, and files at different points throughout the Chatflow run. Chatflows always start with User Input.Dify DSL
Dify DSL (Domain-Specific Language) is the YAML format Dify uses to describe an app. It covers how the app is built and configured, from its nodes and prompts to its variables and settings, but not data such as its logs or knowledge bases. Exporting an app writes its DSL, and importing it builds the app again. That’s how apps are shared, published as templates, and moved between workspaces or Dify instances. In Dify 1.18.0 and later, exporting an app gives you an app package (.ifpkg), which holds the DSL file together with the files the app needs, such as uploaded icons and the skills and files of Agents. Earlier versions export the DSL file (.yml) on its own.
Variables
A variable is a labeled container to store information, so you can find and use that information later by referencing its name. You’ll come across different types of variables when building a Dify app.Inputs
You can specify any number of input variables at the User Input node for your app’s end users to fill in.
- Workflow
- Chatflow
Outputs
Each node produces one or more outputs that can be referenced in subsequent nodes. For instance, the LLM node has outputs:
Environment Variables
The environment variables you add while building a Workflow or Chatflow hold values for the whole app. Use one for a value that several nodes share, or that should differ between copies of the app, such as the API endpoint of a test or production system. For secrets like API keys, use the Secret type: their values stay out of an export unless you choose to include them.Conversation Variables
Conversation variables exist in Chatflow only. They keep their values across the turns of one conversation, so you can store information that changes as it goes, like a to-do list or token cost. You can update the value of a conversation variable via the Variable Assigner node:
Variable Referencing
You can easily pass variables to any node when configuring its input field by selecting from a dropdown:
/ slash, and selecting the desired variable from the dropdown.
