nc://project-manager

v0.1.0Pinned
ThomSharklint: the rewrite cells published since 846d0b0 pass the structural lint (#109)0caf25c· 9 Nov2 commits
test2 filescell.lisp24.5 KB

nodecode-project-manager

Project Manager: every git repository under your own folders, with its branch, last commit and what is uncommitted. A Nodecode rewrite of AiSolve-me/hermes-project-manager by AiSolve-me.

Point it at the directories your repositories live in and ask what you have:

2 projects under /home/you/src:
  name  branch  last commit
  api  main  a1b2c3d 2026-11-01 09:30  fix the login flow  (2 changed)
  web  feature/api  77aa001 2026-10-20 08:00  add the api

It reads; it never writes. git status, git log, git for-each-ref and git rev-list under each project answer the list, the detail, the branches and the commits, and nothing is staged, committed, fetched or pushed.

Get it

Tell the agent "add the project manager cell", or run nodecode add nc://project-manager.

Set it up

{
  "project-manager": {
    "watch_paths": ["~/src", "~/work"],   // required: where your repositories are
    "depth": 2                              // how many levels below each one to look
  }
}

watch_paths is the one required key: a folder is a project when it holds a .git (the folder of a normal clone, or the file a worktree keeps). Without the key the cell refuses to start and /cells says so. The rest is optional: depth (2), max_projects (50), commits (10), branches (25), changed_files (20) and cache_seconds (15) bound one answer and how long a scan is remembered.

Use it

/projects lists every project and opens a picker with a row for each; /projects web keeps what the search names.

The model has five tools: list_projects (with an optional search), get_project (path, branch, distance from the upstream, last commit, changed files, origin), list_branches (newest commit first, the checked-out one marked), get_recent_commits (limit, branch) and list_watch_paths. The same scans are Lisp functions in the projects: package, called through eval:

(projects:projects)                       ; every project, one line each
(projects:project "api")                  ; one project in full
(projects:branches "api")                 ; its local branches
(projects:commits "api" :limit 20 :branch "main")
(projects:watch-paths)                    ; the roots, and what each holds

(help :projects) is the model's manual. Every answer is a string; a refusal is ERROR: PROJECT-MANAGER-ERROR with the reason.

What it does not do

The original is a desktop dashboard: a FastAPI server, its browser UI, docker stack status, worktree and staging screens, and push and pull buttons. This cell keeps the scanning and the reading behind them, and leaves the writing to the git you already run. See NOTICE.

Add nc://project-manager

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 0caf25c.

    $ nodecode add nc://project-manager

    Or tell the agent add the project manager cell.