mult lets you run a command multiple times and glance at the outputs via a TUI.
mult -- command --you=want --to=run
🧰 Use Cases
mult
can come in handy in a few scenarios, such as:
- Investigating inconsistent responses from a web server
- Checking the outcomes of a flaky test suite
- Running quick and dirty performance/stress tests
💾 Installation
homebrew:
brew install dhth/tap/mult
go:
go install github.com/dhth/mult@latest
Arch Linux:
yay -S mult
Or get a binary directly from a release. Read more about verifying the authenticity of released artifacts here.
⚡️ Usage
Usage:
mult [flags] -- <command>
Examples:
mult -s -n 10 -d 1000 -- curl -sif -m 5 'https://some.url/that?fails=sometimes'
Flags:
-d, --delay int time (in ms) to sleep for between runs
-f, --follow start with "follow mode" ON (ie, automatically select the latest command run)
-h, --help help for mult
-i, --interactive accept flag values interactively (takes precendence over -n)
-n, --num-runs int number of times to run the command (default 5)
-s, --sequential whether to invoke the command sequentially
-F, --stop-on-first-failure whether to stop after first failure
-S, --stop-on-first-success whether to stop after first success
Specify number of runs
mult -n=10 -- yourcommand
Ask for number of runs
mult -i -- yourcommand
Run sequentially
By default, mult
executes all runs concurrently. Use -s
for sequentially
execution.
mult -s -- yourcommand
Add delay (in milliseconds) between runs
mult -s -d=500 -- yourcommand
Stop at first failure
mult -s -F -- yourcommand
Stop at first success
mult -s -S -- yourcommand
Note: -d
, -F
, -S
only apply in sequential run mode.
📟 TUI
mult
’s TUI has 3 views:
- Command Run List View
- Output View
- Help View
Keyboard Shortcuts
General
Key | Action |
---|---|
tab | Switch focus between panes |
? | Show help view |
q / Esc | Go back or quit |
ctrl+c | Quit immediately |
Command Run List View
Key | Action |
---|---|
j / ↓ | Go to next run |
k / ↑ | Go to previous run |
l / → | Go to next page (if applicable) |
h / ← | Go to previous page (if applicable) |
g | Go to start of the list |
G | Go to the end of the list |
ctrl+r | Restart all runs |
ctrl+f | Toggle follow mode |
Output View
Key | Action |
---|---|
j / ↓ | Scroll output down |
k / ↑ | Scroll output up |
l / → | Go to next run |
h / ← | Go to previous run |
ctrl+r | Restart all runs |
ctrl+f | Toggle follow mode |
🔐 Verifying release artifacts
In case you get the mult
binary directly from a
release, you may want to verify its
authenticity. Checksums are applied to all released artifacts, and the resulting
checksum file is signed using
cosign.
Steps to verify (replace A.B.C
in the commands listed below with the version
you want):
Download the following files from the release:
- mult_A.B.C_checksums.txt
- mult_A.B.C_checksums.txt.pem
- mult_A.B.C_checksums.txt.sig
Verify the signature:
cosign verify-blob mult_A.B.C_checksums.txt \ --certificate mult_A.B.C_checksums.txt.pem \ --signature mult_A.B.C_checksums.txt.sig \ --certificate-identity-regexp 'https://github\.com/dhth/mult/\.github/workflows/.+' \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
Download the compressed archive you want, and validate its checksum:
curl -sSLO https://github.com/dhth/mult/releases/download/vA.B.C/mult_A.B.C_linux_amd64.tar.gz sha256sum --ignore-missing -c mult_A.B.C_checksums.txt
If checksum validation goes through, uncompress the archive:
tar -xzf mult_A.B.C_linux_amd64.tar.gz ./mult -h # profit!
Changelog
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.3.0 - Aug 12, 2025
Added
- Add “follow mode” (automatically select the latest command run)
- Allow restarting runs
- Keymaps for scrolling run list from the output pane
- Keymaps to move in list from the output pane
- Help pane
- Long form versions for CLI flags
v0.2.0 - Aug 05, 2025
Added
- Show average time for successful runs
- Allow stopping on first success
Added
- Change flags for delay, and “stop on first failure”