Skip to content
v0.10.3 ·built with Rust

Monitor containers across every host

dtop streams live CPU, memory, network and disk metrics from local, SSH, TCP and TLS Docker daemons into a single table in your terminal.

$ brew install dtop
Overview

Nothing to deploy, nothing to configure

No agents on the machines you're watching, no collector, no account. Point dtop at a socket and it starts drawing.

Multi-Host Support

Monitor containers across local, SSH, and TCP connections simultaneously from a single terminal session.

local /var/run/docker.sock
ssh deploy@edge-01:2222
tcp 192.168.1.100:2375
tls ops@db-eu:2376

Real-Time Metrics

Track CPU, memory, and network I/O per container with smooth exponential moving averages. A header adds machine stats for local and SSH hosts. Color-coded at a glance.

▂▃▅▆▇█▇▆▄▃▂▁▂▄▆▇█▇▅▄▃▂▁▂▃▅▆▇▆▄▃▂▁
ema α 0.3 · tick 500 ms
■ 0–50 ■ 50–80 ■ 80+

Fast & Lightweight

Built with Rust for minimal CPU and memory footprint. Starts instantly, runs silently in the background.

3.8 MB release binary
1.9 MB without self-update
0 agents to deploy
Config

Write it down once, or let dtop do it

Every flag can live in a YAML file. Or press Ctrl-S in the app and dtop saves your columns, sort and filters for you — keys you set by hand are preserved.

Search order
1 ./config.yaml or ./config.yml, ./.dtop.yaml, ./.dtop.yml
2 .config/dtop/config.yaml or .config/dtop/config.yml
3 .dtop.yaml or .dtop.yml

First file found wins. Command-line flags override whatever the file says.

Hosts
# == Hosts ==
# Docker host(s) to connect to. You can specify multiple hosts to monitor
# them simultaneously.
# Possible values for host: local, ssh://user@host, tcp://host:port, tls://host:port
# Optional fields per host: dozzle (URL), filter (list of Docker filters)
hosts:
  - host: local
  # - host: ssh://user@server1
  #   dozzle: https://dozzle.server1.com/
  #   filter:
  #     - status=running
  #     - label=environment=production
  # - host: tcp://192.168.1.100:2375
  # - host: tls://192.168.1.100:2376
Icons
# == Icons ==
# Icon style for the UI.
# Possible values:
#   auto    - Nerd Font icons on terminals that ship them built in
#             (Ghostty, WezTerm, kitty >= 0.36), Unicode elsewhere (default)
#   unicode - Standard Unicode icons (works everywhere)
#   nerd    - Nerd Font icons (requires Nerd Font)
icons: auto
Show All
# == All ==
# Whether to show all containers including stopped, exited, and paused.
# Possible values: true, false
all: false
Sort
# == Sort ==
# Default sort field for the container list.
# Possible values: uptime, name, cpu, memory
sort: uptime
Hyperlinks
# == Hyperlinks ==
# Render container names as clickable OSC 8 hyperlinks to Dozzle.
# Only applies to hosts that have a `dozzle` URL configured above.
# Unlike the 'o' key, this works over SSH: the link is opened by your local
# terminal, not the remote machine.
# Possible values:
#   auto   - enable on terminals known to support OSC 8 (default)
#   always - always render links. Inside tmux you also need:
#              set -ga terminal-features "*:hyperlinks"
#   never  - never render links
hyperlinks: auto
Stats Header
# == Stats Header ==
# Show the system stats header above the container list: CPU, memory and
# network for this machine, for each SSH host (read from its /proc), and
# summed over each host's containers.
# Press 't' to toggle it at runtime; Ctrl-S saves the current state.
# Possible values: true (default), false
stats_header: true
Columns
# == Columns ==
# Column visibility and order.
# List only the columns you want to see, in the order you want them.
# Omitted columns are hidden. Press 'c' in the UI to toggle columns interactively.
# Possible values: status, name, id, host, compose, image, ports, cpu, memory, pids, net_tx, net_rx, disk_read, disk_write, uptime, restarts
# columns:
#   - status
#   - name
#   - id
#   - host
#   - compose
#   - cpu
#   - memory
#   - net_tx
#   - net_rx
#   - uptime
#   - restarts
Reference

Flags

Generated from dtop --help, so it stays correct as the binary changes.

Hosts and filters combine — dtop --host local --host ssh://user@server -f status=running

Keys

Hands stay on the keyboard

A dozen bindings cover the whole surface. Press ? anywhere for the overlay.

↑↓ Move between containers
→ Stream this container's logs
← Back to the container list
Enter Start, stop, restart, remove
/ Search by name or ID
s Choose the sort field
c Show and reorder columns
a Include stopped containers
t Show or hide system stats
Space Select containers for bulk actions
Ctrl+A Select every listed container
p Select a whole compose project
Ctrl+S Save your preferences

Start watching in one command

macOS and Linux, Intel and ARM. No account, no telemetry.

$ brew install dtop