diff --git a/applications/gui/src/src_window.cpp b/applications/gui/src/src_window.cpp
index b829b76dc65fef03895e2f06f62e081188699699..105a37d546153ec7b405f6bc5fcfd43cff9bd077 100644
--- a/applications/gui/src/src_window.cpp
+++ b/applications/gui/src/src_window.cpp
@@ -157,7 +157,7 @@ SourceWindow::SourceWindow(ftl::gui::Screen *screen)
 			uri.to_json(screen->root()->getConfig()["sources"].emplace_back());
 		} else {
 			ftl::URI uri(path);
-			if (uri.getScheme() == ftl::URI::SCHEME_TCP) {
+			if (uri.getScheme() == ftl::URI::SCHEME_TCP || uri.getScheme() == ftl::URI::SCHEME_WS) {
 				screen->net()->connect(path);
 			}
 		}
diff --git a/applications/reconstruct/src/main.cpp b/applications/reconstruct/src/main.cpp
index 3e35b5ad96eec52c81a26dd50d6e66e8ac52405c..c713a56a8ca6e35896af803da53f9ecaf0a9887a 100644
--- a/applications/reconstruct/src/main.cpp
+++ b/applications/reconstruct/src/main.cpp
@@ -191,6 +191,11 @@ static void run(ftl::Configurable *root) {
 				sender->post(fs);
 				return true;
 			});
+		} else {
+			ftl::URI uri(path);
+			if (uri.getScheme() == ftl::URI::SCHEME_TCP || uri.getScheme() == ftl::URI::SCHEME_WS) {
+				net->connect(path)->waitConnection();
+			}
 		}
 	}