Flows
Flows in Langflow are fully serializable and can be saved and loaded from the file system.
Projects and folders
The My Projects page displays all the flows and components you’ve created in the Langflow workspace.
Projects, folders, and flows are exchanged as JSON objects.
To create a new folder, click
New Folder.To rename a folder, double-click the folder name.
To download a folder, click
.To upload a folder, click
. The default maximum file upload size is 100 MB.To move a flow or component, drag and drop it onto the appropriate folder.
Import a flow
If you already have a Langflow JSON file, click the project name and choose Import Flow to import it into Langflow.

Once imported, your flow is ready to use.
Export a flow
The option to export a flow is available in the same menu as Import Flow. Once your flow is exported as JSON, you can import it into another Langflow instance.
Langflow JSON file contents
Langflow JSON files contain nodes and edges that describe components and connections, and additional metadata that describe the flow.
For an example Langflow JSON file, examine the Basic Prompting.json file in the Langflow repository.
Nodes
Nodes represent the components that make up the flow.
The ChatInput
node is the entry point of the flow. It’s the first node to be executed.
ChatInput-jFwUm
is a unique identifier for the node.
{
"data": {
"description": "Get chat inputs from the Playground.",
"display_name": "Chat Input",
"id": "ChatInput-jFwUm",
"node": {
"base_classes": ["Message"],
"description": "Get chat inputs from the Playground.",
"display_name": "Chat Input",
"icon": "MessagesSquare",
"template": {
"input_value": {
"display_name": "Text",
"info": "Message to be passed as input.",
"value": "Hello"
},
"sender": {
"value": "User",
"options": ["Machine", "User"]
},
"sender_name": {
"value": "User"
},
"should_store_message": {
"value": true
}
}
},
"type": "ChatInput"
},
"position": {
"x": 689.5720422421635,
"y": 765.155834131403
}
}
Edges
Edges represent the connections between nodes.
The connection between the ChatInput
node and the OpenAIModel
node is represented as an edge:
{
"className": "",
"data": {
"sourceHandle": {
"dataType": "ChatInput",
"id": "ChatInput-jFwUm",
"name": "message",
"output_types": ["Message"]
},
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-OcXkl",
"inputTypes": ["Message"],
"type": "str"
}
},
"id": "reactflow__edge-ChatInput-jFwUm{œdataTypeœ:œChatInputœ,œidœ:œChatInput-jFwUmœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-OcXkl{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-OcXklœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
"source": "ChatInput-jFwUm",
"sourceHandle": "{œdataTypeœ: œChatInputœ, œidœ: œChatInput-jFwUmœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}",
"target": "OpenAIModel-OcXkl",
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-OcXklœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
}
This edge shows that the ChatInput
component outputs a Message
type to the target
node, which is the OpenAIModel
node.
The OpenAIModel
component accepts the Message
type at the input_value
field.
Additional metadata and project information
Additional information about the flow is stored in the root data
object.
-
Metadata and project information including the name, description, and
last_tested_version
of the flow.
{ "name": "Basic Prompting", "description": "Perform basic prompting with an OpenAI model.", "tags": ["chatbots"], "id": "1511c230-d446-43a7-bfc3-539e69ce05b8", "last_tested_version": "1.0.19.post2", "gradient": "2", "icon": "Braces" }
-
Visual information about the flow defining the initial position of the flow in the workspace.
"viewport": { "x": -37.61270157375441, "y": -155.91266341888854, "zoom": 0.7575251406952855 }
Notes are like comments to help you understand the flow within the workspace.
They may contain links, code snippets, and other information.
Notes are written in Markdown and stored as node
objects.
{
"id": "undefined-kVLkG",
"node": {
"description": "## 📖 README\nPerform basic prompting with an OpenAI model.\n\n#### Quick Start\n- Add your **OpenAI API key** to the **OpenAI Model**\n- Open the **Playground** to chat with your bot.\n..."
}
}