This page describes the bundled starter project flows shipped with Langflow: what they are, where they live on disk, how they are loaded into the database during application startup, and how they are kept in sync with the latest component versions. For information about the UI that presents these flows to users, see Flow Management UI For a deeper look at the flow patterns they demonstrate, see Flow Patterns and Examples
Starter projects are pre-built flow definitions bundled with the langflow-base package. Each is stored as a JSON file on disk. At application startup, the backend reads these files, updates each node's component template to the latest installed version, and upserts the resulting flows into a dedicated database folder. Users interact with them through the Templates Modal in the frontend.
The directory containing starter project JSON files is:
src/backend/base/langflow/initial_setup/starter_projects/
The setup logic is primarily located in:
src/backend/base/langflow/initial_setup/setup.py
The following table lists the primary starter projects present in the codebase. These files define the graph structure, node configurations, and edges for common AI patterns.
| File | Pattern | Key Component Types |
|---|---|---|
Simple Agent.json | Single agent | Agent, URLComponent, ChatInput, ChatOutput |
Travel Planning Agents.json | Multi-agent orchestration | Agent (Multiple), UnifiedWebSearch, URLComponent, CalculatorComponent |
Market Research.json | Structured research | Agent, UnifiedWebSearch, ParserComponent, StructuredOutput |
Vector Store RAG.json | Retrieval Augmented Gen | Knowledge, parser, Prompt, Agent, ChatOutput |
Document Q&A.json | Document processing | Knowledge, Parser, Prompt, Agent, ChatOutput |
Memory Chatbot.json | Stateful conversation | ChatInput, ChatOutput, MemoryBase, Agent |
Blog Writer.json | Content generation | ChatInput, URLComponent, ParserComponent, Prompt Template |
Instagram Copywriter.json | Social media automation | ChatInput, UnifiedWebSearch, Agent, ChatOutput |
Youtube Analysis.json | Video transcription/analysis | YouTubeTranscripts, YouTubeCommentsComponent, Prompt, Agent |
SaaS Pricing.json | Cost estimation agent | Agent, SQLComponent, Prompt Template, ChatOutput |
Sources: src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json1-120 src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json1-189 src/backend/base/langflow/initial_setup/starter_projects/Market Research.json1-183 src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json1-180 src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json1-180 src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json1-183 src/backend/base/langflow/initial_setup/starter_projects/Instagram Copywriter.json1-178 src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json1-120 src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json1-183 src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json1-154
Each JSON file serializes a complete ReactFlow graph. The data object contains the core definitions:
nodes: Array of node objects. Each contains a data.node dictionary including the component template (field definitions and current values) and outputs array. src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json182-186edges: Array of edge objects. Each edge includes sourceHandle and targetHandle dictionaries encoding the connected component type, port name, and accepted types. src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json3-32viewport: Saved canvas position and zoom level.Nodes reference component types by the metadata.module or key field (e.g., "lfx.components.input_output.chat.ChatInput", "ChatInput"), which must match keys in the global component registry at load time. src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json148-162
Sources: src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json1-180 src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json121-189
Figure 1: Starter project loading during application startup
Sources: src/backend/base/langflow/main.py32-38 src/backend/base/langflow/main.py147-200
create_or_update_starter_projects is called during the FastAPI lifespan context manager defined in get_lifespan in main.py. This ensures that every time the server starts, the starter projects are synchronized with the database.
Sources: src/backend/base/langflow/main.py32-39
Component implementations evolve. If a starter project stored in the database references an old component code string, it might execute stale logic. The update_projects_components_with_latest_component_versions function patches each node's stored template with the current installed component definition from component_index.json.
Figure 2: update_projects_components_with_latest_component_versions data flow
template.code is replaced for matched node types to ensure the latest Python logic from the component registry is used. src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json184-200 src/lfx/src/lfx/_assets/component_index.json149-166tool_mode: true or specific outputs preserve their wiring to ensure edges remain valid after updates. src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json94-101 src/lfx/src/lfx/_assets/component_index.json64-70Prompt nodes receive new fields incrementally rather than a full template replacement to preserve user-defined prompt templates and variables. src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json17-31Sources: src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json1-121 src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json150-171 src/lfx/src/lfx/_assets/component_index.json1-52
Figure 3: Code entities involved in the starter project system
Sources: src/backend/base/langflow/main.py32-38 src/lfx/src/lfx/_assets/component_index.json1-10 src/lfx/src/lfx/_assets/stable_hash_history.json1-5
The frontend presents these projects through the TemplatesModal.
TemplatesModal: The main container for browsing starter projects and templates. src/frontend/src/modals/templatesModal/index.tsx1-20TemplateCardComponent: Renders individual starter project cards with icons and descriptions. src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx1-15GetStartedComponent: Displays the high-level categories (e.g., Basic Prompting, RAG) for new users. src/frontend/src/modals/templatesModal/components/GetStartedComponent/index.tsx1-10Sources: src/frontend/src/modals/templatesModal/index.tsx1-20 src/frontend/src/modals/templatesModal/components/TemplateCardComponent/index.tsx1-15
Starter projects are validated using automated tests to ensure they remain compatible with the component registry and expected outputs.
The test modules include:
src/frontend/tests/extended/features/starter-projects.spec.tssrc/backend/tests/unit/components/llm_operations/test_guardrails_component.pyThese tests verify:
starter_projects/ directory.TemplatesModal. src/frontend/tests/extended/features/starter-projects.spec.ts1-20Sources: src/frontend/tests/extended/features/starter-projects.spec.ts1-20 src/backend/tests/unit/components/llm_operations/test_guardrails_component.py1-10
Refresh this wiki
This wiki was recently refreshed. Please wait 5 days to refresh again.