diff --git a/.github/workflows/nightly-tag-generation.yml b/.github/workflows/nightly-tag-generation.yml
new file mode 100644
index 000000000..ed879bcb2
--- /dev/null
+++ b/.github/workflows/nightly-tag-generation.yml
@@ -0,0 +1,83 @@
+name: Generate Nightly Tag
+
+on:
+ schedule:
+ - cron: '0 0 * * *' # Run daily at midnight UTC
+ workflow_dispatch: # Allow manual triggering for testing
+
+permissions:
+ contents: write
+
+jobs:
+ create-nightly-tag:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # Fetch all history for tags
+
+ - name: Configure Git
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+
+ - name: Generate nightly tag
+ run: |
+ # Get the latest infisical production tag
+ LATEST_STABLE_TAG=$(git tag --list | grep "^v[0-9].*$" | sort -V | tail -n1)
+
+ if [ -z "$LATEST_STABLE_TAG" ]; then
+ echo "No infisical production tags found, using v0.1.0"
+ LATEST_STABLE_TAG="v0.1.0"
+ fi
+
+ echo "Latest production tag: $LATEST_STABLE_TAG"
+
+ # Get current date in YYYYMMDD format
+ DATE=$(date +%Y%m%d)
+
+ # Base nightly tag name
+ BASE_TAG="${LATEST_STABLE_TAG}-nightly-${DATE}"
+
+ # Check if this exact tag already exists
+ if git tag --list | grep -q "^${BASE_TAG}$"; then
+ echo "Base tag ${BASE_TAG} already exists, finding next increment"
+
+ # Find existing tags for this date and get the highest increment
+ EXISTING_TAGS=$(git tag --list | grep "^${BASE_TAG}" | grep -E '\.[0-9]+$' || true)
+
+ if [ -z "$EXISTING_TAGS" ]; then
+ # No incremental tags exist, create .1
+ NIGHTLY_TAG="${BASE_TAG}.1"
+ else
+ # Find the highest increment
+ HIGHEST_INCREMENT=$(echo "$EXISTING_TAGS" | sed "s|^${BASE_TAG}\.||" | sort -n | tail -n1)
+ NEXT_INCREMENT=$((HIGHEST_INCREMENT + 1))
+ NIGHTLY_TAG="${BASE_TAG}.${NEXT_INCREMENT}"
+ fi
+ else
+ # Base tag doesn't exist, use it
+ NIGHTLY_TAG="$BASE_TAG"
+ fi
+
+ echo "Generated nightly tag: $NIGHTLY_TAG"
+ echo "NIGHTLY_TAG=$NIGHTLY_TAG" >> $GITHUB_ENV
+ echo "LATEST_PRODUCTION_TAG=$LATEST_STABLE_TAG" >> $GITHUB_ENV
+
+ git tag "$NIGHTLY_TAG"
+ git push origin "$NIGHTLY_TAG"
+ echo "✅ Created and pushed nightly tag: $NIGHTLY_TAG"
+
+ - name: Create GitHub Release
+ uses: softprops/action-gh-release@v2
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ env.NIGHTLY_TAG }}
+ name: ${{ env.NIGHTLY_TAG }}
+ draft: false
+ prerelease: true
+ generate_release_notes: true
+ make_latest: false
\ No newline at end of file
diff --git a/docs/docs.json b/docs/docs.json
index 960c41727..4a496bf77 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -303,6 +303,7 @@
},
"self-hosting/guides/upgrading-infisical",
"self-hosting/configuration/envars",
+ "self-hosting/guides/releases",
"self-hosting/configuration/requirements",
{
"group": "Guides",
diff --git a/docs/self-hosting/guides/releases.mdx b/docs/self-hosting/guides/releases.mdx
new file mode 100644
index 000000000..d85da1a78
--- /dev/null
+++ b/docs/self-hosting/guides/releases.mdx
@@ -0,0 +1,66 @@
+---
+title: "Release Channels"
+description: "Learn how to configure your deployment for different release schedules."
+---
+
+Infisical uses rolling release channels to deliver new features, security fixes, and improvements with different update frequencies.
+This system allows you to balance getting the latest features with maintaining stability in your deployment environment.
+
+## What are release channels?
+
+Release channels define different schedules under which Infisical makes new releases available for you to deploy.
+Each channel operates on its own cadence, allowing you to choose how frequently you want to update your self-hosted deployment while balancing access to the latest features with your organization's stability requirements.
+
+
+## Available Channels
+
+Infisical provides two distinct release channels with different update frequencies and stability profiles.
+
+
+
+ - **Update Frequency**: Daily builds during weekdays (Monday-Friday)
+ - **Version Tags**: `vX.Y.Z-nightly-YYYYMMDD` (e.g., `v0.146.0-nightly-20250423`)
+ - **Multiple Daily Builds**: If multiple nightly builds are created on the same day, they are numbered incrementally: `vX.Y.Z-nightly-YYYYMMDD.1`, `vX.Y.Z-nightly-YYYYMMDD.2`, etc.
+ - **Stability**: Latest features with standard CI/CD testing
+ - **Release Process**: Built from main branch after all automated tests pass
+ - **Intended Audience**: Development environments & early adopters
+
+ **Best for:**
+ - Organizations with flexible change management
+ - Teams that want to test new features before they are made available via stable release channel
+
+ **Characteristics:**
+ - Access to latest features immediately
+ - Faster security patch delivery
+ - Higher update frequency (daily)
+
+
+ - **Update Frequency**: Monthly releases (typically 1st Tuesday of each month)
+ - **Version Tags**: `vX.Y.Z` (e.g., `v0.145.0`, `v0.146.0`)
+ - **Stability**: Both code tested and production-proven releases
+ - **Release Process**: Features validated through nightly channel for 30+ days
+ - **Intended Audience**: Production environments, enterprise teams prioritizing stability
+
+ **Best for:**
+ - Enterprise environments with limited change windows
+ - Organizations requiring predictable release cycles
+ - Teams prioritizing stability and long-term support
+
+ **Characteristics:**
+ - Predictable monthly schedule
+ - Extensive testing and validation
+ - Production-proven features
+
+
+
+
+ Schedule Note: Target dates are approximate and subject to change based on critical issues, security updates, or maintenance requirements.
+
+
+## Staying up to date
+
+Track what features are available in each version across different sources:
+
+- **Released versions**: View detailed changelogs, new features, and breaking changes in our [GitHub Releases](https://github.com/Infisical/infisical/releases)
+- **Docker Image Versions**: Browse available container images and tags on [Docker Hub](https://hub.docker.com/r/infisical/infisical)
+- **Linux Package Releases**: Access downloadable packages and version history on our [Linux releases page](https://cloudsmith.io/~infisical/repos/infisical-core/packages/)