diff --git a/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt b/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
index 87263e4879b368d3e630e5294085cf91215f7508..0672e990c85ce7b4b4e5f10e05f2eeb08efc4405 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
@@ -50,7 +50,11 @@ import javax.inject.Singleton
         SocksModule::class
     ]
 )
-internal class DesktopModule(private val appDir: Path) {
+internal class DesktopModule(
+    private val appDir: Path,
+    private val socksPort: Int = DEFAULT_SOCKS_PORT,
+    private val controlPort: Int = DEFAULT_CONTROL_PORT
+) {
 
     @Provides
     @Singleton
@@ -67,7 +71,7 @@ internal class DesktopModule(private val appDir: Path) {
     @Provides
     @Singleton
     fun provideTorPorts(): TorPorts {
-        return TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT)
+        return TorPortsImpl(socksPort, controlPort)
     }
 
     @Provides
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
index 8ce0d7b4eab7e7341bdd59f9e7d4ea243a11156f..9065db710c57a2891a10a1c9b9ec4c4a3dc022a7 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/Main.kt
@@ -7,7 +7,10 @@ import com.github.ajalt.clikt.parameters.options.counted
 import com.github.ajalt.clikt.parameters.options.default
 import com.github.ajalt.clikt.parameters.options.flag
 import com.github.ajalt.clikt.parameters.options.option
+import com.github.ajalt.clikt.parameters.types.int
 import org.briarproject.bramble.BrambleCoreEagerSingletons
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
 import org.briarproject.briar.BriarCoreEagerSingletons
 import org.briarproject.briar.desktop.utils.FileUtils
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
@@ -43,6 +46,14 @@ private class Main : CliktCommand(
         metavar = "PATH",
         envvar = "BRIAR_DATA_DIR"
     ).default(DEFAULT_DATA_DIR)
+    private val socksPort by option(
+        "--socks-port",
+        help = "Tor Socks Port"
+    ).int().default(DEFAULT_SOCKS_PORT)
+    private val controlPort by option(
+        "--control-port",
+        help = "Tor Control Port"
+    ).int().default(DEFAULT_CONTROL_PORT)
 
     @OptIn(ExperimentalComposeUiApi::class)
     override fun run() {
@@ -57,7 +68,7 @@ private class Main : CliktCommand(
         val dataDir = getDataDir()
         val app =
             DaggerBriarDesktopApp.builder().desktopModule(
-                DesktopModule(dataDir)
+                DesktopModule(dataDir, socksPort, controlPort)
             ).build()
         // We need to load the eager singletons directly after making the
         // dependency graphs