diff --git a/docs/get-started/index.md b/docs/get-started/index.md
index cc2dd4610e18a02d1d2be17bc24e36cec0401384..8704f0436a95c7aa457d18679ca1a5d9942781b7 100644
--- a/docs/get-started/index.md
+++ b/docs/get-started/index.md
@@ -186,7 +186,7 @@ tk create kustomization webapp-frontend \
 Push changes to origin:
 
 ```sh
-git add -A && git commit -m "add webapp" && git push
+git add -A && git commit -m "add dev webapp" && git push
 ```
 
 In about 30s the synchronization should start:
@@ -214,3 +214,115 @@ service/backend    ClusterIP   10.52.10.22   <none>        9898/TCP,9999/TCP   4
 service/frontend   ClusterIP   10.52.9.85    <none>        80/TCP              3m31s
 ```
 
+## Production workflow
+
+On production clusters, you may wish to deploy stable releases of an application.
+When creating a git source instead of a branch, you can specify a git tag or a semver expression. 
+
+Change your kubectl context to a different cluster and run the bootstrap for the production environment:
+
+```sh
+tk bootstrap github \
+  --owner=$GITHUB_USER \
+  --repository=fleet-infra \
+  --path=prod-cluster \
+  --personal
+```
+
+Pull the changes locally:
+
+```sh
+git pull
+```
+
+Create a git source using a semver range to target stable releases:
+
+```sh
+tk create source git webapp \
+  --url=https://github.com/stefanprodan/podinfo \
+  --tag-semver=">=4.0.0 <4.0.2" \
+  --interval=30s \
+  --export > ./prod-cluster/webapp-source.yaml
+```
+
+Create a kustomization for webapp pointing to the production overlay:
+
+```sh
+tk create kustomization webapp \
+  --source=webapp \
+  --path="./deploy/overlays/production" \
+  --prune=true \
+  --validate=client \
+  --interval=10m \
+  --health-check="Deployment/frontend.production" \
+  --health-check="Deployment/backend.production" \
+  --health-check-timeout=2m \
+  --export > ./prod-cluster/webapp-production.yaml
+``` 
+
+Push changes to origin:
+
+```sh
+git add -A && git commit -m "add prod webapp" && git push
+```
+
+List git sources:
+
+```text
+$ tk get sources git
+
+✔ gitops-system last fetched revision master/99072ee132abdead8b7799d7891eae2f524eb73d
+✔ webapp last fetched revision 4.0.1/113360052b3153e439a0cf8de76b8e3d2a7bdf27
+```
+
+The kubectl equivalent is `kubectl -n gitops-system get gitrepositories`.
+
+List kustomization:
+
+```text
+$ tk get kustomizations
+
+✔ gitops-system last applied revision master/99072ee132abdead8b7799d7891eae2f524eb73d
+✔ webapp last applied revision 4.0.1/113360052b3153e439a0cf8de76b8e3d2a7bdf27
+```
+
+The kubectl equivalent is `kubectl -n gitops-system get kustomizations`.
+
+If you want to upgrade to the latest 4.x version, you can change the semver expression to:
+
+```sh
+tk create source git webapp \
+  --url=https://github.com/stefanprodan/podinfo \
+  --tag-semver=">=4.0.0 <5.0.0" \
+  --interval=30s \
+  --export > ./prod-cluster/webapp-source.yaml
+
+git add -A && git commit -m "update prod webapp" && git push
+```
+
+Trigger a git sync:
+
+```text
+$ tk sync ks gitops-system --with-source 
+
+► annotating source gitops-system
+✔ source annotated
+◎ waiting for git sync
+✔ git sync completed
+✔ fetched revision master/d751ea264d48bf0db8b588d1d08184834ac8fec9
+◎ waiting for kustomization sync
+✔ kustomization sync completed
+✔ applied revision master/d751ea264d48bf0db8b588d1d08184834ac8fec9
+```
+
+The kubectl equivalent is `kubectl -n gitops-system annotate gitrepository/gitops-system source.fluxcd.io/syncAt="$(date +%s)"`.
+
+Wait for the webapp to be upgraded:
+
+```text
+$ watch tk get kustomizations
+
+✔ gitops-system last applied revision master/d751ea264d48bf0db8b588d1d08184834ac8fec9
+✔ webapp last applied revision 4.0.5/f43f9b2eb6766e07f318d266a99d2ec7c940b0cf
+```
+