# Run a command everywhere

> One command on several machines at once, with each one’s output side by side.

Check the disks on every machine, update Homebrew on all your Macs, pull the same repo everywhere: **Run** (`⌃6`) runs one command on the machines you pick, at the same time, and shows each one’s output as it comes.

![The Run page: df -h / run on eight machines, each machine's output in its own card with a check mark and how long it took.](https://muxin.dev/images/shots/run-dark.png?v=ab6c154a)

*One command, eight machines, a second later.*

## Run one

1. Type the command.
2. Pick the machines. Every machine that’s online is picked to start with; click one to leave it out, or **None** (then **All**) to start over. Offline and disconnected machines are greyed out.
3. Click **Run on N**, or press Return.

To start with a single machine, right-click it in the sidebar › **Run a command…**.

## Where it runs

On each machine the command runs in your login shell, from your home folder, as you. Your PATH and tools are there as in your terminal. There’s no terminal and nothing to type into: a command that asks a question (a password, “Continue? \[y/N\]”) gets no answer and usually gives up. Pass the flag that skips the question, like `-y`.

> **Warning:** It’s your real machines, not a sandbox. Read the command before you press Run on twelve of them.

## The output

- Each machine gets a card, filled in as its output comes. The header says how it went: a check mark and how long it took, or why it failed (“Exit 1”).
- Above the cards, “All done”, or how many failed.
- The expand button on a card makes it bigger, with more of its output. All of it is in Activity (`⌘J`).
- **Clear** clears the results.

## Recent commands

Your last eight commands are listed under the box as **Recent**. Click one to put it back. The × forgets them.

## From a terminal and from agents

```
muxen run --on beacon,mac-studio -- df -h /
muxen run --all -- brew upgrade            # every machine that’s online
muxen run --all --timeout 1800 -- git -C ~/code/api pull
```

- It waits for all of them and prints each one’s output and exit status. It exits 1 when any of them failed, so it works in a script.
- Each one may run 10 minutes by default; `--timeout` takes up to an hour (3600 seconds).

Agents use `run_on_machines(machine_ids, command, timeout_secs?)`. They’re told to run it only when you ask, and to show you the command first. See [MCP for your agents](https://muxin.dev/docs/agents).

> **Tip:** For something that should run at set times, not just now, make it a [schedule](https://muxin.dev/docs/schedules).
