MandyTop
A Windows Terminal resource monitor inspired by btop, styled with a transgender color palette.
Features
- Live CPU graph with per-logical-CPU meters
- Memory graph and live network throughput graph
- Disk usage table with used/free/total values
- System panel with OS, machine name, uptime, AC/battery status
- Sortable process list with CPU, memory, threads, PID and executable path details
- Optional parent/child process tree with parent PID, handle count, priority and start time
- Process filtering and guarded process kill confirmation
- JSON snapshot export from the live view
- CSV export of the current filtered process list
- Copy the selected executable path to the Windows clipboard
- Session network totals and memory commit/available statistics
- Dedicated USB page for connected/installed USB devices and installed USB drivers
- Guarded USB device enable/disable actions through Windows PnP
- Dedicated services page with service state, start mode, PID and path details
- Guarded service start, stop and restart actions
- Service dependency details for selected services
- Network page with active TCP/UDP endpoints and owning processes
- Startup page with registry startup commands and logon/boot scheduled tasks
- Eventlog page with recent Windows errors and warnings
- System drivers page with guarded driver start/stop actions
- Security page for Defender, firewall, latest hotfix, reboot status, GPU and thermal data
- Process priority changes for the selected process
- Live action/error/export log pinned to the bottom of the terminal
- Health score from CPU, RAM, disk pressure, eventlog, Defender, firewall and pending reboot state
- Task Scheduler page with guarded task enable/disable/start actions
- Firewall rules page with guarded rule enable/disable actions
- Local users/groups page with administrator membership and last logon
- Per-process CPU/RAM mini-graphs in the selected process detail panel
- Process tree kill, process suspend and process resume actions
- Per-process network connection counts in process details
- MandyTop start splash in transgender colors
- MandyTop ASCII art in transgender colors on wide terminals
- Fast live loop: heavy Windows inventories are cached, loaded in the background, and refreshed per page instead of blocking CPU/RAM/process updates
- Scriptable
--json,--once,--versionand--helpmodes
Run
dotnet run --project .\MandyTop.csproj
Or build a release executable:
dotnet publish .\MandyTop.csproj -c Release -o .\publish
.\publish\MandyTop.exe
If Windows blocks loading the separate MandyTop.dll, build the single-file release:
dotnet publish .\MandyTop.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true -o .\publish-v0.7-single
.\publish-v0.7-single\MandyTop.exe
A tested single-file build is included at:
.\release\MandyTop.exe
Keys
q/Esc: quith/F1: helpSpace: pause1: monitor/process page2: USB devices/drivers page3: services page4: network connections page5: startup entries page6: eventlog page7: system drivers page8: security/updates/firewall/hardware page9: Task Scheduler pageF9: firewall rules pageF10: local users/groups page//f: edit the current page filter0: clear the current page filters: save current snapshot as JSON+/-: change update intervalUp/Down: move selectionPageUp/PageDown: move fasterHome/End: select first/last item
Monitor Page
Tab: cycle process sort columnr: reverse process sortt: toggle the parent/child process treeBackspace: edit filter text while filteringp: arm priority change toAboveNormaln: arm priority change toNormalb: arm kill for the selected process treez: arm suspend for the selected processu: arm resume for the selected processc: copy the selected executable pathe: export visible processes as CSVx/Delete: arm kill for selected processEnter: confirm a pending kill
USB Page
d/x/Delete: arm disable for selected USB devicea: arm enable for selected USB deviceEnter: confirm a pending USB actionc: copy the selected USB InstanceIde: export visible USB devices and installed USB drivers as CSVr: refresh USB inventory
Services Page
o/x/Delete: arm stop for selected servicer: arm restart for selected servicea: arm start for selected serviceEnter: confirm a pending service actionc: copy the selected service namee: export visible services as CSVTab: refresh service inventory
Network Page
x/Delete: arm kill for the owning processc: copy selected connection detailse: export visible connections as CSVr: refresh network inventory
Startup Page
c: copy selected startup commande: export visible startup entries as CSVr: refresh startup inventory
Eventlog Page
c: copy selected evente: export visible events as CSVr: refresh event inventory
Drivers Page
o/x/Delete: arm stop for selected drivera: arm start for selected driverc: copy selected driver namee: export visible drivers as CSVr: refresh driver inventory
Security Page
c: copy security summarye: export security summary as CSVr: refresh security inventory
Task Scheduler Page
x: arm start for selected scheduled taska: arm enable for selected scheduled taskd/Delete: arm disable for selected scheduled taskc: copy selected task path/namee: export visible tasks as CSVr: refresh task inventory
Firewall Page
a: arm enable for selected firewall ruled/x/Delete: arm disable for selected firewall rulec: copy selected rule namee: export visible firewall rules as CSVr: refresh firewall inventory
Users / Groups Page
c: copy selected user/group detailse: export visible users/groups as CSVr: refresh users/groups inventory
USB disable/enable, process priority changes, process suspend/resume, driver start/stop, scheduled task changes, firewall changes and many service actions require an elevated Windows Terminal. If Windows denies the operation, MandyTop keeps running and shows the error in the status bar and live log.
Per-process network traffic byte rates are not exposed by the built-in Windows APIs used here without a heavier ETW collector. MandyTop currently aggregates network ownership by process connection counts and established connection counts.
Performance note: the live UI loads expensive Windows inventories lazily. Pages such as Tasks, Firewall, Users, Drivers and Eventlog may take a moment to populate the first time you open them, but CPU/RAM/process rendering keeps updating while that happens. --once and --json still collect a full diagnostic snapshot synchronously.
Test Snapshot
dotnet run --project .\winbtop\winbtop.csproj -- --once
dotnet run --project .\winbtop\winbtop.csproj -- --json