npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@aibulat/etop

v0.7.1

Published

Full-screen terminal dashboard for libsysmon: CPU, memory, disk, network, processes and containers

Readme

etop

A full-screen terminal dashboard for CPU, memory, disk, network, processes and containers — built on libsysmon's collectors, drawn with Ink.

npx @aibulat/etop
etop 0.6.0 · srv-01 · Linux 6.18.32 · up 5d 18h · 1.0s
 dash   proc  units  cont  stacks  conn  wifi          Tab ▸ screen
╭────────────────────────────────────╮╭────────────────────────────────────╮
│CPU 16C                          21%││MEM                              66%│
│                    ▄▆▅▄▄▄▄▃▂▁▄▃▄▄▆▅││MEM  [███████▍   ] 14.7 / 22.3 GiB  │
│C00 [███████] 100% C01 [       ]  0% ││███████████████████████████▓▓▓░░░░░░│
│C02 [▊      ]  11% C03 [       ]  0% ││used 14.7 GiB  cache 2.3 GiB        │
╰────────────────────────────────────╯╰────────────────────────────────────╯
╭────────────────────────────────────╮╭────────────────────────────────────╮
│NET wlan0                      1/34 ││DISK /                           95%│
│↓ 87.9 KiB/s  total 216.2 MiB       ││[█████████████▍] 909.9 / 952.4 GiB  │
╰────────────────────────────────────╯╰────────────────────────────────────╯
╭────────────────────────────────────╮╭────────────────────────────────────╮
│PROC 42                             ││CONTAINERS 14                       │
│    PID %CPU▼       MEM THR S COMMAND│CONTAINER    RUNTIME %CPU   MEM LIMIT│
│2119963  56.5 475.5 MiB  38 S chromiu│101204468cc9 docker   0.0 1.1 G    ∞ │
╰────────────────────────────────────╯╰────────────────────────────────────╯
q quit · ? help · w panel · Space pause · / filter

Install (optional)

npx @aibulat/etop needs no install. If you reach for it often enough to want a shorter command:

npm install -g @aibulat/etop
etop

Node 22 or newer. If you only want numbers to script against, install libsysmon instead — it runs on Node 18, has one runtime dependency, and cpumon --json pipes into jq.

Keys

? inside the dashboard shows them all. The essentials:

| Key | | | --- | --- | | q | quit | | Tab | move between screens | | w 16 | move between panels, on the dashboard | | Space | freeze the view (sampling continues) | | / | filter processes by name or pid | | c m p n s | sort the process table | | + - | change the sampling interval | | K | send a signal — needs --allow-kill |

Options

npx @aibulat/etop [options]
  -i, --interval <ms>  sampling interval in milliseconds  (default: 1000)
      --mount <path>   filesystem the disk panel reports on
      --theme <name>   auto, default, ansi16 or mono
      --graph <style>  auto, block, braille or ascii
      --allow-kill     enable sending signals to processes from the table
      --no-color       draw without colour

Notes

Screens, then panels. Tab walks whole screens — the dashboard, a full-height process table, containers, compose stacks, systemd units, tcp and udp connections, and wifi. Inside the dashboard, w and 16 move between the tiles.

It adapts to the terminal rather than assuming one. Truecolor, 256-colour, 16-colour and monochrome all get a theme that stays legible; a non-UTF-8 locale or the Linux console gets ASCII graphs and borders with nothing outside ASCII in the frame. Panels are dropped whole rather than squeezed as the window shrinks, down to a single-panel mode that w walks; the tab bar sheds tabs from the end rather than the one you are on.

It is honest about what it cannot read. Network, per-process figures and containers need /proc, so on macOS and Windows those panels are removed and the rest reflow, with one line saying why. A read that failed for a reason you could act on keeps its panel and reports the reason instead.

Signals are off by default. --allow-kill turns them on; the confirmation names the process, pins it when the modal opens, freezes the list underneath, defaults to SIGTERM, and confirms on y rather than Enter.

Full documentation: https://github.com/ngmaibulat/cpumon#readme

Licence

MIT.