Start with what’s already running.
etop discovers listeners and Alloy targets, recognizes metric signatures, and builds dashboards. Add a URL yourself when discovery needs a hand.
THE EXPORTER EXPLORER
Find out what your host is doing.
Live dashboards, cgroup memory, and queries — built from the metrics you already expose.
Open source · Linux · Local or over SSH

One host. A focused investigation.
One SSH connection. No remote etop install.
Your exporters. No Prometheus server required.
LESS SETUP. MORE UNDERSTANDING.
A familiar terminal workflow, with the context to make the numbers useful.
etop discovers listeners and Alloy targets, recognizes metric signatures, and builds dashboards. Add a URL yourself when discovery needs a hand.
Walk the cgroup hierarchy. Separate anonymous memory, file cache, kernel memory and swap. Inspect pressure, limits and OOM events, with notes on what overlaps.
Illustration · swap is shown separately from RAM.
First-class arianvp/cgroup-exporter integration ↗Pick an automatic query suggestion, then make it your own. Filter labels, rank memory users or group I/O rates. Drill into the underlying series and its session history.
topk(10, cgroup_memory_anon_bytes)A local PromQL-style subset, using the samples collected this session.
FIRST-CLASS INTEGRATION
arianvp/cgroup-exporter is our recommended integration for Linux cgroup v2.
The exporter collects the measurements.
etop makes them explorable.
# With cgroup-exporter running on your host:
etop --local -e http://127.0.0.1:13232/metrics
# Or reach its loopback endpoint over SSH:
etop user@host -e http://127.0.0.1:13232/metricsPort 13232 is checked even without ss. NUMA and zswap metrics are accessible in Metrics and Queries.
Optional NixOS setup with nixpkgs.follows ↗Enables the upstream exporter bound to loopback.
A SHORT PATH TO YOUR METRICS
Read-only collection. History in memory.
No remote etop installation needed.
Resource measurements come from exporters.
No direct /proc or systemd resource collection.
MAKE YOURSELF AT HOME
Try the synthetic demo first.
Then point etop at your own host.
# Take a look. No host needed.
nix run github:clushie/etop -- --demo
# Follow the metrics on your host.
nix run github:clushie/etop -- user@host
# Or stay local.
nix run github:clushie/etop -- --localx86_64-linux + aarch64-linux. Nix bundles local tools.
The SSH target needs curl; ss improves discovery.
# In your existing flake inputs:
etop.url = "github:clushie/etop";
etop.inputs.nixpkgs.follows = "nixpkgs";
# In a NixOS module with etop in scope:
({ pkgs, ... }: {
environment.systemPackages = [
etop.packages.${pkgs.stdenv.hostPlatform.system}.default
];
})Share your system’s nixpkgs input. See the complete flake ↗
Home Manager works too: use home.packages.
# Install the wheel from GitHub Releases.
pipx install https://github.com/clushie/etop/releases/download/v0.1.0/etop-0.1.0-py3-none-any.whl
etop --demo
# Or install a downloaded wheel with pip
# inside your Python virtual environment.Linux · Python 3.11+ · curl + openssh for collection.
Wheel, source archive and checksums ↗
GOOD TO KNOW
No Prometheus server or remote etop installation is needed. etop reads exporters that are already running. Over SSH, the observed host needs curl and optionally ss. If you have no exporters, start with etop --demo.
Press e to add a metrics URL while running, or use --endpoint URL on startup. Supply --alloy URL for a custom Alloy address. Use --no-discover to limit collection to explicit targets.
It is a focused local subset: selectors, label matchers, arithmetic, rates, grouping and top-k. Queries use the selected exporter’s retained session samples. There is no historical backfill, cross-exporter joining or Prometheus extrapolation.
Yes. The terminal app follows terminal appearance reports or your local desktop preference, with a background-color fallback. Press t to cycle themes, or use --theme light / --theme dark. This website follows your browser’s system preference in Auto mode.
The screenshots and 28-second MP4 are captured from the actual etop UI with deterministic synthetic samples. The tour shows Overview, Cgroups, memory details and Queries. The recording script is included in the repository; no real host data is used.
TERMINAL TOOLS
| Feature | btop | below | otel-tui | Ember | grom | promexplorer | Peat | etop |
|---|---|---|---|---|---|---|---|---|
| GitHub stars | 35,047 | 2,536 | 1,109 | 386 | 54 | 29 | 0 | 0 |
| First GitHub release | None | |||||||
| Latest release | v1.4.7 | v0.11.0 | v0.7.5 | v1.6.2 | v0.3.0 | v0.0.5 | None | v0.1.0 |
| Capabilities | ||||||||
| Metric source | Kernel | Kernel | OTLP / exporters | Caddy APIs | Prometheus | Exporter | Prometheus | Exporters |
| Target setup | Local host | Local host | Explicit targets | Caddy address | Backend | Explicit URL | Backend | Listeners + Alloy |
| Built-in SSH collection | — | — | — | — | — | — | — | Yes |
| Cgroup tree | — | Yes | — | — | — | — | — | Yes |
| Queries | — | — | — | — | Backend PromQL | — | Backend PromQL | Local subsetFull PromQLVote for this feature |
| History | Session charts | Record / replay | JSON import | Session charts | Backend | — | Backend | SessionSave & replayVote for this feature |
| Grafana JSON import | — | — | — | — | Yes | — | — | NoVote for this feature |
| Traces | — | — | Yes | — | — | — | — | NoVote for this feature |
| Logs | — | — | Yes | Yes | — | — | — | NoVote for this feature |
— Not documented No Unsupported None No published release Backend Separate metrics server
Dates: first published stable GitHub release and GitHub’s latest stable release. Headings and dates link to sources. Feature votes use GitHub Discussion upvotes; proposals are not release commitments.
YOUR NEXT INVESTIGATION STARTS HERE