diff --git a/Android.bp b/Android.bp
index 561c9cd..73d7264 100644
--- a/Android.bp
+++ b/Android.bp
@@ -69,6 +69,7 @@
     static_libs: [
         "libcuttlefish_fs",
         "libbase",
+	"libgflags",
     ],
     defaults: ["cuttlefish_host"],
 }
@@ -136,6 +137,7 @@
         "libbase",
         "cuttlefish_auto_resources",
         "libcuttlefish_fs",
+	"libgflags",
     ],
     defaults: ["cuttlefish_host"],
 }
diff --git a/common/vsoc/framebuffer/Android.bp b/common/vsoc/framebuffer/Android.bp
index 50ad9ea..95196c5 100644
--- a/common/vsoc/framebuffer/Android.bp
+++ b/common/vsoc/framebuffer/Android.bp
@@ -35,6 +35,7 @@
         "libbase",
         "cuttlefish_auto_resources",
         "libcuttlefish_fs",
+	"libgflags",
     ],
     defaults: ["cuttlefish_host"],
 }
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index f9d2ccd..5634483 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -46,7 +46,6 @@
 }  // namespace
 
 DEFINE_string(cache_image, "", "Location of the cache partition image.");
-DEFINE_string(clientsocket, "/tmp/ivshmem_socket_client", "Client socket path");
 DEFINE_int32(cpus, 2, "Virtual CPU count.");
 DEFINE_string(data_image, "", "Location of the data partition image.");
 DEFINE_bool(disable_app_armor_security, false,
@@ -55,8 +54,8 @@
             "Disable DAC security in libvirt. For debug only.");
 DEFINE_string(extra_kernel_command_line, "",
               "Additional flags to put on the kernel command line");
+DECLARE_int32(instance);
 DEFINE_string(initrd, "", "Location of cuttlefish initrd file.");
-DEFINE_int32(instance, 1, "Instance number. Must be unique.");
 DEFINE_string(kernel, "", "Location of cuttlefish kernel file.");
 DEFINE_string(kernel_command_line, "",
               "Location of a text file with the kernel command line.");
@@ -81,7 +80,6 @@
 
 DEFINE_string(usbipsocket, "android_usbip", "Name of the USB/IP socket.");
 DEFINE_string(uuid, "", "UUID to use for the device. Random if not specified");
