Skip to content

Rover Configuration File

RoverConfig.json is the JSON configuration file Rover reads at startup. It defines the “factory defaults” that back the Settings dialog’s Reset to Defaults button.

For the NATS server configuration file, see NATS Configuration.

FilePurposeLocation
RoverConfig.jsonRover analyzer and web UI defaultsApplication directory

Controls Rover’s TWS connections, HTTP/web server, monitoring grid, and global pricing parameters. NATServerURL, MsgProcessingInterval, and IBKRConnections are required; all other fields are optional and fall back to the defaults listed below. Invalid or missing required fields cause Rover to exit with an error dialog.

{
"AccountIdMaskChars": 4,
"AngularDistDir": "./dist",
"HttpBindAddress": "0.0.0.0",
"HttpPort": 5000,
"IBKRConnections": [
{
"AccountId": "YOUR_ACCOUNT_ID",
"ClientId": 1,
"GatewayIPAddress": "localhost",
"GatewayPort": 7496
}
],
"MonitoringColumns": [
{ "field": "NET_LIQ_CALC", "width": 199 },
{ "field": "PNL", "width": 138 },
{ "field": "THETA", "width": 102 },
{ "field": "THETA2_ORT", "width": 164 },
{ "field": "VEGA", "width": 164 }
],
"MonitoringShowAllFields": false,
"MsgProcessingInterval": 100,
"NATSLocal": true,
"NATServerURL": "nats://localhost:4222",
"NatsPort": 4222,
"NatsWsPort": 9222,
"RiskFreeRate": 0.036,
"ThroughputBaselineBytes": 50000,
"WebConfigDir": "./WebConfiguration"
}

Rover hosts an embedded HTTP server that serves the Angular web UI.

FieldTypeDescription
HttpBindAddressstringIP address the HTTP server binds to. 0.0.0.0 listens on all interfaces; 127.0.0.1 restricts access to the local machine. Default: 0.0.0.0
HttpPortintegerPort for the HTTP server that serves the web UI. Default: 5000
AngularDistDirstringPath to the Angular web UI dist directory, relative to the Rover executable. Default: ./dist
WebConfigDirstringDirectory where Rover stores per-component perspective and settings files served via the REST API. Created if missing. Default: ./WebConfiguration
FieldTypeDescription
NATSLocalbooleanControls whether Rover starts its own NATS server. When true (default), Rover automatically spawns nats-server.exe at startup using the local nats.config, and shuts it down on exit. When false, Rover only connects to NATS at NATServerURL and never spawns one — used for institutional deployments where NATS runs as a centrally-managed service. Default: true
NATServerURLstringRequired. NATS server URL. Rover itself connects here, and passes it to each analyzer as --nats-url
NatsPortintegerNATS client port reported to the web UI via /api/info. Must match port in nats.config. Default: 4222
NatsWsPortintegerNATS websocket port reported to the web UI via /api/info so browser clients can connect. Must match the websocket port in nats.config. Default: 9222
MsgProcessingIntervalintegerRequired. Analyzer clock rate in milliseconds. Rover passes this to each OptionsRealTimePublisher.exe as --msg-interval; analyzers use it as their cadence for sending message batches to subscribers

Required. Must contain at least one entry. Each entry defines a connection to a TWS instance and is passed to an analyzer as command-line arguments (--host, --port, --client-id, --account).

FieldTypeDescription
AccountIdstringIBKR account identifier (e.g., U1234567 for live, DU1234567 for paper). Normalized on load: trimmed, internal whitespace removed, uppercased
GatewayIPAddressstringHost running TWS. Use localhost for local installations
GatewayPortintegerTWS API port (1-65535). Typically 7496 for live, 7497 for paper
ClientIdintegerUnique client ID for this connection. Multiple accounts on the same TWS instance require different client IDs

Controls the columns displayed in Rover’s monitoring grid.

FieldTypeDescription
MonitoringColumnsarrayOrdered list of columns to display. Each entry has a field (Excel field name, required) and a width (pixel width, default 100). Entries missing field or with a non-string field are skipped with a warning
MonitoringShowAllFieldsbooleanPersisted state of the field-selector “Select All” checkbox. Set automatically when every field is checked in the field-selector dialog; cleared when any field is unchecked. Does not itself drive what the grid displays; MonitoringColumns is always the source of truth. Default: false

Common field values include PNL, NET_LIQ_CALC, NET_LIQ_PCT_CHANGE, THETA, THETA_ORT, THETA2_ORT, VEGA, VEGA_ORT, and TIME.

FieldTypeDescription
AccountIdMaskCharsintegerNumber of characters to mask from the right in account IDs. Clamped to 0-10. 4 shows U264****. Default: 4
ThroughputBaselineBytesintegerSets the 100% reference for throughput bar charts (bytes/second). Default: 204800
FieldTypeDescription
RiskFreeRatefloatAnnualized risk-free interest rate (e.g., 0.045 = 4.5%). Rover passes this to each analyzer as --risk-free-rate; analyzers apply it uniformly across all accounts and expirations. Default: 0.045
  1. Stop Rover before editing
  2. Open RoverConfig.json in a text editor
  3. Make changes, ensuring valid JSON syntax
  4. Save the file
  5. Restart Rover

Changes take effect on the next application start. Invalid syntax or a missing required field (NATServerURL, MsgProcessingInterval, or a non-empty IBKRConnections) causes Rover to show an error dialog and exit. Optional fields fall back to the defaults listed above when missing.

The Settings dialog includes a Reset to Defaults button that restores values from RoverConfig.json.