diff --git a/ci/rpm/test_daos_node.sh b/ci/rpm/test_daos_node.sh
index fbf3e1581b9..3a25b137624 100755
--- a/ci/rpm/test_daos_node.sh
+++ b/ci/rpm/test_daos_node.sh
@@ -1,10 +1,19 @@
 #!/bin/bash
 
 set -uex
-sudo yum -y install --exclude ompi daos{,-client}-"${DAOS_PKG_VERSION}"
+sudo yum -y install --exclude ompi,libpmemobj,argobots,spdk \
+     daos-client-"${DAOS_PKG_VERSION}"
+if rpm -q daos-server; then
+  echo "daos-server RPM should not be installed as a dependency of daos-client"
+  exit 1
+fi
 sudo yum -y history rollback last-1
-sudo yum -y install --exclude ompi daos{,-{server,client}}-"${DAOS_PKG_VERSION}"
-sudo yum -y install --exclude ompi daos{,-tests}-"${DAOS_PKG_VERSION}"
+sudo yum -y install --exclude ompi daos-server-"${DAOS_PKG_VERSION}"
+if rpm -q daos-client; then
+  echo "daos-client RPM should not be installed as a dependency of daos-server"
+  exit 1
+fi
+sudo yum -y install --exclude ompi daos-tests-"${DAOS_PKG_VERSION}"
 
 me=$(whoami)
 for dir in server agent; do
diff --git a/debian/changelog b/debian/changelog
index 6ff5d99a046..02370a67471 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+daos (1.3.0-8) unstable; urgency=medium
+  [ Jeff Olivier ]
+  * Remove client dependencies on PMDK, SPDK, and argobots
+
+ -- Jeff Olivier <jeffrey.v.olivier@intel.com>  Wed, 14 Apr 2021 13:27:00 -0400
+
 daos (1.3.0-7) unstable; urgency=medium
   [ Brian J. Murrell ]
   * Update Argobots to 1.1
diff --git a/debian/daos-client.dirs b/debian/daos-client.dirs
index e08ab094e90..63cd787bf48 100644
--- a/debian/daos-client.dirs
+++ b/debian/daos-client.dirs
@@ -4,7 +4,6 @@ usr/lib64
 usr/lib64/daos
 usr/lib64/python3/site-packages/pydaos
 usr/lib64/python3/site-packages/pydaos/raw
-usr/lib64/python3/site-packages/storage_estimator
 usr/share/daos/daos
 usr/lib/systemd/system
-usr/share/man/man8
\ No newline at end of file
+usr/share/man/man8
diff --git a/debian/daos-client.install b/debian/daos-client.install
index bf29a5cd080..cf81e1dc1ec 100644
--- a/debian/daos-client.install
+++ b/debian/daos-client.install
@@ -5,16 +5,13 @@ usr/bin/daos_agent
 usr/bin/dfuse
 usr/bin/daos
 usr/bin/dfuse_hl
-usr/bin/daos_storage_estimator.py
 usr/lib64/libdfs.so
 usr/lib64/daos/API_VERSION
 usr/lib64/libduns.so
 usr/lib64/libdfuse.so
 usr/lib64/libioil.so
 usr/lib64/libdfs_internal.so
