diff --git a/src/build_packages/build_packages.py b/src/build_packages/build_packages.py
new file mode 100644
index 0000000000000000000000000000000000000000..eef0b0a7689d7840a84e57deecf5ca3f555adc7d
--- /dev/null
+++ b/src/build_packages/build_packages.py
@@ -0,0 +1,30 @@
+import subprocess
+
+def get_pkgs():
+    """
+    Run a couple shell commands to parse the metadata directory for its packages.
+    :return: List of packages in metadata directory
+    """
+    find_proc = subprocess.Popen(["find", "metadata",
+                                  "-name", "meta.yaml"],
+                                 stdout=subprocess.PIPE)
+    return subprocess.check_output(["sed", "-e", "s:metadata/::",
+                                    "-e", "s:/meta.yaml::"],
+                                   stdin=find_proc.stdout).decode('utf-8').split('\n')
+
+class Recipe:
+    def __init__(self, buildout, name, options):
+        self.options = options
+        self.pkgs = get_pkgs()
+
+    def install(self):
+        # self.options.created()
+        pkg = self.options['name']
+
+        if pkg == "all":
+            for p in self.pkgs:
+                subprocess.run(["conda", "build", "metadata/{}".format(p)])
+        else:
+            subprocess.run(["conda", "build", "metadata/{}".format(pkg)])
+
+    update = install
\ No newline at end of file
diff --git a/src/build_packages/setup.py b/src/build_packages/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..50ef4f8bb515ff51da0830f19778a10031550ecf
--- /dev/null
+++ b/src/build_packages/setup.py
@@ -0,0 +1,8 @@
+from setuptools import setup
+
+setup(
+    name='build_packages',
+    version='0.1',
+    py_modules = ['build_packages'],
+    entry_points = {"zc.buildout": ["default=build_packages:Recipe"]},
+)
\ No newline at end of file