diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index dc45ef6c85f4515bb18c51f1b14b2889e81a06a0..51d9e371980a76c735ca6101f90268420a90f955 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -138,6 +138,14 @@ void GetOptions(int argc, char *argv[])
         CTX::instance()->batch = -99;
         i++;
       }
+      else if(!strcmp(argv[i] + 1, "onelab")) {
+        i++;        
+        if(argv[i])
+           Msg::InitializeOnelab(argv[i++]);
+        else
+          Msg::Fatal("Missing string");
+        CTX::instance()->batch = -4;
+      }
       else if(!strcmp(argv[i] + 1, "socket")) {
         i++;        
         if(argv[i])
diff --git a/Common/Gmsh.cpp b/Common/Gmsh.cpp
index 4001084102e2f2e61152bb8ef94dd6737a9f28a8..38af13f28624f90d62529125bb75e6026e691994 100644
--- a/Common/Gmsh.cpp
+++ b/Common/Gmsh.cpp
@@ -150,7 +150,10 @@ int GmshBatch()
   }
 #endif
 
-  if(CTX::instance()->batch == -3){
+  if(CTX::instance()->batch == -4){
+    // 
+  }
+  else if(CTX::instance()->batch == -3){
     GmshRemote();
   }
   else if(CTX::instance()->batch == -2){
diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index c6dbfa36df184317dc35b06d187771dc76a1899b..da91206820723d821b6c9506a8a69691a39408a4 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -600,7 +600,11 @@ void Msg::FinalizeClient()
 void Msg::InitializeOnelab(const std::string &sockname)
 {
   // Gmsh could also be used as a distant CAD/post-pro client... 
-  _onelabClient = new onelab::localClient("Gmsh");
+  if (sockname.empty())
+    _onelabClient = new onelab::localClient("Gmsh");
+  else {
+    _onelabClient = new onelab::remoteNetworkClient("GmshRemote",sockname);
+  }
 }
 
 void Msg::ExchangeOnelabParameter(const std::string &key,