Command line monitoring for goroutines

go get -u github.com/bcicen/grmon
Simply import and call grmon.Start() somewhere in your code:
import "github.com/bcicen/grmon/agent"
...
grmon.Start()
alternatively, you may just start the pprof server directly:
import (
"net/http"
_ "net/http/pprof"
)
...
go http.ListenAndServe(":1234", nil)
now grmon can connect to the running program:
grmon
By default, grmon will automatically refresh every 5s. Pause automatic refresh(p) to enable the cursor and expand the full trace for a selected goroutine(<enter>).
| Key | Action |
|---|---|
| r | manually refresh |
| p | pause/unpause automatic updates |
| s | toggle sort column and refresh |
| f | filter by keyword |
| \<up>,\<down>,j,k | move cursor position |
| \<enter>,o | expand trace under cursor |
| t | open trace in full screen mode |
| q | exit grmon |
| Option | Description | Default |
|---|---|---|
| -i | time in seconds between refresh, 0 to disable | 5 |
| -host | target host | localhost:1234 |
| -endpoint | target endpoint path | /debug/pprof |
$ claude mcp add grmon \
-- python -m otcore.mcp_server <graph>