diff --git a/modules/gerritbot/files/gerritbot_channel_config.yaml b/modules/gerritbot/files/gerritbot_channel_config.yaml
index 0f73f5eeb1..5879442c51 100644
--- a/modules/gerritbot/files/gerritbot_channel_config.yaml
+++ b/modules/gerritbot/files/gerritbot_channel_config.yaml
@@ -874,3 +874,13 @@ congress:
       - stackforge/python-congressclient
     branches:
       - master
+
+git-upstream:
+    events:
+      - patchset-created
+      - change-merged
+      - x-vrif-minus-2
+    projects:
+      - stackforge/git-upstream
+    branches:
+      - master
diff --git a/modules/openstack_project/files/accessbot/channels.yaml b/modules/openstack_project/files/accessbot/channels.yaml
index 52ceed291b..ec385fd39f 100644
--- a/modules/openstack_project/files/accessbot/channels.yaml
+++ b/modules/openstack_project/files/accessbot/channels.yaml
@@ -54,6 +54,8 @@ channels:
     mask: full_mask
   - name: fuel-tracker
     mask: full_mask
+  - name: git-upstream
+    mask: full_mask
   - name: heat
   - name: magnetodb
     mask: full_mask
diff --git a/modules/openstack_project/files/gerrit/acls/stackforge/git-upstream.config b/modules/openstack_project/files/gerrit/acls/stackforge/git-upstream.config
new file mode 100644
index 0000000000..a7b2c86a75
--- /dev/null
+++ b/modules/openstack_project/files/gerrit/acls/stackforge/git-upstream.config
@@ -0,0 +1,13 @@
+[access "refs/heads/*"]
+abandon = group git-upstream-core
+label-Code-Review = -2..+2 group git-upstream-core
+label-Workflow = -1..+1 group git-upstream-core
+
+[access "refs/tags/*"]
+pushSignedTag = group git-upstream-ptl
+
+[receive]
+requireChangeId = true
+
+[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 0f730d13ed..e9c50120d1 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
@@ -684,6 +684,16 @@
       - pypi-jobs
 
 
+- project:
+    name: git-upstream
+    github-org: stackforge
+    node: 'bare-precise || bare-trusty'
+    tarball-site: tarballs.openstack.org
+
+    jobs:
+      - python-jobs
+
+
 - project:
     name: glance
     github-org: openstack
diff --git a/modules/openstack_project/files/review.projects.yaml b/modules/openstack_project/files/review.projects.yaml
index b153313d7b..a2f5cffa24 100644
--- a/modules/openstack_project/files/review.projects.yaml
+++ b/modules/openstack_project/files/review.projects.yaml
@@ -793,6 +793,9 @@
 - project: stackforge/gertty
   description: Console interface to Gerrit Code Review
   use-storyboard: true
+- project: stackforge/git-upstream
+  description: Staying close to latest from OpenStack through git-upstream
+  upstream: https://github.com/dguerri/git-upstream.git
 - project: stackforge/gnocchi
   description: A time series storage and resources index service.
   upstream: git://github.com/jd/gnocchi.git
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index 81380f78a2..f3585c2988 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -1698,6 +1698,14 @@ projects:
     gate:
       - noop
 
+  - name: stackforge/git-upstream
+    check:
+      - gate-git-upstream-pep8
+      - gate-git-upstream-python27
+    gate:
+      - gate-git-upstream-pep8
+      - gate-git-upstream-python27
+
   - name: stackforge/gerrit-dash-creator
     check:
       - noop