Network Weather can be configured via a JSON file at ~/.nwx/config.json. All settings are optional — if no config file exists, the app uses built-in defaults.
Config File Location
| Platform |
Path |
| macOS |
~/.nwx/config.json |
Create the directory and file:
mkdir -p ~/.nwx
cat > ~/.nwx/config.json << 'EOF'
{
"suppressWelcomeFlow": true
}
EOF
Supported Settings
All fields are optional. Only include what you want to override.
Updates & Onboarding
| Key |
Type |
Default |
Description |
suppressWelcomeFlow |
boolean |
false |
Skip onboarding flow (for enterprise/MSP silent installs) |
disableSparkle |
boolean |
false |
Disable Sparkle auto-updates; use C2-based update checking instead |
appcastURL |
string |
(Info.plist) |
Custom Sparkle appcast URL for internal update servers |
Logging
| Key |
Type |
Default |
Description |
logLevel |
string |
"info" |
Log verbosity: "trace", "debug", "info", "warning", "error" |
Measurement Intervals
| Key |
Type |
Default |
Description |
measurementIntervalAC |
number |
300 |
Full measurement cycle on AC power (seconds) |
measurementIntervalBattery |
number |
900 |
Full measurement cycle on battery (seconds) |
Topology Discovery
| Key |
Type |
Default |
Description |
maxPathsToDiscover |
integer |
1 |
Paths to discover per endpoint (multipath detection) |
topologyCacheTTL |
number |
300 |
How long topology results are cached (seconds) |
Hop Monitoring
| Key |
Type |
Default |
Description |
hopPingIntervalAC |
number |
5 |
Per-hop ping interval on AC power (seconds) |
hopPingIntervalBattery |
number |
15 |
Per-hop ping interval on battery (seconds) |
Health Analysis
| Key |
Type |
Default |
Description |
healthAnalysisInterval |
number |
30 |
Minimum time between health analysis runs (seconds) |
healthAnalysisLoggingDebounce |
number |
300 |
Rate limiting for health analysis log output (seconds) |
HTTP Probing
| Key |
Type |
Default |
Description |
httpProbeIntervalAC |
number |
30 |
HTTP probe interval on AC power (seconds) |
httpProbeIntervalBattery |
number |
90 |
HTTP probe interval on battery (seconds) |
Gateway Telemetry
| Key |
Type |
Default |
Description |
gatewayTelemetryRefreshIntervalAC |
number |
300 |
Gateway data refresh on AC power (seconds) |
gatewayTelemetryRefreshIntervalBattery |
number |
900 |
Gateway data refresh on battery (seconds) |
Example Config
Enterprise deployment with onboarding suppressed, Sparkle disabled, and more frequent measurements:
{
"suppressWelcomeFlow": true,
"disableSparkle": true,
"logLevel": "info",
"measurementIntervalAC": 120,
"measurementIntervalBattery": 600
}
Managed Preferences (MDM)
On macOS, IT administrators can enforce settings via MDM configuration profiles. MDM-pushed values take priority over config.json and cannot be overridden by the user.
Bundle ID domain: com.networkweather.nwx.macos
Supported MDM Keys
| Key |
Type |
Description |
disableSparkle |
Bool |
Disable Sparkle auto-updates |
appcastURL |
String |
Custom appcast URL |
suppressWelcomeFlow |
Bool |
Skip onboarding |
c2BaseURL |
String |
Override C2 server URL |
neverAsksForAdmin |
Bool |
Block privilege escalation prompts |
logLevel |
String |
Override log level |
Example .mobileconfig Profile
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.networkweather.nwx.macos</string>
<key>PayloadIdentifier</key>
<string>com.networkweather.nwx.macos.managed</string>
<key>PayloadUUID</key>
<string>A1B2C3D4-E5F6-7890-ABCD-EF1234567890</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>disableSparkle</key>
<true/>
<key>suppressWelcomeFlow</key>
<true/>
<key>neverAsksForAdmin</key>
<true/>
</dict>
</array>
<key>PayloadIdentifier</key>
<string>com.example.corp.nwx-policy</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>F1E2D3C4-B5A6-7890-1234-567890ABCDEF</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadDisplayName</key>
<string>Network Weather - IT Policy</string>
</dict>
</plist>
Override Priority (highest to lowest)
| Priority |
Source |
User-writable? |
| 1 (highest) |
MDM managed preferences |
No |
| 2 |
~/.nwx/config.json |
Yes |
| 3 (lowest) |
Built-in defaults |
— |
Deploying Config Files
Pre-install (Recommended)
Place the config file before installing the application:
mkdir -p ~/.nwx
cp config.json ~/.nwx/config.json
Via MDM
Deploy the file to each user's home directory:
/Users/<username>/.nwx/config.json
Or use Managed Preferences via a .mobileconfig profile for settings that should be enforced by IT policy.
Validation & Error Handling
- Missing file: Not an error — all defaults used
- Invalid JSON: Logged as error to stderr, defaults used
- Unknown keys: Silently ignored (forward-compatible)
- Active overrides: Logged to stderr on startup (e.g.,
Active config overrides: logLevel, disableSparkle)