mult

GitHub Actions Workflow Status Stars Top Language Last Commit Latest Release

mult lets you run a command multiple times and glance at the outputs via a TUI.

mult -- command --you=want --to=run

Usage

🧰 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

TUI

mult’s TUI has 3 views:

  • Command Run List View
  • Output View
  • Help View

Keyboard Shortcuts

General

KeyAction
tabSwitch focus between panes
?Show help view
q / EscGo back or quit
ctrl+cQuit immediately

Command Run List View

KeyAction
j / Go to next run
k / Go to previous run
l / Go to next page (if applicable)
h / Go to previous page (if applicable)
gGo to start of the list
GGo to the end of the list
ctrl+rRestart all runs
ctrl+fToggle follow mode

Output View

KeyAction
j / Scroll output down
k / Scroll output up
l / Go to next run
h / Go to previous run
ctrl+rRestart all runs
ctrl+fToggle 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):

  1. 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
  2. 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"
    
  3. 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
    
  4. 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”