v0.3.0 — Your work at a glance.
Maintainer v0.3.0 gives your development on GitHub one place on your computer. maintainer service run serves a hub at http://maintainer.localhost:17841/: the checkouts of your collection and the GitHub issues their repositories mirror, across every repository and owner, in three pages, with milestones and project-board sections used to rank the issues and place them on one board. You no longer open repositories one by one to see what needs you. The hub works on the mirror files in your checkouts, which the tool that keeps the mirror holds in step with GitHub; it never reads from or writes to GitHub itself, needs no token or network and listens only on your own computer. On macOS, Homebrew runs it in the background as your user. Configuration, state and pins from v0.2.1 keep working.

Illustrations of the hub on demo data.
One place for every repository
/status,/inboxand/tabloread the same collection thatmaintainer fetchandmaintainer statusmanage, so the hub stays in step with your workspace.- The sidebar lists every repository whose issues the hub reads, as a tree by owner, with its count of open issues and a lock on private ones; a click opens its issues.
/or Cmd+K (Ctrl+K elsewhere) searches every issue of the collection and opens the one you pick as a full page, with a link to GitHub when its mirror has one.- Reindex reads the mirrors again after they change; the pages open in a dark theme and switch to light or to your system’s setting.

Status in the browser
- Every checkout grouped by its state: errors, uncommitted work, ahead or behind, orphans and clean ones, or grouped by owner.
- Branch, changes, status and path line up in columns from row to row; a board shows the same groups as columns.
- The page runs Git once on its first visit and on Refresh; ordering, grouping and search work on that snapshot.

Every issue in one inbox
- All mirrored issues of all repositories in one list, filtered by state, status, text, priority, estimate, labels, type, milestone, repository, owner or assignee.
- Grouped by status, priority, estimate, repository, owner, milestone or type, and ordered by a score, by priority or by date.
- An issue opens with its properties beside it: status, priority, estimate, labels, milestone, dates and the terms of its score.

A board across repositories
/tabloputs the issues of every repository on one board: Backlog, To do, In progress, Done and Won’t do.- A column follows the issue’s state and the To do, In progress and Backlog sections of your project boards; an issue that two boards place differently stays in Backlog with a marker.

Triage where you read
- Set the priority (the
impactlabel) and the estimate (theeffortlabel) of an issue from the inbox, the board or the issue page. - Only those label lines of the issue file change; a file that changed since the page read it is not overwritten. Pushing the labels to GitHub stays with the tool that keeps the mirror.

A score you tune
- The inbox ranks issues by impact, effort, type, age and the milestone’s due date, multiplied by a weight per repository.
service.tomlsets the weights, how many days until an issue counts as old, how many days before a milestone’s due date it starts to count, and a weight per repository.
Runs in the background
- One Homebrew Formula carries the CLI and the service; on macOS,
brew services start octolab/tap/maintainerkeeps the hub running and starts it again if it stops. - On its first start the service writes
~/.config/maintainer/service.tomlwith every setting commented out, so you can always look up where it listens. listeninservice.tomlmoves it to other loopback addresses, also underbrew services;--listendoes the same for one run.- The Cask is no longer published; switch to the Formula once.
Status reports visibility
maintainer status --format=jsonaddsvisibilityto a checkout,public,privateorinternal, asmaintainer fetchrecorded it.
Known limitations
- The hub reads the mirror files in your checkouts, not GitHub: an issue appears once the tool that keeps the mirror has written it, and after the next Reindex.
- Closing a full issue page leaves an extra entry in the browser history.
- Inbox rows do not mark issues with new comments.
- On Linux there is no service manager integration yet: run
maintainer service runyourself.
Upgrade: with Homebrew, run brew update followed by brew upgrade --formula octolab/tap/maintainer, then, on macOS, brew services start octolab/tap/maintainer to run the hub; if you still have the Cask, switch to the Formula first. With the install script, pass the tag: sh -s -- -b ~/.local/bin v0.3.0. With Go, run go install go.octolab.org/toolset/maintainer@v0.3.0. For a manual installation, use a v0.3.0 release archive . Run maintainer version to check the installed version. If you use the agent skill, replace it with the new binary’s copy.