Open source · MIT · Rust

Stop copy-pasting
container IDs.

A visual Docker debug helper. 105 curated commands, output-aware follow-ups, terminal or browser — one Rust binary that wraps your real docker CLI.

brew install nickciolpan/tap/dux View on GitHub →
~/dux • dux • picking the next command's args
dux TUI: after running docker ps -a, the logs follow-up modal opens with extracted container names ready to pick from
105curated commands
8categories
2.4 MBrelease binary
2surfaces · TUI + web

The loop everyone runs.

When something breaks in a container, the workflow is almost always the same — and the shell makes you do it manually.

# find the thing
docker ps -a
# squint, copy a name with the mouse
docker logs casely-postgres-1
docker inspect casely-postgres-1
docker exec -it casely-postgres-1 sh

The container name doesn't change between those commands. Yet you copy and paste it three or four times — sometimes typoing a hash prefix.

dux watches the output of every command it runs. After docker ps, every follow-up that wants a container is already pre-filled. ↑/↓ to cycle. Enter to run.

No copy. No paste. No typo on a hash prefix.

Built on two ideas.

Each command in the catalog is a typed struct: placeholders are tagged with a kind (container, image, network, volume, service), and each command declares what kind of items its stdout produces. Everything else falls out of those two annotations.

105 curated commands

Containers, images, networks, volumes, system, compose. Each with an explainer that's also searchable.

Output-aware completion

After docker ps, the next command's container arg is prefilled with extracted names. Same for images, networks, volumes.

TUI and browser

One binary, two surfaces. dux for the terminal (ratatui), dux serve for an HTTP UI on any route.

~

Not a daemon

Every action shells out to your real docker CLI. Nothing to upgrade in lockstep, no socket to expose.

What it looks like.

Three flows that come up every day. Click any GIF to view full-size.

Tour

Browse, run, see the explainer.

The left pane is the catalog — 105 commands across 8 categories. The right pane shows the highlighted command's explainer above the run output, and the suggested follow-ups below.

Browsing the dux catalog and running docker version
Search

Live filter across name, description, and explainer.

Press / to open. The third filter in this clip — rotation — only matches because the kill -s SIGNAL command's explainer mentions log rotation. The explainers aren't decoration; they're a searchable index.

Live filtering the catalog with /, including matching against explainer text
Follow-ups

The headline feature.

Run docker ps -a, pick logs from the follow-up list, and the arg modal opens already populated with every container parsed from the previous output. / cycle.

Follow-up modal pre-filled with container names extracted from docker ps output

Install.

Two ways. Brew installs from a tap, source build works on any platform with Rust 1.75+.

Homebrew

macOS · Linux (Linuxbrew)
brew install nickciolpan/tap/dux

From source

macOS · Linux · Windows (with Rust toolchain)
git clone https://github.com/nickciolpan/dux.git
cd dux
cargo install --path .
Then run dux for the TUI or dux serve for the browser UI. Full keybindings and architecture docs in the README.