diff --git a/modules/openstack_project/files/gerrit/acls/stackforge/cliff.config b/modules/openstack_project/files/gerrit/acls/stackforge/cliff.config
new file mode 100644
index 0000000000..47b85354f0
--- /dev/null
+++ b/modules/openstack_project/files/gerrit/acls/stackforge/cliff.config
@@ -0,0 +1,14 @@
+[access "refs/heads/*"]
+        label-Code-Review = -2..+2 group cliff-core
+        label-Approved = +0..+1 group cliff-core
+        workInProgress = group cliff-core
+[access "refs/tags/*"]
+        create = group cliff-ptl
+        pushTag = group cliff-ptl
+[project]
+        state = active
+[receive]
+        requireChangeId = true
+        requireContributorAgreement = false
+[submit]
+        mergeContent = true
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
index 8260537777..30daf9891f 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
@@ -1650,6 +1650,17 @@
       - pypi-jobs
       - hook-{name}-rtfd
 
+- project:
+    name: cliff
+    github-org: stackforge
+    node: precise
+    tarball-site: tarballs.openstack.org
+
+    jobs:
+      - python-jobs
+      - pypi-jobs
+      - hook-{name}-rtfd
+
 - project:
     name: python-tuskarclient
     github-org: openstack
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index 441a2eec37..72ef6ec185 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -3863,6 +3863,33 @@ projects:
           - post-mirror-python33
       - hook-stevedore-rtfd
 
+  - name: stackforge/cliff
+    check:
+      - gate-cliff-pep8
+      - gate-cliff-python26
+      - gate-cliff-python27
+      - gate-cliff-python33
+      - gate-cliff-pypy
+    gate:
+      - gate-cliff-pep8
+      - gate-cliff-python26
+      - gate-cliff-python27
+      - gate-cliff-python33
+      - gate-cliff-pypy
+    post:
+      - cliff-branch-tarball
+      - hook-cliff-rtfd
+    pre-release:
+      - cliff-tarball
+      - hook-cliff-rtfd
+    release:
+      - cliff-tarball:
+        - cliff-pypi-upload:
+          - post-mirror-python26
+          - post-mirror-python27
+          - post-mirror-python33
+      - hook-cliff-rtfd
+
   - name: openstack-infra/groups
     check:
       - gate-noop
diff --git a/modules/openstack_project/templates/review.projects.yaml.erb b/modules/openstack_project/templates/review.projects.yaml.erb
index 581af88e24..dc5b72927c 100644
--- a/modules/openstack_project/templates/review.projects.yaml.erb
+++ b/modules/openstack_project/templates/review.projects.yaml.erb
@@ -632,3 +632,7 @@
   upstream: git://github.com/dreamhost/stevedore.git
 - project: stackforge/entropy
   description: A framework for Audit/Repair scripts for openstack
+- project: stackforge/cliff
+  description: Command Line Interface Formulation Framework
+  upstream: git://github.com/dreamhost/cliff.git
+  launchpad: python-cliff