Integrated repository, worktree, git stacker, and project manager
0

Configure Feed

Select the types of activity you want to include in your feed.

README.md

pm — systemd user units#

Units that keep the canonical-repo store warm, its pinned branches up to date, and the agent-session tracking daemon running.

File Role
pm-repo-mgmt.service Runs pm repo pull + pm repo maintenance (fetch, ff-only, gc).
pm-repo-mgmt.timer Fires the service 15s after boot and every 15 minutes thereafter.
pm-serve.service Long-running pm agent serve session-tracking daemon (auto-restart).

The services use %h so they work for any user; they expect pm at ~/.local/bin/pm — adjust ExecStart= if your install lives elsewhere.

pm-serve (agent session tracker)#

pm agent serve is a loopback HTTP+SSE daemon that tracks live agent session status. It ingests best-effort lifecycle-hook events (POST /api/status), keeps live state in an ephemeral WAL SQLite store (recreated on each start), backfills via a transcript-tailing poller, and pushes updates over SSE (GET /api/stream, with ?meta.<KEY>=<val> / ?agent= / ?project= / ?status= server-side filters). It is a pure observer — no action endpoints. Port and paths come from [serve] in the pm config (default port 8787, db ~/.pm/serve.db).

Install the hooks that feed it (idempotent, user level):

pm agent install-hooks            # both Claude + Codex
pm agent install-hooks --no-codex # Claude only

This writes a fire-and-forget reporter to ~/.pm/hooks/status-reporter.sh and registers it in ~/.claude/settings.json and ~/.codex/hooks.json (backing each up to *.pm-bak). Hook failures are logged to ~/.pm/hook-debug.log and never block the agent. Sessions launched with PM_META_* env vars carry those into the session's meta for filtering (e.g. an Emacs client sets PM_META_SOURCE=emacs).

Install#

ln -sf "$PWD"/pm-repo-mgmt.service ~/.config/systemd/user/
ln -sf "$PWD"/pm-repo-mgmt.timer   ~/.config/systemd/user/
ln -sf "$PWD"/pm-serve.service     ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now pm-repo-mgmt.timer
systemctl --user enable --now pm-serve.service

Verify:

systemctl --user list-timers pm-repo-mgmt.timer
journalctl --user -u pm-repo-mgmt.service -n 20

Uninstall#

systemctl --user disable --now pm-repo-mgmt.timer
rm ~/.config/systemd/user/pm-repo-mgmt.{service,timer}
systemctl --user daemon-reload