-usr/lib64/libvos_size.so
 usr/lib64/python3/site-packages/pydaos/*.py
-usr/lib64/python3/site-packages/storage_estimator/*.py
 usr/lib64/python3/site-packages/pydaos/pydaos_shim.so
 usr/lib64/python3/site-packages/pydaos/raw/*.py
 usr/share/daos/ioil-ld-opts
@@ -22,4 +19,4 @@ etc/daos/daos_agent.yml
 etc/daos/daos_control.yml
 usr/lib/systemd/system/daos_agent.service
 usr/share/man/man8/daos.8*
-usr/share/man/man8/dmg.8*
\ No newline at end of file
+usr/share/man/man8/dmg.8*
diff --git a/debian/daos-server.dirs b/debian/daos-server.dirs
index 4496027ad22..5b1f0eff7cb 100644
--- a/debian/daos-server.dirs
+++ b/debian/daos-server.dirs
@@ -4,4 +4,5 @@ etc/daos/certs/clients
 usr/bin
 usr/lib64/daos_srv
 usr/share/daos/control
-usr/lib/systemd/system
\ No newline at end of file
+usr/lib/systemd/system
+usr/lib64/python3/site-packages/storage_estimator
diff --git a/debian/daos-server.install b/debian/daos-server.install
index 91e55b24bd5..94c151615f3 100644
--- a/debian/daos-server.install
+++ b/debian/daos-server.install
@@ -1,6 +1,7 @@
 etc/daos/daos_server.yml
 etc/daos/daos_server.yml
 etc/ld.so.conf.d/daos.conf
+etc/daos/vos_size_input.yaml
 # set daos_admin to be setuid root and group daos_server in order to perform privileged tasks
 usr/bin/daos_admin
 # set daos_server to be setgid daos_server in order to invoke daos_admin
@@ -17,5 +18,11 @@ usr/lib64/daos_srv/librebuild.so
 usr/lib64/daos_srv/librsvc.so
 usr/lib64/daos_srv/libsecurity.so
 usr/lib64/daos_srv/libvos_srv.so
+usr/lib64/daos_srv/libvos_size.so
+usr/lib64/daos_srv/libvos.so
+usr/lib64/daos_srv/libbio.so
+usr/lib64/libdaos_common_pmem.so
 usr/share/daos/control/setup_spdk.sh
 usr/lib/systemd/system/daos_server.service
+usr/bin/daos_storage_estimator.py
+usr/lib64/python3/site-packages/storage_estimator/*.py
diff --git a/debian/daos-tests.install b/debian/daos-tests.install
index acd180a0eee..bc9de6f61ff 100644
--- a/debian/daos-tests.install
+++ b/debian/daos-tests.install
@@ -20,10 +20,16 @@ usr/bin/daos_perf
 usr/bin/daos_racer
 usr/bin/evt_ctl
 usr/bin/obj_ctl
+usr/bin/io_conf
+usr/bin/jump_pl_map
+usr/bin/ring_pl_map
+usr/bin/pl_bench
+usr/bin/rdbt
 usr/bin/daos_gen_io_conf
 usr/bin/daos_run_io_conf
 usr/bin/crt_launch
 usr/bin/fault_status
+usr/lib64/libdaos_tests.so
 usr/lib64/libdts.so
 etc/daos/fault-inject-cart.yaml
 # For avocado tests
diff --git a/debian/daos.install b/debian/daos.install
index a93b08f34e4..8e0509c5740 100644
--- a/debian/daos.install
+++ b/debian/daos.install
@@ -1,22 +1,8 @@
-# you might think libvio.so goes in the server RPM but
-# the 2 tools following it need it
-usr/lib64/daos_srv/libbio.so
-# you might think libdaos_tests.so goes in the tests RPM but
-# the 4 tools following it need it
-usr/lib64/libdaos_tests.so
-usr/bin/io_conf
-usr/bin/jump_pl_map
-usr/bin/ring_pl_map
-usr/bin/pl_bench
-usr/bin/rdbt
-usr/lib64/libvos.so
 usr/lib64/libdaos_common.so
 etc/daos/memcheck-cart.supp
-etc/daos/vos_size_input.yaml
 # TODO: this should move from daos_srv to daos
 usr/lib64/daos_srv/libplacement.so
 # Certificate generation files
 usr/lib64/daos/certgen/*
 usr/lib64/daos/VERSION
 etc/bash_completion.d/daos.bash
-usr/lib64/libdaos_common_pmem.so
diff --git a/src/cart/SConscript b/src/cart/SConscript
index 5318b5257a3..ab20a82dda2 100644
--- a/src/cart/SConscript
+++ b/src/cart/SConscript
@@ -75,7 +75,7 @@ def scons():
         env.Install(os.path.join('$PREFIX', 'include', 'cart'),
                     os.path.join('../include', 'cart', header))
 
-    denv = env.Clone()
+    denv = env.Clone(LIBS=[])
 
     denv.AppendUnique(LIBS=['gurt'])
     prereqs.require(denv, 'mercury')
diff --git a/src/client/SConscript b/src/client/SConscript
index 3c1aa9e58b8..9505028669f 100644
--- a/src/client/SConscript
+++ b/src/client/SConscript
@@ -9,7 +9,6 @@ def scons():
     SConscript('dfs/SConscript')
     SConscript('dfuse/SConscript')
     SConscript('pydaos/SConscript')
-    SConscript('storage_estimator/SConscript')
 
 if __name__ == "SCons.Script":
     scons()
diff --git a/src/placement/SConscript b/src/placement/SConscript
index 56180511849..cc877095f25 100644
--- a/src/placement/SConscript
+++ b/src/placement/SConscript
@@ -11,15 +11,16 @@ def scons():
 
     denv = env.Clone()
 
-    denv.AppendUnique(LIBS=['isal'])
+    libraries = ['isal']
 
     # Common placement code
     common_tgts = denv.SharedObject(['pl_map.c', 'ring_map.c',
                                      'jump_map.c', 'pl_map_common.c'])
 
     # generate server module
+    print("libs = %s" % denv.subst("$LIBS"))
     srv = daos_build.library(denv, 'placement', common_tgts,
-                             install_off="../..")
+                             install_off="../..", LIBS=libraries)
     denv.Install('$PREFIX/lib64/daos_srv', srv)
 
     # placement client library
diff --git a/src/tests/suite/SConscript b/src/tests/suite/SConscript
index 010276d9a82..55a8ff2df01 100644
--- a/src/tests/suite/SConscript
+++ b/src/tests/suite/SConscript
@@ -79,7 +79,7 @@ def scons():
     """Execute build"""
     Import('denv')
 
-    libraries = ['daos_common_pmem', 'daos', 'dfs', 'daos_tests', 'gurt',
+    libraries = ['daos', 'dfs', 'daos_tests', 'gurt',
                  'cart']
     libraries += ['uuid', 'dfs', 'cmocka', 'pthread', 'isal']
 
@@ -107,12 +107,12 @@ def scons():
                     daos_aggregate_ec.c daos_degrade_ec.c
                     daos_extend_simple.c""")
     daostest = daos_build.program(newenv, 'daos_test', c_files + daos_test_tgt,
-                                  LIBS=libraries)
+                                  LIBS=['daos_common'] + libraries)
 
     c_files = Split("""dfs_unit_test.c dfs_par_test.c dfs_test.c""")
     newenv.AppendUnique(CPPPATH=["#/src/client/dfs"])
     dfstest = daos_build.program(newenv, 'dfs_test', c_files + daos_test_tgt,
-                                 LIBS=libraries)
+                                 LIBS=['daos_common'] + libraries)
 
     denv.Install('$PREFIX/bin/', daostest)
     denv.Install('$PREFIX/bin/', dfstest)
diff --git a/src/utils/SConscript b/src/utils/SConscript
index 39e24964ce1..cdc5ffd7a5b 100644
--- a/src/utils/SConscript
+++ b/src/utils/SConscript
@@ -4,7 +4,7 @@ Import('env')
 
 def scons():
     """Execute build"""
-    libs = ['daos', 'daos_common_pmem', 'uuid', 'dfs', 'duns', 'gurt', 'cart']
+    libs = ['daos', 'daos_common', 'uuid', 'dfs', 'duns', 'gurt', 'cart']
 
     denv = env.Clone()
 
diff --git a/src/utils/crt_launch/SConscript b/src/utils/crt_launch/SConscript
index b423a4d9996..2116f901c09 100644
--- a/src/utils/crt_launch/SConscript
+++ b/src/utils/crt_launch/SConscript
@@ -30,7 +30,7 @@ def scons():
     tenv.AppendUnique(LIBPATH=['#/src/cart'])
     tenv.AppendUnique(FLAGS='-pthread')
 
-    crt_launch = daos_build.program(tenv, CRT_LAUNCH)
+    crt_launch = daos_build.program(tenv, CRT_LAUNCH, LIBS=libs)
 
     tenv.Requires(crt_launch, [cart_lib, gurt_lib])
     tenv.Install(os.path.join("$PREFIX", 'bin'), crt_launch)
diff --git a/src/utils/ctl/SConscript b/src/utils/ctl/SConscript
index b9835136737..9f3641416e1 100644
--- a/src/utils/ctl/SConscript
+++ b/src/utils/ctl/SConscript
@@ -14,7 +14,7 @@ def scons():
     """scons function"""
     Import('env', 'prereqs', 'cart_lib', 'gurt_lib')
 
-    tenv = env.Clone()
+    tenv = env.Clone(LIBS=[])
     tenv.AppendUnique(CPPPATH=['#/src/cart', '#/src/tests/ftest/cart'])
     tenv.AppendUnique(LIBS=['cart', 'gurt', 'pthread'])
     prereqs.require(tenv, 'mercury')
diff --git a/src/utils/self_test/SConscript b/src/utils/self_test/SConscript
index e7e9956996f..263d9f86800 100644
--- a/src/utils/self_test/SConscript
+++ b/src/utils/self_test/SConscript
@@ -15,9 +15,8 @@ def scons():
 
     Import('env', 'prereqs', 'cart_lib', 'gurt_lib')
 
-    tenv = env.Clone()
+    tenv = env.Clone(LIBS=[])
 
-    prereqs.require(tenv, 'pmdk')
     tenv.AppendUnique(CPPPATH=['#/src/cart', '#/src/tests/ftest/cart'])
     tenv.AppendUnique(LIBS=['cart', 'gurt', 'pthread', 'm'])
     prereqs.require(tenv, 'mercury')
diff --git a/src/vos/SConscript b/src/vos/SConscript
index fdd20f2b807..21376d2bb1b 100644
--- a/src/vos/SConscript
+++ b/src/vos/SConscript
@@ -16,11 +16,9 @@ def build_vos(env, standalone):
     if standalone:
         denv.Append(CPPDEFINES={'VOS_STANDALONE' : '1'})
         denv.Append(OBJPREFIX="s_")
-        install = 'lib64'
-        offset = ".."
+        offset = "../../"
         libname = 'vos'
     else:
-        install = 'lib64/daos_srv'
         libname = 'vos_srv'
         offset = "../.."
 
@@ -31,9 +29,9 @@ def build_vos(env, standalone):
         #profiling tools will point at preprocessed file lines.
         files = denv.Preprocess(FILES)
 
-    vos = daos_build.library(denv, libname, files, install_off=offset,
+    vos = daos_build.library(denv, libname, files, install_off='../..',
                              LIBS=['vea'])
-    denv.Install('$PREFIX/' + install, vos)
+    denv.Install('$PREFIX/lib64/daos_srv', vos)
 
 def build_vos_internal(env):
     """build vos internal"""
@@ -42,12 +40,13 @@ def build_vos_internal(env):
     libraries = ['vos', 'bio', 'abt', 'daos_common_pmem', 'gurt']
 
     # Add runtime paths for daos libraries
-    denv.AppendUnique(LINKFLAGS=[r'-Wl,-rpath=\$$ORIGIN/daos_srv'])
+    denv.AppendUnique(RPATH_FULL=['$PREFIX/lib64/daos_srv'])
+
 
     vos_size = daos_build.library(denv, 'vos_size', ['vos_size.c'],
-                                  LIBS=libraries)
+                                  LIBS=libraries, install_off='../..')
 
-    denv.Install('$PREFIX/lib64/', vos_size)
+    denv.Install('$PREFIX/lib64/daos_srv', vos_size)
 
 def scons():
     """Execute build"""
@@ -67,6 +66,7 @@ def scons():
     build_vos_internal(denv)
 
     SConscript('tests/SConscript', exports='denv')
+    SConscript('storage_estimator/SConscript')
 
 if __name__ == "SCons.Script":
     scons()
diff --git a/src/client/storage_estimator/README.md b/src/vos/storage_estimator/README.md
similarity index 100%
rename from src/client/storage_estimator/README.md
rename to src/vos/storage_estimator/README.md
diff --git a/src/client/storage_estimator/SConscript b/src/vos/storage_estimator/SConscript
similarity index 100%
rename from src/client/storage_estimator/SConscript
rename to src/vos/storage_estimator/SConscript
diff --git a/src/client/storage_estimator/common/__init__.py b/src/vos/storage_estimator/common/__init__.py
similarity index 100%
rename from src/client/storage_estimator/common/__init__.py
rename to src/vos/storage_estimator/common/__init__.py
diff --git a/src/client/storage_estimator/common/dfs_sb.py b/src/vos/storage_estimator/common/dfs_sb.py
similarity index 99%
rename from src/client/storage_estimator/common/dfs_sb.py
rename to src/vos/storage_estimator/common/dfs_sb.py
index 72fd4b7f8e9..4e4e7dfbd22 100644
--- a/src/client/storage_estimator/common/dfs_sb.py
+++ b/src/vos/storage_estimator/common/dfs_sb.py
@@ -246,7 +246,7 @@ def _load_lib(self, lib_name):
 
 class VOS_SIZE(BASE_CLASS):
     def __init__(self):
-        super().__init__('libvos_size.so')
+        super().__init__('daos_srv/libvos_size.so')
         self._data = STR_BUFFER()
 
     def __del__(self):
diff --git a/src/client/storage_estimator/common/explorer.py b/src/vos/storage_estimator/common/explorer.py
similarity index 100%
rename from src/client/storage_estimator/common/explorer.py
rename to src/vos/storage_estimator/common/explorer.py
diff --git a/src/client/storage_estimator/common/parse_csv.py b/src/vos/storage_estimator/common/parse_csv.py
similarity index 100%
rename from src/client/storage_estimator/common/parse_csv.py
rename to src/vos/storage_estimator/common/parse_csv.py
diff --git a/src/client/storage_estimator/common/tests/__init__.py b/src/vos/storage_estimator/common/tests/__init__.py
similarity index 100%
rename from src/client/storage_estimator/common/tests/__init__.py
rename to src/vos/storage_estimator/common/tests/__init__.py
diff --git a/src/client/storage_estimator/common/tests/pytest.ini b/src/vos/storage_estimator/common/tests/pytest.ini
similarity index 100%
rename from src/client/storage_estimator/common/tests/pytest.ini
rename to src/vos/storage_estimator/common/tests/pytest.ini
diff --git a/src/client/storage_estimator/common/tests/storage_estimator.sh b/src/vos/storage_estimator/common/tests/storage_estimator.sh
similarity index 100%
rename from src/client/storage_estimator/common/tests/storage_estimator.sh
rename to src/vos/storage_estimator/common/tests/storage_estimator.sh
diff --git a/src/client/storage_estimator/common/tests/storage_estimator_test.py b/src/vos/storage_estimator/common/tests/storage_estimator_test.py
similarity index 100%
rename from src/client/storage_estimator/common/tests/storage_estimator_test.py
rename to src/vos/storage_estimator/common/tests/storage_estimator_test.py
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data.csv b/src/vos/storage_estimator/common/tests/test_files/test_data.csv
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data.csv
rename to src/vos/storage_estimator/common/tests/test_files/test_data.csv
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_16p2gx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_16p2gx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_16p2gx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_16p2gx.yaml
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_3gx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_3gx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_3gx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_3gx.yaml
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_big_16p2gx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_big_16p2gx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_big_16p2gx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_big_16p2gx.yaml
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_big_3gx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_big_3gx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_big_3gx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_big_3gx.yaml
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_big_sx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_big_sx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_big_sx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_big_sx.yaml
diff --git a/src/client/storage_estimator/common/tests/test_files/test_data_sx.yaml b/src/vos/storage_estimator/common/tests/test_files/test_data_sx.yaml
similarity index 100%
rename from src/client/storage_estimator/common/tests/test_files/test_data_sx.yaml
rename to src/vos/storage_estimator/common/tests/test_files/test_data_sx.yaml
diff --git a/src/client/storage_estimator/common/tests/util.py b/src/vos/storage_estimator/common/tests/util.py
similarity index 100%
rename from src/client/storage_estimator/common/tests/util.py
rename to src/vos/storage_estimator/common/tests/util.py
diff --git a/src/client/storage_estimator/common/util.py b/src/vos/storage_estimator/common/util.py
similarity index 100%
rename from src/client/storage_estimator/common/util.py
rename to src/vos/storage_estimator/common/util.py
diff --git a/src/client/storage_estimator/common/vos_size.py b/src/vos/storage_estimator/common/vos_size.py
similarity index 100%
rename from src/client/storage_estimator/common/vos_size.py
rename to src/vos/storage_estimator/common/vos_size.py
diff --git a/src/client/storage_estimator/common/vos_structures.py b/src/vos/storage_estimator/common/vos_structures.py
similarity index 100%
rename from src/client/storage_estimator/common/vos_structures.py
rename to src/vos/storage_estimator/common/vos_structures.py
diff --git a/src/client/storage_estimator/daos_storage_estimator.py b/src/vos/storage_estimator/daos_storage_estimator.py
similarity index 100%
rename from src/client/storage_estimator/daos_storage_estimator.py
rename to src/vos/storage_estimator/daos_storage_estimator.py
diff --git a/src/vos/vos_common.c b/src/vos/vos_common.c
index 4ad6ba29f78..71a6bbcddc3 100644
--- a/src/vos/vos_common.c
+++ b/src/vos/vos_common.c
@@ -336,7 +336,8 @@ vos_tls_fini(void *data)
 		d_uhash_destroy(tls->vtl_cont_hhash);
 
 	umem_fini_txd(&tls->vtl_txd);
-	vos_ts_table_free(&tls->vtl_ts_table);
+	if (tls->vtl_ts_table)
+		vos_ts_table_free(&tls->vtl_ts_table);
 	D_FREE(tls);
 }
 
diff --git a/utils/rpms/daos.spec b/utils/rpms/daos.spec
index 1a54661eb34..fa97c78c1fd 100644
--- a/utils/rpms/daos.spec
+++ b/utils/rpms/daos.spec
@@ -8,7 +8,7 @@
 
 Name:          daos
 Version:       1.3.0
-Release:       10%{?relval}%{?dist}
+Release:       11%{?relval}%{?dist}
 Summary:       DAOS Storage Engine
 
 License:       BSD-2-Clause-Patent
@@ -103,11 +103,6 @@ BuildRequires: libpsm_infinipath1
 %endif
 %endif
 %endif
-%if (0%{?suse_version} >= 1500)
-Requires: libpmem1 >= 1.8, libpmemobj1 >= 1.8
-%else
-Requires: libpmem >= 1.8, libpmemobj >= 1.8
-%endif
 Requires: protobuf-c
 Requires: openssl
 # This should only be temporary until we can get a stable upstream release
@@ -129,14 +124,15 @@ to optimize performance and cost.
 %package server
 Summary: The DAOS server
 Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: %{name}-client%{?_isa} = %{version}-%{release}
 Requires: spdk-tools
 Requires: ndctl
 # needed to set PMem configuration goals in BIOS through control-plane
 %if (0%{?suse_version} >= 1500)
 Requires: ipmctl < 02.00.00.3809
+Requires: libpmem1 >= 1.8, libpmemobj1 >= 1.8
 %else
 Requires: ipmctl > 02.00.00.3816
+Requires: libpmem >= 1.8, libpmemobj >= 1.8
 %endif
 Requires: hwloc
 Requires: mercury = %{mercury_version}
@@ -170,7 +166,12 @@ This is the package needed to run a DAOS client
 
 %package tests
 Summary: The DAOS test suite
+#This is a bit messy and needs some cleanup.  In theory,
+#we should have client tests and server tests in separate
+#packages but some binaries need libraries from both at
+#present.
 Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
 %if (0%{?rhel} >= 7)
 Requires: python36
 Requires: python36-distro
@@ -198,7 +199,6 @@ This is the package needed to run the DAOS test suite
 # Requires: libdaos.so.0()(64bit)
 %if (0%{?suse_version} >= 1500)
 Requires: %{name}-client%{?_isa} = %{version}-%{release}
-Requires: %{name}%{?_isa} = %{version}-%{release}
 %endif
 Summary: The DAOS development libraries and headers
 
@@ -207,7 +207,6 @@ This is the package needed to build software with the DAOS library.
 
 %package firmware
 Summary: The DAOS firmware management helper
-Requires: %{name}%{?_isa} = %{version}-%{release}
 Requires: %{name}-server%{?_isa} = %{version}-%{release}
 
 %description firmware
@@ -293,28 +292,15 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
 
 %files
 %defattr(-, root, root, -)
-# you might think libvio.so goes in the server RPM but
-# the 2 tools following it need it
-%{_libdir}/daos_srv/libbio.so
-# you might think libdaos_tests.so goes in the tests RPM but
-# the 4 tools following it need it
-%{_libdir}/libdaos_tests.so
 %{_sysconfdir}/ld.so.conf.d/daos.conf
-%{_bindir}/io_conf
-%{_bindir}/jump_pl_map
-%{_bindir}/ring_pl_map
-%{_bindir}/pl_bench
-%{_bindir}/rdbt
-%{_libdir}/libvos.so
 %{_libdir}/libcart*
 %{_libdir}/libgurt*
 %{_sysconfdir}/daos/memcheck-cart.supp
 %dir %{_sysconfdir}/daos
-%{_sysconfdir}/daos/vos_size_input.yaml
 %dir %{_sysconfdir}/bash_completion.d
 %{_sysconfdir}/bash_completion.d/daos.bash
 %{_libdir}/libdaos_common.so
-%{_libdir}/libdaos_common_pmem.so
+%{_libdir}/*.so.*
 # TODO: this should move from daos_srv to daos
 %{_libdir}/daos_srv/libplacement.so
 # Certificate generation files
@@ -348,6 +334,18 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
 %{_libdir}/daos_srv/librsvc.so
 %{_libdir}/daos_srv/libsecurity.so
 %{_libdir}/daos_srv/libvos_srv.so
+%{_libdir}/daos_srv/libvos_size.so
+%{_libdir}/daos_srv/libvos.so
+%{_libdir}/daos_srv/libbio.so
+%{_libdir}/libdaos_common_pmem.so
+%{_sysconfdir}/daos/vos_size_input.yaml
+%{_bindir}/daos_storage_estimator.py
+%{_libdir}/python3/site-packages/storage_estimator/*.py
+%dir %{_libdir}/python3/site-packages/storage_estimator
+%if (0%{?rhel} >= 7)
+%dir %{_libdir}/python3/site-packages/storage_estimator/__pycache__
+%{_libdir}/python3/site-packages/storage_estimator/__pycache__/*.pyc
+%endif
 %{_datadir}/%{name}
 %exclude %{_datadir}/%{name}/ioil-ld-opts
 %{_unitdir}/%{server_svc_name}
@@ -360,32 +358,23 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
 %{_bindir}/dfuse
 %{_bindir}/daos
 %{_bindir}/dfuse_hl
-%{_bindir}/daos_storage_estimator.py
-%{_libdir}/*.so.*
 %{_libdir}/libdfs.so
 %{_libdir}/%{name}/API_VERSION
 %{_libdir}/libduns.so
 %{_libdir}/libdfuse.so
 %{_libdir}/libioil.so
 %{_libdir}/libdfs_internal.so
-%{_libdir}/libvos_size.so
 %dir %{_libdir}/python3/site-packages/pydaos
-%dir %{_libdir}/python3/site-packages/storage_estimator
 %{_libdir}/python3/site-packages/pydaos/*.py
-%{_libdir}/python3/site-packages/storage_estimator/*.py
-%if (0%{?rhel} >= 7)
-%dir %{_libdir}/python3/site-packages/pydaos/__pycache__
-%dir %{_libdir}/python3/site-packages/storage_estimator/__pycache__
-%{_libdir}/python3/site-packages/pydaos/__pycache__/*.pyc
-%{_libdir}/python3/site-packages/storage_estimator/__pycache__/*.pyc
-%endif
-%{_libdir}/python3/site-packages/pydaos/pydaos_shim.so
 %dir %{_libdir}/python3/site-packages/pydaos/raw
 %{_libdir}/python3/site-packages/pydaos/raw/*.py
 %if (0%{?rhel} >= 7)
+%dir %{_libdir}/python3/site-packages/pydaos/__pycache__
+%{_libdir}/python3/site-packages/pydaos/__pycache__/*.pyc
 %dir %{_libdir}/python3/site-packages/pydaos/raw/__pycache__
 %{_libdir}/python3/site-packages/pydaos/raw/__pycache__/*.pyc
 %endif
+%{_libdir}/python3/site-packages/pydaos/pydaos_shim.so
 %{_datadir}/%{name}/ioil-ld-opts
 %config(noreplace) %{conf_dir}/daos_agent.yml
 %config(noreplace) %{conf_dir}/daos_control.yml
@@ -401,11 +390,17 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
 %{_bindir}/*_test*
 %{_bindir}/jobtest
 %exclude %{_bindir}/self_test
+%{_libdir}/libdaos_tests.so
+%{_bindir}/jump_pl_map
+%{_bindir}/ring_pl_map
+%{_bindir}/pl_bench
 %{_bindir}/smd_ut
 %{_bindir}/vea_ut
 %{_bindir}/daos_perf
 %{_bindir}/daos_racer
 %{_bindir}/evt_ctl
+%{_bindir}/io_conf
+%{_bindir}/rdbt
 %{_bindir}/obj_ctl
 %{_bindir}/daos_gen_io_conf
 %{_bindir}/daos_run_io_conf
@@ -428,6 +423,10 @@ getent passwd daos_agent >/dev/null || useradd -s /sbin/nologin -r -g daos_agent
 %attr(4750,root,daos_server) %{_bindir}/daos_firmware
 
 %changelog
+* Wed Apr 14 2021 Jeff Olivier <jeffrey.v.olivier@intel.com> - 1.3.0-11
+- Remove storage_estimator and io_conf from client packages to remove
+  any client side dependence on bio and vos (and and PMDK/SPDK)
+
 * Mon Apr 12 2021 Dalton A. Bohning <daltonx.bohning@intel.com> - 1.3.0-10
 - Add attr to the test dependencies
 
diff --git a/utils/run_test.sh b/utils/run_test.sh
index 5f219ccff9f..cd635c7c6e1 100755
--- a/utils/run_test.sh
+++ b/utils/run_test.sh
@@ -80,7 +80,7 @@ if [ -d "/mnt/daos" ]; then
     if [ -z "$RUN_TEST_VALGRIND" ]; then
         # Tests that do not run valgrind
         COMP="UTEST_client"
-        run_test src/client/storage_estimator/common/tests/storage_estimator.sh
+        run_test src/vos/storage_estimator/common/tests/storage_estimator.sh
         COMP="UTEST_rdb"
         run_test src/rdb/raft_tests/raft_tests.py
         go_spdk_ctests="${SL_PREFIX}/bin/nvme_control_ctests"