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.
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) orCtrl+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.
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
- In the session list (sidebar), select two or more sessions:
Cmd/Ctrl+clickto add individual sessions to the selection, orShift+clickto select a range. - Right-click the selection and choose Broadcast Command... (this entry appears when more than one session is selected).
- 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
- Type the command into the input (for example
show ip bgp summary). - 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.
- Click Execute, or press
Cmd/Ctrl+Enter. The command is sent to the agent, which runs it on every selected session in parallel. - 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.
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.
| Status | Meaning | What to do |
|---|---|---|
success | Command ran and output was captured | Review the output in the results panel |
error | Execution failed (an error message is returned) | Read the error; verify connectivity and command syntax |
timeout | Command did not finish within the chosen timeout | Increase the timeout or run slow devices in a smaller batch |
authfailed | The session's authentication was rejected | Re-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.
# 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 65100Bulk 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.
! 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 memoryPre-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.
# 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 summaryExported 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 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 30sQ&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) orCtrl+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+clickto add,Shift+clickfor 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 routeworks 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 anerrorstatus, 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+clickfirst. - 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-supporttake 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
timeoutstatus means the command did not complete in time; re-run just those sessions with a longer timeout.
Auth failures (dialog)
- An
authfailedstatus means the session's credentials were rejected. Fix the session's credentials, reconnect, and re-run the broadcast on that session.
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.
Related Features
- Terminal Overview -- the terminal interface where Live Multi-Send operates
- Connecting to Devices -- set up the SSH sessions that multi-send broadcasts to
- Multi-Tab & Split Panes -- open and arrange the tabs you toggle into the broadcast set
- Keyboard Shortcuts -- the full shortcut list, including the multi-send toggle
- Session Recording -- record terminals to capture bulk operations for auditing
- Bulk Device Operations -- run operations across many devices from the inventory