OmaNetWatch
OmaNetWatch is an Omarchy shell plugin that monitors HTTP and TCP endpoints, shows their current state in a native bar popup, and sends outage and recovery notifications.

Current features
- One background monitoring service, even with multiple monitors
- HTTP checks with an expected status code
- TCP host/port checks
- Independent interval, timeout, and failure threshold per endpoint
- Alert only on the transition to down; notify again on recovery
- Bar summary with a detailed, theme-aware popup
- Right-click the bar icon, or use the popup button, to check everything immediately
- Live reload when the targets file changes
- Rolling 30-check latency and availability history with a sparkline for each target
- History persisted across shell restarts in
~/.local/state/omanetwatch/history.json
Install
Install directly from GitHub and enable the bar widget:
omarchy plugin add https://github.com/keithnyc/omanetwatch.git --enable
Then create your configuration:
mkdir -p ~/.config/omanetwatch
cp ~/.config/omarchy/plugins/io.github.keithnyc.omanetwatch/config.example.json \
~/.config/omanetwatch/targets.json
Edit ~/.config/omanetwatch/targets.json with the endpoints you want to monitor.
Install for local development
Create the configuration file:
mkdir -p ~/.config/omanetwatch
cp config.example.json ~/.config/omanetwatch/targets.json
Install the plugin by linking this checkout into Omarchy's user plugin directory:
ln -s "$PWD" ~/.config/omarchy/plugins/io.github.keithnyc.omanetwatch
omarchy-shell shell rescanPlugins
omarchy plugin enable io.github.keithnyc.omanetwatch right
The plugin deliberately starts with two consecutive failures required before notification. This avoids alerting on a single transient timeout. The popup still shows every individual check result.
Configuration
OmaNetWatch watches ~/.config/omanetwatch/targets.json and reloads it automatically. The root is an array containing HTTP and/or TCP targets.
HTTP target fields:
name: display nametype:httpurl: completehttp://orhttps://URLexpectedStatus: expected HTTP response, default200
TCP target fields:
name: display nametype:tcphost: DNS name or IP addressport: TCP port
Common optional fields:
id: stable unique identifier; derived fromnamewhen omittedenabled: whether to schedule checks and alerts; defaulttrue. Disabled targets remain visible in the popup.intervalSeconds: seconds between checks, default60timeoutSeconds: per-check timeout, default5failuresBeforeAlert: consecutive failures before notifying, default2
Dependencies
- Omarchy shell with third-party service and bar-widget support
- Python 3
omarchy-notification-send
Plugins execute unsandboxed inside omarchy-shell. Review local and third-party plugin code before enabling it.
Remove
Remove the plugin with Omarchy:
omarchy plugin remove io.github.keithnyc.omanetwatch
Removal leaves your target configuration and history intact. If you no longer
want that local data, you may separately delete
~/.config/omanetwatch/targets.json and
~/.local/state/omanetwatch/history.json.
Privacy
OmaNetWatch makes checks directly from your computer. Target configuration and
check history remain local in ~/.config/omanetwatch/targets.json and
~/.local/state/omanetwatch/history.json; neither file belongs in this repository.
License
MIT