diff --git a/app/cli.py b/app/cli.py
new file mode 100644
index 0000000..d794548
--- /dev/null
+++ b/app/cli.py
@@ -0,0 +1,47 @@
+import click
+import subprocess as sp
+import os
+
+from app.helper import install_available
+
+
+@click.group()
+def cli():
+    pass
+
+
+@cli.command("setup")
+@click.option("--path", required=True)
+@click.option("--api_server", required=True)
+def setup(path, api_server):
+    os.chdir(path)
+
+    repo_name = "ucloud-cli"
+
+    # Clone main repo
+    sp.check_output(['git', 'clone', '--single-branch', '--branch', 'wip',
+                    f'https://code.ungleich.ch/ucloud/{repo_name}.git'])
+
+    # Create .env file
+    with open(os.path.join(repo_name, ".env"), "w") as f:
+        content = (
+            f"API_SERVER={api_server}\n"
+        )
+        f.writelines(content)
+
+    # Clone Common and Etcd Wrapper
+    # clone_common(path=repo_name)
+    # clone_etcd_wrapper(path=repo_name)
+
+    # Copy Etcd Wrapper inside ucloud_common as ucloud_common
+    # also needs etcd wrapper
+    # shutil.copytree(
+    #     src=os.path.join(repo_name, "etcd3_wrapper"),
+    #     dst=os.path.join(repo_name, "ucloud_common", "etcd3_wrapper"),
+    # )
+    
+    install_available(repo_name)
+    
+    # Create virtualenv with site-packages enabled and install all dependencies
+    # sp.check_output(['pipenv','--site-packages', '--three'], cwd=repo_name)
+    sp.check_output(['pipenv', 'install'], cwd=repo_name)
\ No newline at end of file