NetStacksNetStacks

Multi-Send (Broadcast)

Broadcast keystrokes to multiple live terminals, or run one command across many sessions with the Broadcast Command dialog and collected results.

Overview

Multi-Send lets you drive many devices at once instead of one tab at a time. It is built for network engineers who run the same command across dozens of routers and switches -- checking BGP on every core router, pushing an NTP change across a campus, or pulling show output from every device during an outage.

Two distinct features

NetStacks ships two separate broadcast mechanisms. They are independent -- knowing which one you want is the most important thing on this page.

  • Live Multi-Send -- a per-terminal toggle on your open terminal tabs. Every keystroke you type in any enabled terminal is mirrored in real time to all other enabled terminals. You see each device's output live in its own tab. Best for interactive work.
  • Broadcast Command Dialog -- select sessions in the session list, type one command, and the agent runs it on every selected session in parallel with a fixed timeout. Results are collected into a single panel with per-device status, output, and timing, and can be exported to Markdown or copied. Best for one-shot, auditable runs.
Verify your targets before you type

Multi-Send is powerful and unforgiving. With Live Multi-Send, the moment you type a key it goes to every enabled terminal -- including a stray reload or delete. Confirm exactly which tabs carry the multi-send indicator before broadcasting anything that changes configuration. For destructive or config-changing work, the Broadcast Command Dialog is safer because it executes one explicit command and shows a per-device result.

Live Multi-Send

Live Multi-Send is a per-terminal toggle. Each terminal independently joins or leaves a shared broadcast set. There is no "master" tab -- typing in any enabled terminal mirrors those keystrokes to all other enabled terminals, and that terminal's own input is sent normally. A re-entrancy guard stops a mirrored keystroke from triggering another broadcast, so there are no loops.

Enabling a terminal

You enable or disable multi-send one terminal at a time using either of these:

  • Keyboard: press Cmd+Shift+M (macOS) or Ctrl+Shift+M (Windows/Linux) to toggle multi-send for the active tab. Switch to another tab and press it again to add that tab too.
  • Tab menu: right-click a terminal tab and choose Enable Multi-Send (or Disable Multi-Send if it is already on).

Each enabled tab shows a small link/chain icon (tooltip "Multi-send enabled") so you can tell at a glance which terminals are in the broadcast set. To broadcast to five devices, enable multi-send on all five tabs, then start typing in any one of them.

Build the set, then type

Walk each tab you want to include and toggle it on (the chain icon appears), leave the rest off, then type. Because the toggle is per-terminal, you control the broadcast set precisely -- there is no accidental "select all". To stop broadcasting, toggle each tab off again with Cmd/Ctrl+Shift+M or the tab menu.

What gets sent

Live Multi-Send mirrors raw keystrokes, not whole commands. As you type, each character (and Enter, control keys, and so on) is delivered to every enabled terminal's session as it happens. The same characters must be valid on every target device -- see the mixed-vendor note in the Q&A. Output is not aggregated; each tab shows its own device's response.

Broadcast Command Dialog

The Broadcast Command Dialog runs one command on many sessions in parallel and collects the results in a single panel. Unlike Live Multi-Send, it does not require open terminal tabs -- it works from your session list.

