diff --git a/infra/autobump.pl b/infra/autobump.pl
new file mode 100755
index 0000000..bec2f82
--- /dev/null
+++ b/infra/autobump.pl
@@ -0,0 +1,120 @@
+#!/usr/bin/env perl
+
+# Contributors Listed Below - COPYRIGHT 2017
+# [+] International Business Machines Corp.
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+
+use strict;
+use File::Basename qw/basename/;
+
+my $metas_to_search = "meta-phosphor meta-openbmc-machines meta-openbmc-bsp";
+my $master_project = "openbmc";
+my $server = "https://gerrit.openbmc-project.xyz";
+
+system("cd $master_project && git fetch origin && git checkout origin/master");
+
+open(FILES, "cd $master_project && git grep -l -e \"_URI\" --and -e \"github\" -- $metas_to_search |");
+
+my @to_update = ();
+
+while(my $file = <FILES>)
+{
+    chomp $file;
+
+    my $entry = {};
+    $entry->{FILE} = "$file";
+    $entry->{BRANCH} = "master";
+
+    open(FILE, "$master_project/$entry->{FILE}");
+    while(my $line = <FILE>)
+    {
+        chomp $line;
+
+        if ($line =~ m/SRCREV ?.*=/)
+        {
+            if ($line =~ m/"([0-9a-f]*)"/)
+            {
+                $entry->{SRCREV} = $1;
+            }
+        }
+        elsif ($line =~ m/_URI/ and $line =~ m/github.com\/$master_project\//)
+        {
+            $line =~ s/.*$master_project\//$master_project\//;
+            $line =~ s/"//g;
+            $line =~ s/\.git$//;
+            $entry->{SRC_URI} = $line;
+            print "$file : $line\n";
+        }
+    }
+    close FILE;
+
+    if (exists $entry->{SRC_URI} and exists $entry->{SRCREV})
+    {
+        push @to_update, $entry;
+    }
+}
+
+foreach my $entry (@to_update)
+{
+    my $project = $entry->{SRC_URI};
+    $project =~ s/\//%2F/g;
+    my $revision =
+        `curl -s $server/projects/$project/branches/$entry->{BRANCH}  | \
+         grep revision`;
+
+    if (not $revision =~ m/revision/)
+    {
+        next;
+    }
+    if ($revision =~ m/$entry->{SRCREV}/)
+    {
+        print "$entry->{SRC_URI} is up to date @ $entry->{SRCREV}\n";
+        next;
+    }
+
+    $revision =~ m/"([0-9a-f]*)"/;
+    $revision = $1;
+
+    print "$entry->{SRC_URI} needs to be updated\n";
+    print "\t$entry->{SRCREV} -> $revision\n";
+
+    my $changeId = `echo autobump $entry->{FILE} $entry->{SRCREV} $revision | git hash-object -t blob --stdin`;
+    chomp $changeId;
+    $changeId =~ s/[ \t]*//;
+    $changeId = "I$changeId";
+
+    my $change =
+        `curl -s $server/changes/$master_project%2F$master_project~$entry->{BRANCH}~$changeId | \
+         grep change_id`;
+
+    if ($change =~ m/$changeId/)
+    {
+        print "\t$changeId already present.\n";
+        next;
+    }
+
+    system("cd $master_project && git checkout origin/master --force &&".
+            " sed -i \"s/$entry->{SRCREV}/$revision/\" $entry->{FILE} &&".
+            " git add $entry->{FILE}");
+
+    open(COMMIT, "| cd $master_project && git commit -s -F -");
+    print COMMIT (basename $entry->{FILE}).": bump version\n";
+    print COMMIT "\n";
+    print COMMIT "Change-Id: $changeId\n";
+    close(COMMIT);
+
+    system("cd $master_project && git push origin HEAD:refs/for/master/autobump");
+
+}
