diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..1e84c5c
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,53 @@
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+from __future__ import absolute_import
+
+from setuptools import setup
+
+
+def readme():
+    with open("README.rst") as f:
+        return f.read()
+
+
+def version():
+    with open("VERSION") as f:
+        return f.read().strip()
+
+
+def parse_requirements(filename):
+    # parse a requirements.txt file, allowing for blank lines and comments
+    requirements = []
+    for line in open(filename):
+        if line and not line.startswith("#"):
+            requirements.append(line)
+    return requirements
+
+
+setup(
+    name="cord_workflow_controller_client",
+    version=version(),
+    description="A client library for CORD Workflow Controller",
+    url="https://gerrit.opencord.org/gitweb?p=cord-workflow-controller-client.git",
+    long_description=readme(),
+    author="Illyoung Choi",
+    author_email="iychoi@opennetworking.org",
+    classifiers=["License :: OSI Approved :: Apache Software License"],
+    license="Apache v2",
+    packages=["cord_workflow_controller_client"],
+    package_dir={"cord_workflow_controller_client": "src/cord_workflow_controller_client"},
+    install_requires=parse_requirements("requirements.txt"),
+    include_package_data=True,
+)