Opening the dialog

  1. In the session list (sidebar), select two or more sessions: Cmd/Ctrl+click to add individual sessions to the selection, or Shift+click to select a range.
  2. Right-click the selection and choose Broadcast Command... (this entry appears when more than one session is selected).
  3. The dialog opens with the header "Broadcast Command to N Sessions" and a preview list of the selected sessions (showing each session's name and host; more than five collapse into a "+N more..." row).

Running a command

  1. Type the command into the input (for example show ip bgp summary).
  2. Choose a Timeout -- the options are 10s, 30s, 60s, or 120s (default 30s). This is the per-session cap on how long the agent waits for the command to finish.
  3. Click Execute, or press Cmd/Ctrl+Enter. The command is sent to the agent, which runs it on every selected session in parallel.
  4. The results panel shows a live summary -- N succeeded | N failed | total time -- and one expandable row per session.

Reading the results

  • Each row shows a status icon, the session name and host, and the per-device execution time. The first three rows are auto-expanded; click a row to expand or collapse its output.
  • Copy All copies every device's output to the clipboard as plain text, one block per device.
  • Export Results downloads a Markdown file (named broadcast-results-<timestamp>.md) with the command, a run summary, and each device's status, execution time, and output.
Why use the dialog over Live Multi-Send?

The dialog is the right tool when you want a single, repeatable command with collected, exportable output -- audit evidence, maintenance snapshots, or a quick health sweep. Live Multi-Send is interactive and keystroke-level; the dialog is one command, parallel execution, and a tidy report.

Result Status Types

Each device in the Broadcast Command Dialog returns one of four statuses. Use them to triage which devices need a retry.

StatusMeaningWhat to do
successCommand ran and output was capturedReview the output in the results panel
errorExecution failed (an error message is returned)Read the error; verify connectivity and command syntax
timeoutCommand did not finish within the chosen timeoutIncrease the timeout or run slow devices in a smaller batch
authfailedThe session's authentication was rejectedRe-check credentials for that session, then re-run

The summary line tallies successes and failures (timeouts and auth failures count as failures) along with the total wall-clock time for the whole batch.

Code Examples

Network-wide BGP health check (Broadcast Command Dialog)

Select your core and distribution routers in the session list, open the Broadcast Command Dialog, and run a single show command. The panel below sketches how the collected results read -- one block per device with status and timing.

bgp-health-checktext
# Sessions: core-rtr01, core-rtr02, dist-rtr01, dist-rtr02
# Command:  show ip bgp summary
# Timeout:  30s

core-rtr01 (10.0.0.1)  [success, 1.2s]
BGP router identifier 10.0.0.1, local AS number 65100
Neighbor        V  AS    MsgRcvd MsgSent  Up/Down  State/PfxRcd
10.0.0.2        4  65100   48305   48291  5w2d     256
10.0.0.5        4  65200   12045   12030  2w3d     128

core-rtr02 (10.0.0.2)  [success, 0.9s]
BGP router identifier 10.0.0.2, local AS number 65100
Neighbor        V  AS    MsgRcvd MsgSent  Up/Down  State/PfxRcd
10.0.0.1        4  65100   48291   48305  5w2d     256
10.0.0.6        4  65300    8820    8805  1w5d      64

dist-rtr01 (10.1.0.1)  [timeout, 30.0s]
(device did not respond within the timeout)

dist-rtr02 (10.1.0.2)  [success, 2.1s]
BGP router identifier 10.1.0.2, local AS number 65100

Bulk NTP change (Live Multi-Send)

Open a tab to each access switch, toggle multi-send on every tab (chain icon visible), then type the change once. Each keystroke is mirrored to all enabled tabs and applied on every switch as you type.

bulk-ntp.cfgtext
! Live Multi-Send enabled on: access-sw01 .. access-sw05
configure terminal
 no ntp server 172.16.0.1
 ntp server 10.0.100.1 prefer
 ntp server 10.0.100.2
 ntp source Loopback0
end
write memory

Pre-maintenance baseline (Broadcast Command Dialog)

Run each baseline command as its own broadcast (one command per dialog run) and export the Markdown so you have a clean before/after record. Raise the timeout for commands that produce large output.

baseline-commands.txttext
# Run each of these as a separate broadcast, timeout 60s.
# Export Results after each to capture the baseline.

show ip route summary
show ip ospf neighbor
show ip bgp summary
show interfaces status
show cdp neighbors
show spanning-tree summary
show etherchannel summary

Exported results format (Markdown)

Export Results produces a Markdown file like this. The structure is stable, so it drops cleanly into change tickets or a wiki.

broadcast-results-2026-03-10T14-30-00.mdtext
# Broadcast Command Results

**Command:** `show version | include uptime`
**Executed:** 3/10/2026, 2:30:00 PM
**Sessions:** 5 (4 succeeded, 1 failed)
**Total Time:** 3.45s

## Results

### core-rtr01 (10.0.0.1) ✓

**Status:** success
**Execution Time:** 0.82s

```
core-rtr01 uptime is 5 weeks, 2 days, 14 hours, 22 minutes
```

### access-sw03 (10.1.3.1) ✗

**Status:** timeout
**Execution Time:** 30.00s

**Error:** command did not complete within 30s

Q&A

Q: How do I turn on Live Multi-Send?
A: It is a per-terminal toggle. With a terminal tab active, press Cmd+Shift+M (macOS) or Ctrl+Shift+M (Windows/Linux), or right-click the tab and choose Enable Multi-Send. Repeat on each tab you want in the broadcast set. Enabled tabs show a chain icon with the tooltip "Multi-send enabled".
Q: Where do I open the Broadcast Command Dialog?
A: From the session list, not from terminal tabs. Select two or more sessions (Cmd/Ctrl+click to add, Shift+click for a range), right-click, and choose Broadcast Command.... The entry only appears when more than one session is selected.
Q: What is the difference between the two features?
A: Live Multi-Send mirrors your raw keystrokes between open terminals in real time, and each tab shows its own live output. The Broadcast Command Dialog runs one command on many sessions in parallel and gathers the results into one panel with status, timing, and Markdown export. Use Live Multi-Send for interactive work; use the dialog for a single auditable run.
Q: How many devices can I target?
A: There is no fixed cap. Live Multi-Send mirrors to every enabled tab; the dialog runs on every selected session in parallel. Practical limits come from your machine and the number of open connections. The dialog previews up to five sessions inline and collapses the rest into a "+N more..." row.
Q: Is execution parallel?
A: In Live Multi-Send, keystrokes are mirrored to all enabled terminals at once. In the Broadcast Command Dialog, the agent runs the command on all selected sessions in parallel and collects results as each completes; the summary shows the total wall-clock time.
Q: Can I export the results?
A: Yes, from the Broadcast Command Dialog. Export Results downloads a Markdown file with the command, run summary, and each device's status, execution time, and output. Copy All copies every device's output to the clipboard. Live Multi-Send does not aggregate output, so there is nothing to export from it -- record the session if you need a transcript.
Q: Can I broadcast to mixed vendors (Cisco and Juniper)?
A: You can, but the exact keystrokes (Live Multi-Send) or command (the dialog) must be valid on every target. show ip route works on Cisco/Arista but not Juniper (show route). Group devices by vendor and broadcast one vendor at a time. In the dialog, vendors where the command is invalid simply come back with an error status, which makes them easy to spot.

Troubleshooting

A device is not receiving keystrokes (Live Multi-Send)

  • Confirm that tab is actually enabled -- it must show the chain ("Multi-send enabled") icon. The toggle is per-terminal, so a tab you forgot to enable will be silently left out.
  • Make sure the session is connected. A disconnected terminal cannot apply mirrored input.
  • Remember keystrokes only mirror to other enabled tabs -- you need at least two enabled terminals for anything to broadcast.

I cannot find "Broadcast Command..."

  • The entry only appears in the session list's right-click menu when more than one session is selected. Select a second session with Cmd/Ctrl+click first.
  • The dialog also requires a non-empty command -- Execute stays disabled until you type one.

Output not appearing (Live Multi-Send)

  • Live Multi-Send does not aggregate output. Switch to each tab to see that device's response.
  • Slow commands such as show tech-support take time to render on each device -- wait for them to finish.
  • If you want everything in one place, use the Broadcast Command Dialog instead.

Timeouts on slow devices (dialog)

  • Raise the timeout to 60s or 120s for commands that produce a lot of output (large running-configs, show tech-support).
  • Run slow or resource-constrained devices in a smaller, separate batch so one laggard does not stretch the whole run.
  • A timeout status means the command did not complete in time; re-run just those sessions with a longer timeout.

Auth failures (dialog)

  • An authfailed status means the session's credentials were rejected. Fix the session's credentials, reconnect, and re-run the broadcast on that session.
Controller-only: scheduled runs and MOPs

For critical or audited change work that needs scheduling, approvals, or rollback steps, the NetStacks Controller (enterprise) provides MOP workspaces and device selection beyond ad-hoc broadcasting. Those workflows are not part of the free standalone build -- on standalone, use Live Multi-Send and the Broadcast Command Dialog, and record sessions for an audit trail.