diff --git a/client/Dockerfile b/client/Dockerfile
index 6260697bdce674c6eb18751d72a64d37ad64bee6..ad1b4c1ec0d4efa740ed113a6f31dc11902ec105 100644
--- a/client/Dockerfile
+++ b/client/Dockerfile
@@ -17,13 +17,16 @@ COPY *.py \
      vos_storage /usr/bin/vos_cli/
 RUN chmod -R 755 /usr/bin/vos_cli
 
+# Copy bash-completion scripts
+COPY config/bash_completion/* /usr/share/bash-completion/completions/
+
 # Copy configuration file
 RUN mkdir -p /etc/vos_cli
 COPY config/vos_cli.conf /etc/vos_cli/
 RUN chmod -R 755 /etc/vos_cli
 
 # Set the PAH environment variable
-ENV PATH "$PATH:/usr/bin/vos_cli"    
+ENV PATH "$PATH:/usr/bin/vos_cli"
     
 # Run commands as 'client' user
 USER client
@@ -31,5 +34,10 @@ USER client
 # Set up a workdir for the container
 WORKDIR /home/client/
 
+# Source bash-completion scripts
+RUN echo ". /usr/share/bash-completion/completions/vos_data" >> .bashrc && \
+    echo ". /usr/share/bash-completion/completions/vos_job" >> .bashrc && \
+    echo ". /usr/share/bash-completion/completions/vos_storage" >> .bashrc
+    
 # Install python dependencies
 RUN pip3.9 install --no-cache-dir redis tabulate
diff --git a/client/config/bash_completion/vos_data b/client/config/bash_completion/vos_data
new file mode 100644
index 0000000000000000000000000000000000000000..9f7081a81cf150eb47546a12fa0edd794691a720
--- /dev/null
+++ b/client/config/bash_completion/vos_data
@@ -0,0 +1,14 @@
+_vos_data()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="cstore hstore"
+
+  if [[ ${cur} == ?store || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_data vos_data
diff --git a/client/config/bash_completion/vos_job b/client/config/bash_completion/vos_job
new file mode 100644
index 0000000000000000000000000000000000000000..614748b2568f057e93bd2d35aad2f4947c6df5f8
--- /dev/null
+++ b/client/config/bash_completion/vos_job
@@ -0,0 +1,20 @@
+_vos_job()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="info list results"
+
+  if [[ ${cur} == info || ${cur} == results || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+
+  if [[ ${prev} == list ]] ; then
+    status="completed error executing pending queued"
+    COMPREPLY=( $(compgen -W "${status}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_job vos_job
diff --git a/client/config/bash_completion/vos_storage b/client/config/bash_completion/vos_storage
new file mode 100644
index 0000000000000000000000000000000000000000..5156a621364ba7649fe6839b69a4d181712be22a
--- /dev/null
+++ b/client/config/bash_completion/vos_storage
@@ -0,0 +1,14 @@
+_vos_storage()
+{
+  local cur prev opts
+  COMPREPLY=()
+  cur="${COMP_WORDS[COMP_CWORD]}"
+  prev="${COMP_WORDS[COMP_CWORD-1]}"
+  opts="add del list"
+
+  if [[ ${cur} == add || ${cur} == del || ${cur} == list || ${COMP_CWORD} -eq 1 ]] ; then
+    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+    return 0
+  fi
+}
+complete -F _vos_storage vos_storage