A small local CLI that builds an automatically maintained view of active coding work across your machines.
It scans:
- configured project directories (direct children only — fast & predictable)
- per-repo: git branch, dirty state, last commit, recent commits within a window
- running
claude,codex,gemini,openclaw,xcodebuild,gradle,npm/pnpm/yarn, plus anything you add - optional
openclaw sessions list/tasks listoutput when the binary is available
Output is two sidecar files at ~/.openclaw/workspace/:
current-work.md— readable Markdown view, friendly for cross-machine browsingcurrent-work.json— structured payload consumed by the native macOS menu bar app inmac/
Requires Python ≥ 3.11.
git clone https://github.com/nvwalj/worknow.git
cd worknow
python3 -m pip install -e .Then run:
worknow # one-shot
worknow --watch 300 # refresh every 5 minutes (minimum 10s)
worknow --versionIf editable install is inconvenient on a machine, the self-contained wrapper works without pip install:
./bin/worknow
ln -sf "$PWD/bin/worknow" ~/.local/bin/worknowOn macOS, install automatic refresh every 5 minutes via launchd:
./bin/install-launchd-macosUninstall it with:
./bin/uninstall-launchd-macosConfig lives at ~/.config/worknow/config.toml. Run worknow --config-init to seed it with defaults.
Example:
output = "~/.openclaw/workspace/current-work.md"
project_roots = [
"~/projects",
"~/Project",
"~/.openclaw/workspace",
]
process_keywords = [
"claude", "codex", "gemini", "openclaw",
"xcodebuild", "gradle", "npm", "pnpm", "yarn",
]
ignored_process_fragments = [
"Google Chrome Helper",
"chrome_crashpad_handler",
]
max_projects = 80
recent_commit_days = 7If no config exists, worknow uses the defaults baked into cli.py.
A small AppKit menu bar app lives in mac/. It reads the JSON sidecar the CLI writes and surfaces:
- a menu bar badge with the active task count — a "task" is a tracked git repo that is dirty OR has a coding agent process running inside it
- a draggable floating panel (click the menu bar icon to toggle) listing active repos and agent processes
- auto-refresh every 30 seconds; panel position persists across launches
Build & run:
cd mac
./build.sh # compiles a single-file Swift binary (no Xcode project)
./worknow-mac # run once, look in the menu barAuto-start at login:
./install-launchd-macos
./uninstall-launchd-macos # to removeThe app only displays data — it does not run the scanner itself. Schedule the Python CLI (e.g. via bin/install-launchd-macos) so the JSON stays fresh.
This repo is self-contained — push your fork wherever, clone on each dev machine, and run pip install -e .. Machine-specific paths stay in ~/.config/worknow/config.toml and never touch git.
python3 -m pip install -e '.[dev]'
pytestMIT — see LICENSE.