private static void startServer(InputStream in, OutputStream out) throws ExecutionException, InterruptedException {
        SchemaLanguageServer schemaLanguageServer = new SchemaLanguageServer();

        Launcher<LanguageClient> launcher = LSPLauncher.createServerLauncher(schemaLanguageServer, in, out);

        LanguageClient client = launcher.getRemoteProxy();

        schemaLanguageServer.connect(client);

        Future<?> startListening = launcher.startListening();

        startListening.get();
    }
SchemaLSLauncher starts the language server, depeninging on the command line arguments the server can attach to different streams.
Default is to attach to standard in / out stream for communication
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/SchemaLSLauncher.java