Omahub
← All plugins
J

Crew Chief

by Jeremy Longshore

Crew Chief keeps AI coding sessions in a local attention queue so blocked work does not hide behind tabs. Claude Code, Codex, Herdr, and command-capable tools report working, blocked, or done. The bar hides when idle, counts active work, and uses alert color for NEEDS YOU. The panel sorts blocked rows first, shows project, harness, age, and a bounded attention headline, then can dismiss a row or best-effort focus its project window. No network, account, API key, telemetry, or transcript polling.

Security review

Potentially dangerous behavior detected · 3 findings

Deterministic scan — not a security guarantee

High
Risk level
High
Analyzed commit
c677cfd
Scanned
1 week ago
  • high destructive_filesystem scripts/rig-verify.sh:77

    Destructive operation on the root filesystem or a block device.

    rm -rf /tmp/$NAME && mkdir -p /tmp/$NAME && tar xzf /tmp/$NAME.tgz -C /tmp/$NAME' || exit 3
  • high destructive_filesystem scripts/rig-verify.sh:98

    Destructive operation on the root filesystem or a block device.

    rm -rf /tmp/$NAME /tmp/$NAME.tgz >/dev/null 2>&1
  • Augments a command with octal/hex escape sequences.

    \x89PNG\r\n\x1a\n" or raw[12:16] != b"IHDR":

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
c677cfd
Reviewed
1 week ago

The deterministic scan flagged destructive `rm -rf` operations, but they live in scripts/rig-verify.sh, a developer/CI tool that runs inside an isolated Docker rig, not in any code shipped to end users. The plugin's runtime (QML, hooks, adapters, bin helpers) is local-only, bounded, and avoids shell injection by using argv arrays; the only user-visible side effect is the documented Claude Code hook installer. No credential theft, persistence, or destructive behavior is present in the installed plugin.

  • The hook installer modifies ~/.claude/settings.json, but it backs up first and is documented; this is expected behavior.
  • The plugin executes `hyprctl dispatch focuswindow` on row click, which is a user-initiated action and safe.
  • Development scripts (rig-verify.sh, rig-render.sh) contain destructive commands, but they are not part of the plugin runtime and never run on a user's machine.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/jeremylongshore/omarchy-crew-chief-entry --enable
Productivity #bar #quickshell
<p align="center"><img src="assets/banner.svg" alt="Crew Chief" width="100%"></p>

Crew Chief

Every running AI coding agent session in your Omarchy bar, any harness, and a loud pill the moment one is blocked waiting on you.

You're running four agent sessions across four projects. Maybe Claude Code in two, Codex in one, Goose in another. One of them has been sitting on a permission prompt for six minutes. Which one? Crew Chief knows. A bar pill counts your running sessions, 󰋎 4, and the moment a session is blocked waiting on you, the pill goes loud in your theme's active color: 󰋎 2 need you. The panel lists the whole fleet, attention first: project, harness, state, how long it's been waiting, and the capped attention headline its reporter supplied.

Crew Chief preview

The existing agent widgets tell you about your quota. Crew Chief tells you who needs you right now, fed by each harness's own lifecycle events, not by polling a usage API.

ko-fi

Works with every make and model

Crew Chief is harness-agnostic by design: the widget watches a spool of tiny JSON state files (the protocol), and anything that can run a command can report in. Three integration tiers:

Harness Integration States you get
Anything running under Herdr, whose detection roster covers Claude Code, Codex, Amp, Cline, Copilot, and more zero config: when herdr is installed, the widget consumes one bounded herdr status --json snapshot per poll (herdrSync setting, default On, harmless no-op without it) working / needs you (blocked) / done, with the pane title as context
Claude Code (standalone) first-class hook adapter, one-command install (below) working / needs you / done, with a bounded attention headline
OpenAI Codex (standalone) adapters/codex-notify wired into notify in ~/.codex/config.toml done (turn complete)
Goose, Kilo, pi, Hermes, aider, opencode, anything call bin/crew-chief-report from whatever event surface your tool has: hooks, notify programs, wrappers, extensions whatever you report

