Skip to content

Engine discovery

To talk to the engine over gRPC, you first need to discover its address. If you use a client library, this happens automatically. With a generated gRPC client, you read the address yourself.

Metadata file

The Control API listens on 127.0.0.1 on a dynamic port, chosen at startup, and the engine writes its address to a metadata file that any client can read.

The file lives in a system directory and is named after the engine's edition identifier, in reverse-DNS form:

Platform File
Windows C:\ProgramData\ViveSound\com.vivesound.viveengine-shared.metadata.json
macOS /Library/Application Support/com.vivesound.viveengine-shared.metadata.json

If you use a non-shared edition, such as an enterprise dedicated edition, you need to replace viveengine-shared in the file name with your edition identifier.

The file is JSON with the engine's address and a few details:

{
  "edition": "ViveEngine (Shared)",
  "version": "1.1.92",
  "rpc_address": "127.0.0.1:52731"
}

The rpc_address is what you feed to your gRPC client. The rest is informational.

The address can change

The port is assigned at startup, and changes if engine restarts. Don't cache the address — re-read the metadata each time you reconnect.

Client libraries

If you use an SDK client library, such as C# or Go, it discovers the shared engine's address automatically — you don't read the metadata file yourself.

To connect to a different edition, you can query the available editions and their addresses, or pass an address explicitly.

Command-line tool

You can also read the metadata with the vive-ctl command-line tool:

$ vive-ctl engine list
EDITION              VERSION  ADDRESS          IDENTIFIER
ViveEngine (Shared)  1.1.92   127.0.0.1:52731  com.vivesound.viveengine-shared

Add --json for machine-readable output:

$ vive-ctl engine list --json
[
  {
    "edition": "ViveEngine (Shared)",
    "identifier": "com.vivesound.viveengine-shared",
    "version": "1.1.92",
    "rpc_address": "127.0.0.1:52731"
  }
]

To check the default engine and whether it's currently reachable, use engine status:

$ vive-ctl engine status
Edition:     ViveEngine (Shared)
Identifier:  com.vivesound.viveengine-shared
Version:     1.1.92
Address:     127.0.0.1:52731
Status:      online