--- a
+++ b/scripts/qiita-private-launcher-slurm
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+# -----------------------------------------------------------------------------
+# Copyright (c) 2014--, The Qiita Development Team.
+#
+# Distributed under the terms of the BSD 3-clause License.
+#
+# The full license is in the file LICENSE, distributed with this software.
+# -----------------------------------------------------------------------------
+
+from subprocess import Popen, PIPE
+from datetime import datetime
+from tempfile import mkdtemp
+from os.path import join
+from os import environ
+
+import click
+
+SBATCHFILE = """#!/bin/bash
+#SBATCH -N=1
+#SBATCH -n=1
+#SBATCH --output=%s/slurm-output.txt
+#SBATCH --error=%s/slurm-error.txt
+
+# Commands to run
+echo $SLURM_JOBID
+%s
+"""
+
+
+@click.command()
+@click.argument('qiita_env', required=True, nargs=1)
+@click.argument('command', required=True, nargs=1)
+@click.argument('arguments', required=True, nargs=-1)
+def start(qiita_env, command, arguments):
+    """Starts the plugin environment"""
+    cmd = ['qiita-private', command]
+    cmd.extend(["'%s'" % arg for arg in arguments])
+    # When Popen executes, the shell is not in interactive mode,
+    # so it is not sourcing any of the bash configuration files
+    # We need to source it so the env_script are available
+    lines = [' '.join(cmd)]
+    datestr = datetime.now().strftime("%Y%m%d_%I%M%S.%f")
+    dirpath = mkdtemp(prefix=datestr,
+                      dir='/projects/qiita_data/working_dir/private-jobs/')
+    fp = join(dirpath, 'private')
+    with open(fp, 'w') as f:
+        f.write(SBATCHFILE % (dirpath, dirpath, "\n".join(lines)))
+
+    cmd = "sbatch %s" % fp
+
+    epilogue = environ.get('QIITA_JOB_SCHEDULER_EPILOGUE', '')
+    if epilogue:
+        cmd = f'{cmd} --epilog {epilogue}'
+
+    proc = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
+    stdout, stderr = proc.communicate()
+    if proc.returncode and proc.returncode != 0:
+        raise ValueError(
+            "Error launching internal task:\n\tStdout: %s\n\tStderr: %s"
+            % (stdout, stderr))
+
+
+if __name__ == '__main__':
+    start()