diff --git a/RELEASE.md b/RELEASE.md
new file mode 100644
index 000000000..f18f02a6b
--- /dev/null
+++ b/RELEASE.md
@@ -0,0 +1,125 @@
+# Releasing Langflow
+
+Langflow follows a **release-when-ready** cadence, with each cycle typically lasting 4–6 weeks depending on QA and stabilization needs.
+
+## Goals
+
+* Keep `main` fast-moving for everyday work while ensuring stable release builds when features mature.
+* Provide an isolated branch for QA and last-minute fixes (the release candidate, RC).
+* Preserve a linear, readable history wherever possible.
+* Ensure released code is extensively tested before publication.
+* Minimize time to resolution of critical bugs.
+
+## Process Overview
+
+### 1. OSS QA
+
+Create an OSS release candidate (RC) branch containing `langflow` and any associated PyPI packages (e.g. `lfx`).
+During this period:
+
+* QA is performed manually.
+* Bug fixes are merged into the RC branch.
+* New features continue development on `main`.
+
+This step usually lasts about a week.
+
+### 2. Desktop QA
+
+Once OSS QA and bugfixing are complete, create a Desktop release candidate.
+
+* The Desktop RC is based on the final OSS RC.
+* Manual QA is performed.
+* Bug fixes are merged into the Desktop RC.
+* New features continue on `main`.
+
+This step also usually lasts about a week.
+
+### 3. Release
+
+After QA and bugfixing are complete for both OSS and Desktop:
+
+* Final releases are cut from their respective RC branches.
+* Release timing is coordinated with Langflow’s DevRel team.
+* For at least 24 hours after release, Discord, GitHub, and other support channels should be monitored for critical bug reports.
+
+## Branch Model
+
+| Branch | Purpose | Merge Policy |
+| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
+| **`main`** | Integration branch. All feature PRs target this by default. | **Squash & Merge** (linear history) |
+| **`release-X.Y.Z`**
(e.g. `release-1.4.3`) | Temporary RC branch. Active only for the release cycle. Accepts QA and blocking-bug PRs labeled `type:release`. | **Squash & Merge** within the branch.
Rebased onto **`main`** before final merge. |
+
+## Release Steps
+
+### 1. Cut Release Candidate
+
+```sh
+git checkout main && git pull # Ensure local main is up to date
+git checkout -b release-X.Y.Z # Create new release candidate branch
+git push -u origin release-X.Y.Z # Push RC branch to remote
+```
+
+### 2. Apply a Bugfix to RC
+
+1. Create a feature branch as usual.
+2. Open a GitHub PR targeting `release-X.Y.Z`.
+3. Review and approve as normal.
+4. Merge into the RC branch after review.
+
+### 3. Final Release
+
+```sh
+git checkout release-X.Y.Z && git pull # Ensure RC branch is up to date
+git tag vX.Y.Z # Create final release tag
+git push origin vX.Y.Z # Push tag to remote
+```
+
+### 4. Merge RC Back into Main
+
+```sh
+git checkout main
+git merge --ff-only release-X.Y.Z # Fast-forward main to include RC changes
+```
+
+## Merge Strategy
+
+1. **Squash & Merge** everywhere for atomic commits and clean history.
+
+2. While RC is open, periodically re-sync with main:
+
+ ```sh
+ git checkout release-X.Y.Z
+ git fetch origin
+ git rebase origin/main
+ ```
+
+ *This resolves conflicts early while keeping history linear.*
+
+3. Final merge back must be fast-forward only. If not possible, rebase the RC onto `main` before merging.
+
+## Versioning & Tags
+
+* Follows [Semantic Versioning](https://semver.org): `MAJOR.MINOR.PATCH`.
+* RC tags use `-rc.N`, e.g. `v1.8.0-rc.1`.
+
+## Roles
+
+| Role | Responsibility |
+| --------------------------------------- | ----------------------------------------------------------------- |
+| **Release Captain** (rotates per cycle) | Owns timeline, branch cut, tagging, merge-back. |
+| **PR Author** | Ensures tests pass; flags PR with `type:release` if needed in RC. |
+| **CI** | Blocks merges on failing tests or missing labels. |
+
+## FAQ
+
+### Do we ever merge main into the RC?
+
+No. Always rebase the RC onto `main` to preserve linear history.
+
+### Can we automate branch deletion?
+
+Not yet — merge-back and cleanup are manual.
+
+### How flexible is the timeline?
+
+Very flexible. QA and stabilization phases can be extended as needed for quality.
\ No newline at end of file