 	}
 
 	private func openConnection(ipAddr: String) {
-
+		let net = NetTCP()
+		do {
+			try net.connect(address: ipAddr, port: config.computePort, timeoutSeconds: config.computeTimeout)
+			{ newSocket in
+				guard let newSocket = newSocket else { 
+					self.delegate?.handleCompute(error: ComputeError.failedToConnect)
+					return
+				}
+				self.socket = newSocket
+				self.connectionOpened()
+			}
+		} catch {
+			Log.error("failed to connect to compute engine")
+			delegate?.handleCompute(error: ComputeError.failedToConnect)
+		}
 	}
 	
 	private func connectionOpened() {

	public func start() {
		assert(state == .uninitialized, "programmer error: invalid state")
		guard config.computeViaK8s else {
			connectToMonolithicServer()
			return
		}
		guard let k8sServer = k8sServer else { fatalError("programmer error: can't use k8s without a k8s server") }

		readNext()
	}

	private func readNext() {
		guard let socket = socket else { fatalError() }
		socket.readBytesFully(count: 8, timeoutSeconds: -1) { bytes in