Remote fleets work too: sessions you drive from your phone (Moshi/mosh, SSH) report in wherever the harness actually runs. To see another machine's fleet on this bar, sync its spool directory over (Syncthing, rsync) or have its reporter write via SSH. Rows are plain files and stale ones age out automatically.

The generic reporter is one command with sane defaults (session id defaults to the harness PID, directory to $PWD):

crew-chief-report working   --agent goose
crew-chief-report needs_you --agent kilo --message "waiting on approval"
crew-chief-report done      --agent codex
crew-chief-report end

If your favorite harness has a native event surface you'd like a first-class adapter for, open an issue. Adapters are ~40 lines of bash.

Install

omarchy plugin add https://github.com/jeremylongshore/omarchy-crew-chief-entry --enable

Add Crew Chief to your bar layout (Omarchy menu → Bar), then wire your harnesses. For Claude Code (one command, idempotent, backs up your settings first):

~/.config/omarchy/plugins/omarchy-crew-chief-entry/hooks/install-claude-hooks

Restart any running Claude Code sessions so they pick up the hooks. That's it. New sessions report in automatically. Reporter messages are persisted locally and rendered in the panel, so adapters should send an attention headline, never a secret or transcript excerpt.

For Codex, point notify at the adapter in ~/.codex/config.toml:

notify = ["/home/YOU/.config/omarchy/plugins/omarchy-crew-chief-entry/adapters/codex-notify"]

For everything else, call bin/crew-chief-report from your tool's event hooks. See docs/PROTOCOL.md.

How it works (Claude Code adapter)

Claude Code fires hook events at lifecycle moments. The installed hook (hooks/crew-chief-event, ~40 lines of bash + jq) writes one tiny JSON state file per session under ~/.local/state/omarchy/crew-chief/:

Claude Code event Session state
SessionStart, UserPromptSubmit WORKING
Notification (permission prompt, waiting on input) NEEDS YOU
Stop (finished its run) DONE
SessionEnd removed

Every other harness reaches the same spool through its own adapter or the generic reporter. The widget treats all makes and models identically.

The widget polls that spool (default every 3s) and renders the fleet. No network, account, API key, telemetry, or transcript polling. The spool carries a bounded session id, project directory, harness, state, timestamp, and optional attention headline. The writer retains at most 256 records; each read examines at most 1,024 candidate names, opens only regular same-owner files without following links, reads 4 KiB per file, and returns at most the newest 64 sessions.

Using the panel

  • Rows sort attention-first. The session that's waited longest on you is on top, with its reporter-supplied attention headline under the project name.
  • Left-click a row: best-effort jump to that project's terminal window (hyprctl dispatch focuswindow).
  • Right-click a row: dismiss it from the list.
  • CLEAR FINISHED: sweep away all DONE rows at once.
  • Stale sessions (no event for 4h, configurable) drop off automatically.

Settings

Key Default What it does
pollSec 3 Spool poll interval (seconds)
staleMinutes 240 Forget sessions with no events after this long
showDone On Keep finished sessions visible until dismissed
herdrSync On Snapshot Herdr-detected agent panes into the fleet each poll (no-op without Herdr)

Remove

omarchy plugin remove io.github.jeremylongshore.crew-chief

To unwire the hook, restore the backup the installer made (~/.claude/settings.json.crew-chief.bak) or delete the crew-chief-event entries from ~/.claude/settings.json.

Dependencies

  • jq (ships with Omarchy), used by the hook scripts and reporter.
  • At least one agent harness to watch: Claude Code (hooks, any 2025+ release), Codex CLI (notify), or anything that can invoke crew-chief-report.

Development

The offline lane covers model behavior, hooks, every adapter, descriptor-bound state races, accessibility, exact marketplace copy, coverage, mutation, and presentation contracts:

npm ci
npm test
npm run test:race
npm run test:mutation
npm run audit

npm run test:e2e performs validator, qmllint, and live-shell rendering on the configured Buzz Omarchy rig.

Maintainers wanted

These plugins are growing, and we are looking for dependable Omarchy users who want to review issues, test releases, and keep a plugin healthy over time. Start with a small pull request or open a maintainer interest issue titled Maintainer interest. Tell us which plugin you use and how you want to help. Consistent contributors can earn maintainer responsibility.

License

MIT. See LICENSE.