Process tracking

wsx lists the long-running processes working inside each workspace's worktree, such as dev servers and watchers. Use it to find and stop what a workspace left running, or to start a command there without opening a terminal.

A workspace with tracked processes shows a count like ● 2p on its dashboard row. Press K on the row, Ctrl-x k while attached, or click the count to open the list:

  PID    COMMAND          CWD
  12345  npm              /home/user/wt/fix-bug
  12389  pytest           /home/user/wt/fix-bug/tests
[↑/↓] move   [r] run   [k] term   [K] kill   [esc] close
KeyAction
↑ / ↓Move the selection
kSend SIGTERM to the process
KSend SIGKILL to the process
rRun a command in the worktree
escClose

j and k don't move the selection here, because k stops a process.

Running a command

r runs a command with sh -c in the worktree, in the background. Output goes to a log file under ~/.local/state/wsx/logs/, and wsx shows the path. The command keeps running after you quit wsx, and it appears in the list so you can stop it with K.

What's listed

  • Processes whose working directory is inside the worktree.
  • Not shells and editors (bash, zsh, nvim, code, and so on).
  • Not helpers that Claude Code and editors start, such as MCP and language servers, unless they listen on a TCP port. A dev server started from inside Claude Code still shows.

Archiving stops processes

Archiving a workspace, with d or wsx workspace archive, stops every listed process before it removes the worktree. Each gets SIGTERM, then SIGKILL after two seconds. --keep-worktree skips this. A process wsx can't signal, such as one owned by another user, is reported and the archive continues.

Requirements

Process tracking needs lsof. Without it, the count stays at 0 and the list is empty.