[{"data":1,"prerenderedAt":486},["ShallowReactive",2],{"blog-\u002Fblog\u002F2026\u002F01\u002Fhow-to-integrate-node-red-with-git":3},{"id":4,"title":5,"body":6,"description":12,"extension":475,"meta":476,"navigation":481,"path":482,"seo":483,"stem":484,"__hash__":485},"blog\u002Fblog\u002F2026\u002F01\u002Fhow-to-integrate-node-red-with-git.md","Integrating Git within Node-RED Workflow with FlowFuse",{"type":7,"value":8,"toc":459},"minimark",[9,13,16,19,24,27,30,33,37,40,43,50,53,56,60,63,68,71,98,102,105,144,147,151,154,211,217,221,224,248,260,274,283,286,290,293,299,360,369,376,385,389,392,422,425,436,439,443,446,449,452,456],[10,11,12],"p",{},"If you've been using Node-RED in production, you already know the pain points. Flows get complex. Teams grow. Someone makes a change that breaks production at 2 AM. You need to roll back, but which version was working? Who approved this deployment? How do you keep your dev environment in sync with production?",[10,14,15],{},"Traditional Node-RED doesn't have answers to these questions. But modern software development has solved these problems decades ago with version control and DevOps pipelines.",[10,17,18],{},"That's the gap FlowFuse fills.",[20,21,23],"h2",{"id":22},"flowfuse-devops-for-node-red","FlowFuse: DevOps for Node-RED",[10,25,26],{},"FlowFuse is a platform built specifically for running Node-RED at scale. It handles deployment, management, security, team collaboration, and more so you can focus on building flows instead of managing infrastructure.",[10,28,29],{},"Every FlowFuse can automatically create snapshots whenever flows are deployed. These snapshots let you track changes over time and roll back when needed. You can also create manual snapshots to mark important milestones.",[10,31,32],{},"The real power comes from DevOps pipeline stages. You set up stages like development, staging, and production, then push snapshots through them. Make changes in dev, test in staging, promote to production. Everything's tracked and auditable.",[20,34,36],{"id":35},"why-git-integration-matters","Why Git Integration Matters",[10,38,39],{},"We realized that many organizations already use Git as their central version control system. Their CI\u002FCD pipelines run on Git commits. Their backup systems rely on Git repositories. Their compliance tools track changes through Git history too. To fit seamlessly into these existing workflows, Node-RED flows needed to be in Git too.",[10,41,42],{},"That's why we built Git integration for FlowFuse. FlowFuse pipeline stages now connect directly to Git repositories. Push your snapshots to Git and pull changes back when you need them.",[10,44,45,49],{},[46,47,48],"strong",{},"Note:"," Git integration currently supports GitHub repositories.",[10,51,52],{},"Git integration brings several key advantages. Your flows are backed up in Git repositories alongside your other code, so if an instance is accidentally deleted, your flows remain safe and recoverable. For some companies, having all code assets version-controlled in Git repositories is a compliance requirement they must meet.",[10,54,55],{},"Git integration works alongside FlowFuse's DevOps features—snapshots, pipelines, rollbacks—giving you the full power of both systems.",[20,57,59],{"id":58},"setting-up-git-integration","Setting Up Git Integration",[10,61,62],{},"Let's walk through connecting your FlowFuse instances to a Git repository.",[64,65,67],"h3",{"id":66},"prerequisites","Prerequisites",[10,69,70],{},"Before you begin, make sure you have:",[72,73,74,92],"ul",{},[75,76,77,80,81,86,87,91],"li",{},[46,78,79],{},"FlowFuse Team Account",": Git integration is available exclusively to Enterprise users. If you don't have a Enterprise account, visit the ",[82,83,85],"a",{"href":84},"\u002Fpricing","FlowFuse pricing page"," or contact ",[88,89,90],"code",{},"sales@flowfuse.com"," to upgrade.",[75,93,94,97],{},[46,95,96],{},"GitHub Account",": You'll need a GitHub account with permission to create repositories and generate personal access tokens.",[64,99,101],{"id":100},"step-1-create-a-github-repository","Step 1: Create a GitHub Repository",[10,103,104],{},"First, set up a repository where your Node-RED flows will live:",[106,107,108,111,121,124,135,138],"ol",{},[75,109,110],{},"Log in to your GitHub account",[75,112,113,114,117,118],{},"Click the ",[46,115,116],{},"+"," icon in the top right corner and select ",[46,119,120],{},"New repository",[75,122,123],{},"Name your repository (e.g., \"nodered-flows\" or \"production-flows\")",[75,125,126,127,130,131,134],{},"Choose ",[46,128,129],{},"Public"," or ",[46,132,133],{},"Private"," depending on your needs",[75,136,137],{},"You can initialize with a README if you'd like documentation",[75,139,140,141],{},"Click ",[46,142,143],{},"Create repository",[10,145,146],{},"Keep this repository URL handy—you'll need it later.",[64,148,150],{"id":149},"step-2-generate-a-github-personal-access-token","Step 2: Generate a GitHub Personal Access Token",[10,152,153],{},"FlowFuse needs permission to push and pull from your repository. GitHub uses Personal Access Tokens for this:",[106,155,156,165,174,177,180,191,205],{},[75,157,158,159],{},"Go to ",[82,160,164],{"href":161,"rel":162},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens",[163],"nofollow","GitHub Personal Access Tokens Settings",[75,166,140,167,170,171],{},[46,168,169],{},"Generate new token"," and select ",[46,172,173],{},"Generate new token (fine-grained)",[75,175,176],{},"Give your token a descriptive name like \"FlowFuse Node-RED Integration\"",[75,178,179],{},"Set an expiration date (we recommend 90 days for security)",[75,181,182,183,186,187,190],{},"Under ",[46,184,185],{},"Repository access",", choose ",[46,188,189],{},"Only select repositories"," and pick which repos FlowFuse can access",[75,192,193,194,197,198,201,202],{},"Under Permissions, expand ",[46,195,196],{},"Add permissions",", then locate ",[46,199,200],{},"Contents"," and set it to ",[46,203,204],{},"Read and write",[75,206,140,207,210],{},[46,208,209],{},"Generate token"," at the bottom",[10,212,213,216],{},[46,214,215],{},"Critical",": GitHub shows this token only once. Copy it immediately and store it somewhere secure. You'll paste it into FlowFuse in the next step.",[64,218,220],{"id":219},"step-3-add-your-token-to-flowfuse","Step 3: Add Your Token to FlowFuse",[10,222,223],{},"Now let's connect FlowFuse to your GitHub account:",[106,225,226,229,236,242],{},[75,227,228],{},"Log in to your FlowFuse account",[75,230,231,232,235],{},"Navigate to ",[46,233,234],{},"Team Settings"," in the left sidebar",[75,237,113,238,241],{},[46,239,240],{},"Integrations"," tab",[75,243,244,245],{},"Find the Git integration section and click ",[46,246,247],{},"Add Token",[10,249,250,256],{},[251,252],"img",{"alt":253,"dataZoomable":254,"src":255},"Screenshot showing the Team Settings page with the Integrations tab selected and add token button highlighted","","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fteam-settings-integrations.png",[257,258,259],"em",{},"Team Settings - Integrations tab showing Git integration options",[106,261,263,266,269],{"start":262},5,[75,264,265],{},"Give your token a name (like \"GitHub Production Flows\")",[75,267,268],{},"Paste the Personal Access Token you copied from GitHub",[75,270,140,271],{},[46,272,273],{},"Add",[10,275,276,280],{},[251,277],{"alt":278,"dataZoomable":254,"src":279},"Screenshot of the Add Token dialog where users enter their GitHub Personal Access Token","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fadd-token.png",[257,281,282],{},"Adding a GitHub Personal Access Token to FlowFuse",[10,284,285],{},"Your token is now available to all Node-RED instances in your FlowFuse team.",[64,287,289],{"id":288},"step-4-configure-a-pipeline-stage-for-git","Step 4: Configure a Pipeline Stage for Git",[10,291,292],{},"This is where it comes together. You'll configure a pipeline stage to push snapshots to your Git repository.",[10,294,295,298],{},[46,296,297],{},"Important",": A Git repository stage needs something to push. Make sure your pipeline has at least one stage before the Git stage—typically a Node-RED instance stage. The pipeline will take snapshots from that source stage and push them to Git.",[106,300,301,304,311,314,319,325,328,331,338,345,352,357],{},[75,302,303],{},"In FlowFuse, navigate to your application",[75,305,306,307,310],{},"Go to the ",[46,308,309],{},"DevOps Pipelines"," section",[75,312,313],{},"Select the pipeline you want to add the Git stage to (or create a new one)",[75,315,140,316],{},[46,317,318],{},"Add Stage",[75,320,321,322],{},"In the stage settings, select the Type ",[46,323,324],{},"Git Repository",[75,326,327],{},"Give the stage a name",[75,329,330],{},"Select the token you created earlier",[75,332,333,334,337],{},"Enter your repository URL (e.g., ",[88,335,336],{},"https:\u002F\u002Fgithub.com\u002Fyour-username\u002Fnodered-flows.git",")",[75,339,340,341,344],{},"Enter the snapshot file name (e.g., ",[88,342,343],{},"flow.json","). Leaving this blank will use the instance name. This is the name your flows will be saved as in the Git repository. When pulling changes back from Git, you must enter the exact same file name that exists in your repository to retrieve the correct flows.",[75,346,347,348,351],{},"Specify a branch name for pushing changes (like ",[88,349,350],{},"main","). Make sure the branch already exists in your repository.",[75,353,354,355,351],{},"Optionally, specify a branch name for pulling changes (like ",[88,356,350],{},[75,358,359],{},"Enter a secret credential key. This can be any strong passphrase. You'll need to re-enter it when pulling changes through the DevOps pipeline in FlowFuse.",[10,361,362,366],{},[251,363],{"alt":364,"dataZoomable":254,"src":365},"Screenshot showing the Git Repository stage configuration with fields for stage name, token, repository URL, and branch names","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fgit-stage-adding.png",[257,367,368],{},"Configuring a Git Repository stage in a DevOps pipeline",[106,370,372],{"start":371},13,[75,373,140,374],{},[46,375,318],{},[10,377,378,382],{},[251,379],{"alt":380,"dataZoomable":254,"src":381},"Screenshot showing a DevOps pipeline with multiple stages including a Git repository stage successfully added","\u002Fblog\u002F2026\u002F01\u002Fimages\u002Fdev-pipeline.png",[257,383,384],{},"DevOps pipeline with Git repository stage added",[64,386,388],{"id":387},"step-5-push-a-snapshot-to-git","Step 5: Push a Snapshot to Git",[10,390,391],{},"With the Git repository stage configured in your pipeline, you're ready to push your Node-RED flows to Git.",[106,393,394,397,400,406,413,419],{},[75,395,396],{},"Open your Node-RED instance in FlowFuse that is part of the DevOps pipeline containing the Git repository stage",[75,398,399],{},"Make any required changes to your Node-RED flows, or keep them as-is if you want to push the current state",[75,401,402,403,405],{},"Navigate to the ",[46,404,309],{}," section and select the pipeline that includes the Git repository stage",[75,407,408,409,412],{},"Create a ",[46,410,411],{},"snapshot"," to capture the current state of your flows",[75,414,140,415,418],{},[46,416,417],{},"Run Pipeline"," and promote the snapshot through each stage until it reaches the Git repository stage",[75,420,421],{},"Once the pipeline completes successfully, FlowFuse automatically commits the snapshot to the configured Git repository",[10,423,424],{},"After the pipeline run finishes, you can open your Git repository and verify:",[72,426,427,430,433],{},[75,428,429],{},"A new commit containing your Node-RED flows",[75,431,432],{},"A commit message linked to the snapshot",[75,434,435],{},"A complete, auditable history of changes",[10,437,438],{},"At this point, your Node-RED workflows are version-controlled in Git and fully integrated into your existing CI\u002FCD and DevOps processes.",[64,440,442],{"id":441},"step-6-pull-changes-from-git","Step 6: Pull Changes from Git",[10,444,445],{},"FlowFuse's Git integration works both ways. You can push flows to Git and pull changes back from Git into your Node-RED instances.",[10,447,448],{},"The pipeline process is identical whether you're pushing or pulling—only the stage order changes. When pushing, your Git repository stage sits at the end of the pipeline. Snapshots flow from your Node-RED instance through intermediate stages and finally commit to Git. When pulling, the Git repository stage moves to the beginning. The pipeline fetches the latest commit from your configured branch, creates a snapshot, and promotes it through subsequent stages to your target instances.",[10,450,451],{},"This bidirectional workflow solves several common challenges. Teams can commit flow changes directly to the repository and pull them into FlowFuse. You can migrate flows from other systems by committing them to Git first. Your Git repository serves as both a backup destination and a source of truth.",[20,453,455],{"id":454},"conclusion","Conclusion",[10,457,458],{},"FlowFuse simplifies everything about running Node-RED at scale—deployment, security, scaling, and team management. Git integration bridges the gap between FlowFuse's DevOps features and your existing development infrastructure. Your flows stay version-controlled, your team stays synchronized, and your operations stay simple.",{"title":254,"searchDepth":460,"depth":460,"links":461},2,[462,463,464,474],{"id":22,"depth":460,"text":23},{"id":35,"depth":460,"text":36},{"id":58,"depth":460,"text":59,"children":465},[466,468,469,470,471,472,473],{"id":66,"depth":467,"text":67},3,{"id":100,"depth":467,"text":101},{"id":149,"depth":467,"text":150},{"id":219,"depth":467,"text":220},{"id":288,"depth":467,"text":289},{"id":387,"depth":467,"text":388},{"id":441,"depth":467,"text":442},{"id":454,"depth":460,"text":455},"md",{"navTitle":5,"excerpt":477},{"type":7,"value":478},[479],[10,480,12],{},true,"\u002Fblog\u002F2026\u002F01\u002Fhow-to-integrate-node-red-with-git",{"title":5,"description":12},"blog\u002F2026\u002F01\u002Fhow-to-integrate-node-red-with-git","zMAymdKE7bepLwarKSzN06tV7iKb9tWmmsheGscETyI",1780070554011]