Processes
What is running, busiest first, and who holds a port
palupdated 2026-10-27SystemComes with pal
Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.





What it does
What is running, busiest first, with its memory; type :3000 to see what listens on a port. Kill a process or open it in Activity Monitor.
- Every process sorted by CPU then memory, with its pid and memory, busy ones tagged with their CPU share
- Search by name or pid;
:3000lists what listens on that port,:alone every listener - Filters for your own processes, the top CPU users and the top memory users
- Kill or force kill (
cmd+shift+k) after a confirm, and the list stays open - App icons for processes that belong to an app;
cmd+ofinds the process in Activity Monitor cmd+ishows the process as a page: where it runs from, its CPU, memory and pid large, then parent and user
Palettes 1
-
Processes
processesinputEvery process, by CPU then memory.
- ↵Kill (asks first)
- ⌘⇧KForce kill (asks first)
- ⌘CCopy the pid
- ⌘OOpen in Activity Monitor (macOS)
Actions
- KillSIGTERM, after a confirm.↵
- Force killSIGKILL, after a confirm.⌘⇧K
- Copy PID⌘C
- Open in Activity MonitormacOS: brings Activity Monitor up with the pid in its search field.⌘O
Settings
Extension, [extensions.processes]
include_systemDefaults shown. Change them in pal's settings window or in the config file.
The README
Everything Processes does, key by key, from the extension's own README.md
Processes
What is running, from ps, listed again on every keystroke because the
set changes constantly (an input palette; the root only has its own row).
The query matches the name or a pid prefix. The row is the executable's
name, its pid the subtitle with the full path after it on macOS (Linux
ps gives only the name; an app's process shows its icon instead); the
resident memory sits on the right, and a process above 10% CPU carries a
NN% cpu tag (amber, red from 50%). Rows are sorted by CPU, then memory.
On macOS a process that lives in a .app bundle gets that app's icon, any
other a chip glyph. The detail pane (cmd+i) leads with the full command
and the name, the CPU share, the memory and the pid large, then the parent
pid and the user.
A query of : and digits lists what listens on TCP ports instead of
processes: :3000 that port, :30 every port starting with 30, :
alone every listener. One row per process and port with the port as a
blue tag and the address and pid as subtitle; a process ps knows gets its usual
numbers and icon. ss -ltnp on Linux, else lsof -iTCP -sTCP:LISTEN
(macOS ships it). A row's id is pid:port, and it has the same actions.
The filter dropdown (tab cycles it) scopes the list:
| filter | rows |
|---|---|
| All | everything (the default) |
| Mine | your own user's processes |
| Top CPU | the 25 busiest |
| Top memory | the 25 largest, by resident memory |
Keyboard
| keys | action |
|---|---|
enter |
Kill: SIGTERM, after a confirm; the palette stays open and lists again |
cmd+shift+k |
Force kill: SIGKILL, after a confirm |
cmd+c |
Copy PID |
cmd+o |
Open in Activity Monitor (macOS): brings the app up and types the pid into its search field |
tab |
Next filter |
A kill that fails (a process of another user, a pid that is gone) keeps the panel open with a toast carrying the OS's message.
Setup
Nothing to install: ps is everywhere, lsof ships with macOS, ss
with most Linux distributions (without either the port query shows one
hint row saying which to install). Open in Activity Monitor types the pid
through System Events, which asks for Automation once and needs
Accessibility for the keystrokes; without it the app just comes up.
Settings, [extensions.processes]:
| key | type | default | what |
|---|---|---|---|
include_system |
bool | false |
List system processes too: pids below 100, and kernel threads (children of kthreadd) on Linux. |
What it does not do
- Kill by name: the rows are processes, one pid each. Type the name, then kill the rows you mean, one at a time.
- Killing another user's process: no sudo, so the toast carries the OS's refusal.
- Other signals:
SIGTERMandSIGKILLonly. - UDP or remote sockets: the port query lists TCP listeners.
- pal's own host process is left out of the list.
Platforms
macOS and Linux. The full path in the subtitle, app icons and Open in
Activity Monitor are macOS; kernel threads and ss are Linux.


