# slopops: I put my whole ops stack in one Omarchy bar popup

Source: https://www.michaelchurley.com/blog/slopops-omarchy-ops-bar-panel  
Published: 2026-08-26  
Author: Michael C. Hurley  
Tags: slopops, omarchy, qml, ops, tailscale, vercel, sentry, posthog, github, linux, martech

![slopops hero: fleet tab in the ops popup beside the one-icon five-tabs card](/blog/slopops-omarchy-ops-bar-panel/screenshots/app.png)

## Who

I run a small fleet and a loud SaaS stack. Tailscale peers. Vercel production. Sentry unresolved. PostHog events. GitHub issues assigned to me.

That used to mean five browser tabs I leave open like a superstition. Refresh. Squint. Miss the deploy that went ERROR while I was in a terminal.

slopops is for the Omarchy operator who already lives in the bar and refuses another Electron tray for the same five APIs. Solo builders. MarTech people who ship on Vercel and still SSH into boxes. Anyone who already typed `gh auth login` once and does not want a sixth personal access token living in a random JSON file under `~/Library`.

If your morning starts with "is the fleet up, did prod deploy, what is screaming in Sentry," this is the glance surface.

## What

I built an Omarchy **bar-widget**. QML. Quickshell. Id `slopops`. Display name SlopOps. Version **0.1.0**. Category Monitoring. One instance. Default section: right.

One icon. Nerd Font server glyph. Tiny badge dot in the corner.

![Fleet tab: peers, online count, ts / 22 / 5900 / t3 status lights](/blog/slopops-omarchy-ops-bar-panel/screenshots/fleet.png)

Five tabs in a 620×450 popup:

**Fleet**: every device on the tailnet. Online count. TCP probes for whatever ports you configure (default `22,5900`). Optional `t3Port` (default 3773) lights green when t3 serve is reachable on that peer's tailnet IP.

**Deploys**: Vercel projects sorted by most recent production deploy. Anything with an ERROR since the last good deploy gets pinned to the top in pink. You see the fire before you open the dashboard.

![Deploys tab: failing projects pinned above READY rows](/blog/slopops-omarchy-ops-bar-panel/screenshots/deploys.png)

**Sentry**: unresolved issues, last 24 hours, grouped by project, loudest first. A `+ issue` button runs `promote.sh`: open a GitHub issue in `issueRepo` with event count, level, culprit, and the Sentry URL, then `notify-send`.

**Traffic**: PostHog all-time event total, a 30-day daily series, per-project totals down the side.

**Issues**: `gh search` for open issues and PRs for you (or a configured `ghOwner`).

![Sentry tab: unresolved 24h groups with + issue promote](/blog/slopops-omarchy-ops-bar-panel/screenshots/sentry.png)

The badge is the whole point when the popup is closed. Red if deploy errors or Sentry events. Yellow if tokens are missing or peers are offline. Green if nominal. `status.sh` rolls that up. Timer defaults to 90 seconds. Right-click the icon to refresh everything.

Data plane is boring on purpose: bash scripts print JSON; QML `Process` parses a line. Tokens sit in `secrets.env` (gitignored, chmod 600). Missing a token does not crash the tab; it shows a hint and moves on. GitHub never needed a token in that file; it uses your existing `gh` login.

Settings are widget keys, not forks: `omarchy bar set slopops fleetPorts "22,5900,3389"`, `sentryOrg`, `sentryUrl` for self-hosted, `posthogUrl` for EU, `vercelTeamId`, `issueRepo`, `t3Port 0` to hide the t3 light.

![PostHog traffic tab: all-time total, 30-day bars, per-project counts](/blog/slopops-omarchy-ops-bar-panel/screenshots/traffic.png)

## Where

It runs where Omarchy's bar runs: Quickshell on the desktop I already stare at. Plugin path on this machine: `~/.config/omarchy/plugins/slopops`. Same tree mirrored under the dotfiles-omarchy project copy.

Repo: [michaelmonetized/slopops](https://github.com/michaelmonetized/slopops). Public. Branch `master`. No Pages homepage. No GitHub Release tag. Linguist says mostly QML, then Shell, a little JavaScript helper for `ago` / `fmt` / `levelColor`.

![Repo layout: Ops.qml, tabs, scripts, secrets example](/blog/slopops-omarchy-ops-bar-panel/screenshots/repo-structure.png)

The audience already has Omarchy, Tailscale, Vercel, Sentry, and PostHog CLIs and tokens. This is not a demo of what a deploy is.

![Issues tab: open issues and PRs via gh search](/blog/slopops-omarchy-ops-bar-panel/screenshots/issues.png)

## When

**2026-08-26, 9:23 AM Eastern.** First commit. Message: `michael.ops 0.1.0: multi-service ops bar panel for Omarchy`. Twenty files. 1,780 lines. The whole panel lands in one shot: `Ops.qml`, five tabs, seven scripts, manifest, README, `secrets.env.example`.

**Same morning, 9:55 AM Eastern.** Second commit. `rename plugin id to slopops`. Manifest id and name, README, moduleName/ipcTarget. `michael.ops` becomes the public name that matches the repo.

**2026-08-26, 1:55 PM UTC.** Last push on GitHub. Still `0.1.0`. Still two commits. No LICENSE file in the tree. One star.

**2026-09-08.** Pack day. Plugin still on disk. `omarchy bar put slopops` puts it on the bar. `secrets.env` is still not created on this machine; the degrade path is the live path until tokens land.

Thirty-two minutes from first commit to rename. That is the clock.

## Why

I was paying the context-switch tax every day. Fleet health in one place. Deploys in another. Sentry in a third. PostHog for "is anyone even using this." GitHub for the work the errors become.

The bar was already the glance surface. Omarchy already had a widget schema. So I put the stack behind one icon and made the badge tell the truth when I am too busy to open the popup.

Shell fetchers. JSON out. Tokens optional. Promote from Sentry to GitHub without leaving the seat. Ports as settings, not a new plugin fork.

That is the tool I reached for when the dashboards started feeling like chores.

**Engagement Q:** Which of the five tabs would earn the badge on your bar first: Fleet, Deploys, Sentry, Traffic, or Issues?
