A projects directory grows past the point where you can hold it in your head. ProjectMan indexes it, shows the git state and outstanding work for every project in it, and launches a session into the one you pick.
pm is a console picker: type to filter, Enter to launch. Every action is
Ctrl-modified, because bare letters go to the filter.
ProjectMan.exe is the same data as a desktop dashboard, and both read
and write the same settings from one shared description of the editable surface, so
adding a setting adds it to both.
Where a launch lands depends on one thing: whether Docked Console is installed. With it, sessions go into a column of the dock and the list stays up. Without it, the console hands over the terminal you are sitting in and the desktop app opens a new window.
It never runs wt to do that. It asks the dock and the dock splits
itself, because Windows Terminal keeps elevated and unelevated windows in separate
worlds, and aiming at the wrong one does not fail cleanly: it makes a new window that
permanently steals the name.
gh and cached, so a sweep of a large tree does not turn into a rate-limit conversation.- [ ] left in markdown anywhere in the project. Plans you wrote and did not finish are work, whether or not a tracker knows about them.When work is outstanding in several places at once, dispatch lists every item as a checklist. Tick what you want worked and one session runs with each selected repository passed in and a briefing of what is outstanding where. Selection is per item rather than per repository, so one repo can contribute some of its work and not the rest.
The run happens inside ProjectMan, not in a terminal. The session's event stream is rendered as it arrives: what it says, one line per tool call, and any error a tool returned. The run ends with a summary of how long it took, how many turns, and what it cost, and a session signed in on a subscription says so rather than quoting an API bill it never incurred.
General instructions scope a run to one job across the selected repositories instead of working the items as found, which is how "rename every default branch to main" or "bring the docs up to the current code" becomes one pass rather than eleven. Preview shows the whole briefing before anything launches, exactly as the session receives it.
Each rung contains the ones below it, and it drives both the flags a session launches
with and what a dispatch briefing permits, so the two can never contradict each other.
commit is the default.
suggestwritegit diff.commitgit reset undoes it.pushfullpm # browse and launch pm ls [--dirty] [--repos] [--sort recent|name|dirty|open] [--json] pm status <name> # one project in detail pm go <name> [-c|-r] [--window] pm open <name> [--window] # a plain shell there pm items [--json] # every outstanding item across the tree pm dispatch [--all] [--dry-run] [-i "<instructions>"] pm doctor # resolve git, claude and wt, and time a sweep
A name matches on exact name, then unique prefix, then unique substring, and a repository inside a container directory is qualified by it, so two checkouts of similar things stay distinguishable.
A second product ships from the same repository as its own installer: a stdio MCP
server exposing exactly one tool, get-projects, which returns every
project under the root with its git state and open work as one JSON object.
It reports and nothing else. No launching, no dispatching, no writing, and it never creates a config. That last part is why it requires ProjectMan: it reads the same settings file to learn the projects root, and without one there is nothing to report on. Its installer checks and refuses rather than guessing a root.
git on PATH.claude for launching, gh for pull requests and issues, Windows Terminal for the desktop front end, and Docked Console 0.4.0 or newer for dock launches. Each is optional and only that feature is unavailable without it.ProjectMan is an internal Locke Werks tool. The source is private and there is no public download.
For access, licensing, or a conversation about running something like this over your own tree, write to archon@lockewerks.com.