-DEFINE_string(vsoc_domain, vsoc::DEFAULT_DOMAIN, "Client socket path");
 
 namespace {
 Json::Value LoadLayoutFile(const std::string& file) {
@@ -148,7 +146,8 @@
  public:
   IVServerManager(const Json::Value& json_root)
       : server_(ivserver::IVServerOptions(FLAGS_layout, FLAGS_mempath,
-                                          FLAGS_qemusocket, FLAGS_vsoc_domain),
+                                          FLAGS_qemusocket,
+                                          vsoc::GetShmClientSocketPath()),
                 json_root) {}
 
   ~IVServerManager() = default;
@@ -250,8 +249,7 @@
       .SetDisableDACSecurity(FLAGS_disable_dac_security)
       .SetDisableAppArmorSecurity(FLAGS_disable_app_armor_security)
       .SetUUID(FLAGS_uuid);
-  cfg.SetUSBV1SocketName(std::string("/tmp/") + cfg.GetInstanceName() +
-                         "-usb");
+  cfg.SetUSBV1SocketName(std::string("/tmp/") + cfg.GetInstanceName() + "-usb");
 
   std::string xml = cfg.Build();
   if (FLAGS_log_xml) {
diff --git a/host/frontend/vnc_server/main.cpp b/host/frontend/vnc_server/main.cpp
index 02a5f84..c47a687 100644
--- a/host/frontend/vnc_server/main.cpp
+++ b/host/frontend/vnc_server/main.cpp
@@ -19,20 +19,19 @@
 
 #include <gflags/gflags.h>
 
-#include "host/vsoc/lib/region_control.h"
+#include "common/libs/glog/logging.h"
 #include "host/frontend/vnc_server/vnc_server.h"
 #include "host/frontend/vnc_server/vnc_utils.h"
-#include "common/libs/glog/logging.h"
+#include "host/vsoc/lib/region_control.h"
 
 DEFINE_bool(agressive, false, "Whether to use agressive server");
 DEFINE_int32(port, 6444, "Port where to listen for connections");
-DEFINE_string(vsoc_domain, vsoc::DEFAULT_DOMAIN, "Client socket path");
 
 int main(int argc, char* argv[]) {
   using ::android::base::ERROR;
   ::android::base::InitLogging(argv, android::base::StderrLogger);
   ::gflags::ParseCommandLineFlags(&argc, &argv, true);
-  if (!avd::vnc::GetFBBroadcastRegionView()->Open(FLAGS_vsoc_domain.c_str())) {
+  if (!avd::vnc::GetFBBroadcastRegionView()->Open()) {
     LOG(FATAL) << "Unable to open FBBroadcastRegion";
   }
   avd::vnc::VncServer vnc_server(FLAGS_port, FLAGS_agressive);
diff --git a/host/libs/ivserver/options.h b/host/libs/ivserver/options.h
index 48be179..53a51e2 100644
--- a/host/libs/ivserver/options.h
+++ b/host/libs/ivserver/options.h
@@ -24,11 +24,7 @@
 const uint16_t kIVServerMajorVersion = 1;
 const uint16_t kIVServerMinorVersion = 0;
 const uint32_t kIVServerDefaultShmSizeInMiB = 4;
-const std::string kIVServerDefaultShmFile = "ivshmem";
 const std::string kIVServerDefaultLayoutFile = "vsoc_mem.json";
-const std::string kIVServerDefaultQemuSocketPath = "/tmp/ivshmem_socket";
-const std::string kIVServerDefaultClientSocketPath =
-    "/tmp/ivshmem_client_socket";
 
 //
 // structure that contains the various options to start the server.
diff --git a/host/vsoc/lib/region_control.cpp b/host/vsoc/lib/region_control.cpp
index f8b5c09..8f53508 100644
--- a/host/vsoc/lib/region_control.cpp
+++ b/host/vsoc/lib/region_control.cpp
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "common/vsoc/lib/region_view.h"
 #include "host/vsoc/lib/region_control.h"
+#include "common/vsoc/lib/region_view.h"
 
 #define LOG_TAG "vsoc: region_host"
 
@@ -26,10 +26,12 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <iomanip>
 #include <sstream>
 #include <thread>
 #include <vector>
 
+#include <gflags/gflags.h>
 #include <glog/logging.h>
 
 #include "common/libs/fs/shared_fd.h"
@@ -37,7 +39,14 @@
 
 using avd::SharedFD;
 
+DEFINE_int32(instance, 1, "Instance number. Must be unique.");
+DEFINE_string(vsoc_run_dir, "/var/run/cvd-",
+              "Path to the directory holding vsoc resources");
+DEFINE_string(vsoc_shm_client_sock, "ivshmem_socket_client",
+              "Name of the VSoC client socket");
+
 namespace {
+
 class HostRegionControl : public vsoc::RegionControl {
  public:
   HostRegionControl(const char* region_name,
@@ -172,12 +181,21 @@
 }
 }  // namespace
 
+std::string vsoc::GetShmClientSocketPath() {
+  std::ostringstream stream;
+  stream << FLAGS_vsoc_run_dir << std::setfill('0') << std::setw(2)
+         << FLAGS_instance << "/" << FLAGS_vsoc_shm_client_sock;
+  return stream.str();
+}
+
 std::shared_ptr<vsoc::RegionControl> vsoc::RegionControl::Open(
     const char* region_name, const char* domain) {
   AutoFreeBuffer msg;
+  std::string owned_domain;
 
   if (!domain) {
-    domain = DEFAULT_DOMAIN;
+    owned_domain = GetShmClientSocketPath();
+    domain = owned_domain.c_str();
   }
   SharedFD region_server =
       SharedFD::SocketLocalClient(domain, false, SOCK_STREAM);
diff --git a/host/vsoc/lib/region_control.h b/host/vsoc/lib/region_control.h
index e7d3e5c..a661dd6 100644
--- a/host/vsoc/lib/region_control.h
+++ b/host/vsoc/lib/region_control.h
@@ -18,6 +18,8 @@
 
 /* Host-specific values associated with RegionControl. */
 
+#include <string>
+
 namespace vsoc {
-const char* const DEFAULT_DOMAIN{"/tmp/ivshmem_socket_client"};
+std::string GetShmClientSocketPath();
 }  // namespace vsoc
