Skip to content
  • MangoFly

    A self-hosted WireGuard mesh. Devices connect straight to each other; the coordination server is one binary and a SQLite file, and never sees their traffic.

    encrypted WireGuard · peer to peerLaptopbehind home NATServerin a datacentrePhoneon mobile datacoordination serverone binary · one SQLite filecontrol plane only (TLS)keys · tunnel addresses · peer lists · sealed ICE candidatesholds no private keys · carries no traffic · cannot decryptdatacontrol
  • MangoDock

    Docker management with nothing on the hosts. Reaches each daemon over an ordinary SSH session — no agent to install, no port to open.

    The MangoDock dashboard showing three host cards with container state counts, CPU and memory gauges, a usage history and recent events
  • MangoWiFi

    A Wi-Fi 6/7/8 test bench. One binary runs as Console or Agent either side of the access point under test, measuring latency under real load.

    AP under testWi-Fi 6 / 6E / 7Agentstation side · real radioLAN receiveriperf3 -sConsoleUI · orchestrates · probes
  • Blog
  • Nothing phones home

    No telemetry, no analytics, no crash reporter, no account login. Check it with a packet capture on your own network.

    Download MangoSSH
  • Project
  • Download
  • Guides · Automation

    Macros, broadcast and clusters

    Tools for working in several live terminals at once: replay a keystroke sequence with one key, type the same thing into eight servers while watching each respond, save those eight as a named cluster, and view up to four sessions side by side.

    • SSH sessions
    • Interactive, in open terminals
    • About 10 minutes

    Pick the right tool

    Everything on this page works inside terminals you have open, so you see every keystroke land. When you want unattended runs with exit codes per host, use Scripts instead.

    ToolUse it to
    MacroReplay a recorded keystroke sequence into the current terminal, by click or hotkey.
    Broadcast inputMirror what you type in one terminal into other open terminals, live.
    ClusterSave a broadcast target set by name and switch it on in one click.
    Split viewSee two to four SSH sessions on screen at once.
    Script, run on a groupRun a saved script on every host in a group or tag, in the background, with results per host.
    Open a whole group's sessions at once

    In the SSH sidebar, each group with more than one host has a plug button on its header: Connect to all N hosts in "group". Hosts that need a password are prompted one at a time. Once any are connected, a second button disconnects them all.

    Macros

    A macro is the exact bytes you typed, saved: letters, Enter, Ctrl+C, arrow keys, Esc. Replaying it sends the same bytes into a terminal, as if you typed them again. It suits short, repeated sequences: a docker ps with your preferred format string, a tmux attach dance, the keystrokes to leave a pager.

    Record a macro

    1. Connect to a host and click the macros button (the keyboard icon) in the terminal toolbar. The Terminal input macros dialog opens. Its banner names the session a replay would go to.

    2. Click Start Capture. The dialog closes so you can type the sequence into the terminal. The keystrokes run normally while they are recorded.

    3. Reopen the dialog. It shows Capturing with a byte count. Click Stop & Save (or Cancel to throw it away).

    4. Give it a Name. Choose a Scope: 🌐 Global for any host, or this host only. Optionally bind a Hotkey, then click Save.

    Replay a macro

    • Click Replay on its row. It goes into the active session. A macro scoped to another host asks “This macro was recorded for …, Replay anyway?” first.
    • Or press its hotkey while the MangoSSH window is focused. A hotkey needs at least one modifier (Ctrl, Alt, Shift or Meta), does nothing while your cursor is in a text field, and replays without the cross-host question. Use the ⌨ button on a row to add or change one later.
    • If broadcast is on, a replay reaches every broadcast target too, exactly as typing would.
    • Search macros… filters the list by name. ✕ deletes a macro.

    Macro and script hotkeys share one list, so a combination can belong to only one of them.

    A macro records everything you type

    If you type a password at a sudo prompt while capturing, the password becomes part of the macro, and replaying the macro types it again. What a macro records is encrypted on disk with your vault key, like your hosts, so with a master password set, macros are unavailable until you unlock. Even so, it is safer to stop the capture before any prompt for a secret and type that part yourself.

    Broadcast input

    Broadcast mirrors what you type in the active terminal into other open SSH terminals. Each one runs the command on its own host and shows its own output, so you can see where the result differs.

    1. Connect to two or more SSH hosts. The broadcast button appears in the terminal toolbar once at least two sessions are live.

    2. Click it to open Broadcast. Tick the sessions that should receive your typing. The counter shows ticked targets against open sessions, for example 3 / 5.

    3. Tick Broadcast input. The toolbar button turns red with the number of targets.

    4. Type in the active terminal. Keystrokes and pastes go to it and to every ticked session.

    5. Untick Broadcast input when you are done.

    • Only the active session broadcasts. Typing in one of the targets affects that target alone.
    • Broadcast is SSH only, and it is not remembered: restarting MangoSSH turns it off and clears the ticks. Clusters, below, fix the re-ticking.
    • Hosts joining and leaving a broadcast group are recorded in the audit log as broadcast_join and broadcast_leave, so the session history shows which hosts were receiving mirrored input.
    • If any host in reach falls under a production guardrails policy, a command that needs confirmation shows a warning listing the guarded hosts before Enter is sent. A macro that would submit a line to such a host asks once before replaying.
    Broadcast sends keystrokes, not commands

    Each terminal receives the same bytes, whatever state it is in. If one host is sitting at a less pager or a password prompt, your next line does something different there. Check every target is at a shell prompt before you type anything destructive, and watch them in split view.

    Saved clusters

    A cluster is a named set of hosts for broadcast: db-primaries, edge-eu, k8s-workers. It saves you ticking the same hosts every time.

    Save a cluster

    1. In Broadcast, tick the hosts you want.

    2. Click Save as… and enter a name. Names must be unique, ignoring case.

    Use a cluster

    1. Connect to the hosts (the group plug button helps if they share a group).

    2. In Broadcast, pick the cluster from the Clusters… list and click Apply.

    Apply replaces the current ticks with the cluster's members that are connected right now, and switches broadcast on. A toast reports the result, for example “📡 db-primaries — broadcasting to 3 of 4 (not connected: db-04)”, so a missing host is named rather than silently left out. If none of the members are connected, nothing changes.

    To change a cluster, apply it, adjust the ticks, delete the old one with ✕, and save again under the same name. Deleting a cluster never touches the hosts.

    Clusters are not groups

    GroupCluster
    What it isA property of each host. A host is in one group.A saved selection. A host can be in any number of clusters.
    AffectsSidebar organisation, settings the host inherits, and which policies apply to it.Nothing about the host. It only decides who receives broadcast typing.
    Used byThe sidebar, inheritance, policies, the Scripts host picker.The Broadcast dialog.
    Good for“All production databases”, managed long term.“The four boxes I am debugging today”, across groups.

    Clusters are stored per profile, alongside your groups, and hold only host ids and a name.

    Split view

    Split view shows several SSH sessions on screen together, which pairs well with broadcast: you type once and watch each host answer.

    1. Open at least two SSH sessions and click the split view button in the terminal toolbar.

    2. With exactly two sessions open, they split straight away. With more, Split view — choose hosts opens: the active session is pane 1, and you tick up to three more.

    3. Choose Side by Side or Stacked, then click Enable Split View.

    The active session's pane is highlighted; that is the one your typing goes to, and the one that broadcasts. Click the split view button again to return to a single pane.

    Run a script on a group

    For work that should not depend on watching terminals, such as collecting versions from 40 hosts or restarting a service everywhere, save it as a script. In the Scripts host picker, tick a group's header to select every runnable host in it, or click a tag chip such as #prod. Each host runs in parallel over its own connection and reports its own exit code and output. See Pick the hosts.

    Troubleshooting

    SymptomLikely cause
    No broadcast buttonFewer than two SSH sessions are connected.
    Typing reaches only one hostBroadcast input is off, the targets are not ticked, or you are typing in a target rather than the active session.
    “None of “name”'s N hosts are connected.”Connect the cluster's hosts first, then Apply.
    “A cluster named … already exists.”Pick another name, or delete the existing cluster first.
    “That hotkey already runs the script …”Each combination belongs to one macro or script. Choose another, or clear it on the script.
    A macro hotkey does nothingThere is no active SSH session, or the cursor is in a text field rather than the terminal.