Skip to main content

project-manager-tui

A terminal task board for people running coding agents in git worktrees.

Tasks live in plain Markdown that you and the agents both edit. pm-tui renders them as one list ordered by what needs you: agent requests waiting on an answer first, then your open tasks, with everything an agent is busy with hidden until you ask to see it. One keypress opens a task's worktree, starts its agent, or releases its branch — the TUI shells out to a script you supply for all of it, so it knows nothing about tmux, ssh or your remote host.

Install

pip install project-manager-tui
pm-tui

Requires Python 3.9+.

Configure

~/.project-manager-tui.toml:

# Required.
agent_worktree_script = "/path/to/agent-worktree.sh"
projects_dir          = "/efs/me/projects"

# Optional, with their defaults.
projects_filename = "Projects.md"
git_repo_dir      = "."          # the cwd `go` is run in
sync_interval     = 300          # seconds between `sync-master` runs
editor            = "$EDITOR"    # falls back to vim
approvals_dir     = ""           # default: {projects_dir}/../approvals

agent_worktree_script is the only real dependency, and writing one is the bulk of the setup — see the contract below.

Layout

projects_dir/
  Projects.md              ## Active / ## Future / ## Archived, one slug per line
  my-project/
    Project.md             the task list
    tasks/3/Task.md        one task's brief, created on demand

A task is a numbered line in Project.md:

1. [ ] rewrite the fill parser
2. [ ] backfill september >1          blocked until task 1 closes
3. [ ] chase the vendor >2026-09-20   pinned to a date
4. [x] delete the old path

The state character drives everything:

state meaning
[ ] todo
[i] an agent is running /ready on it
[t] tested
[r] released — branch pushed to master
[d] delivered — deployed
[v] verified — you have seen it work
[x] complete
[s] [z] snoozed / snoozed forever

[x] and [v] are what unblock a dependent task. [i] [t] [r] [d] mean underway, so the task is not offered as new work.

Keys

Task view:

j/k  navigate                 z  snooze: 1H/2H/4H/8H/1D/2D…
t    vim Task.md              u  unset: clear state + time snooze
p    vim Project.md           c  complete
v    view worktree            r  release (mark [r])
g    go: start its agent      d  delete task
s    switch to worktree       V/Z/B/W  show verified/snoozed/blocked/working
                              P  project view, ?  help, q  quit

Approval rows (!) — requests an agent has filed and cannot execute itself:

Enter  review + run it        i  inspect the request JSON
x      reject, with a reason  t/p  vim the filing task's Task.md/Project.md
v      view the agent         z  snooze,  u  clear a hold nothing is paying

Status light

pm-tui --web            # TUI plus the status page
pm-tui --web-only       # just the page, no TUI

Serves a full-window light on port 8899: green when the default view is empty, amber with a count when something wants you, grey when the count is too old to trust. --web-port, --web-bind and --web-interval move it; /status.json is the same thing as JSON. Park it on a second screen and stop checking.

The agent-worktree.sh contract

The TUI never touches git, tmux or ssh itself. It invokes your script with list, add, rm, switch, view, go, release, approve and sync-master, and the shipped contract document specifies each one — the exact list output format, which status tokens the working filter and the status light read, what may prompt and what may not, and the approval queue's on-disk format, statuses and leases.

It ships inside the package:

python -c "import importlib.resources as r, sys; \
  sys.stdout.write((r.files('project_manager_tui') / 'agent-worktree-contract.md').read_text())"

Read it before writing a script. Several of the TUI's behaviours — hiding busy worktrees, the green light, a go that does not steal your terminal — are conventions your script has to hold up its end of, and a script that ignores them still runs, just quieter than it should.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_manager_tui-0.1.14.tar.gz (46.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_manager_tui-0.1.14-py3-none-any.whl (48.5 kB view details)

Uploaded Python 3

File details

Details for the file project_manager_tui-0.1.14.tar.gz.

File metadata

  • Download URL: project_manager_tui-0.1.14.tar.gz
  • Upload date:
  • Size: 46.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.8

File hashes

Hashes for project_manager_tui-0.1.14.tar.gz
Algorithm Hash digest
SHA256 540600a14aefae7979464661bb8072e614c7ecad37d5967cd6176ffdfead0b3a
MD5 9c7255b9d228ecee4df6e4ad49020d3c
BLAKE2b-256 52006017d25872d65ad10205ec9adf425463bddac59bc045d0f1778370d44383

See more details on using hashes here.

File details

Details for the file project_manager_tui-0.1.14-py3-none-any.whl.

File metadata

File hashes

Hashes for project_manager_tui-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 1636690b7e6edd834c74d795e2f7a3587f3e13e4fd3b67b2271697e390d6912f
MD5 2ed75347eafe448a4706274c13885925
BLAKE2b-256 5b4f733f5b7a5404c0095972b385496e4c5f67e8f5c0d2f96498c36ef8114a71

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.22

2 files

0.1.21

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

This release

0.1.14 This release

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page