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
  • Chapter 7 of 12

    Session Management

    Once you're actually connected, MangoSSH's terminal session bar (top-right of any open SSH session) has its own toolbar: Files, Monitor, History, SSH Tunneling, Broadcast, Shared Terminal, Record, Macros, Auto-reconnect, Debug, Export log, Split view, scrollback Search, Copy selection, Clear, and Disconnect. This chapter covers the ones that manage multiple sessions or capture/replay activity; single-purpose ones (Debug, Auto-reconnect) are covered in the SSH chapter alongside the settings they control.

    The Sessions Dashboard

    Purpose

    See every saved connection across all protocols in one place, with live connect-status, rather than switching between separate SSH/RDP/VNC sidebars.

    How to do it

    1. Click Dashboard in the toolbar (the leftmost button).
    2. Connections render as cards, grouped, with a filter box and a per-group connect-all/disconnect-all shortcut.
    3. Click any card to jump straight into that session (connecting first if it isn't already open).

    How to verify

    1. Connect to one SSH host and one RDP or VNC host from their own toolbar buttons.
    2. Click Dashboard .
      • Expect both hosts' cards to show a live connected status indicator (not a stale snapshot) — no manual refresh needed.
    3. Disconnect one of them from its own session toolbar's Disconnect button, then return to Dashboard without reloading the app.
      • Expect that card's status to flip to disconnected within the same view.
    4. Click the still-connected host's card.
      • Expect MangoSSH to jump straight into that live session rather than reopening a new connection.

    Troubleshooting

    • A connected host still shows as disconnected on the Dashboard — this would be a genuine state-sync bug; restarting the app resyncs from the actual live session list.

    Organizing Connections with Groups

    Hosts collected under group headers, each with its own count and connect-all control.

    Purpose

    Keep a large connection list navigable — filter the sidebar down to one group at a time, and (as covered in the SSH chapter) optionally inherit a shared bastion/credential per group.

    How to do it

    1. Open Settings → Groups (sub-label "Bastion defaults + inherited credentials") — or the shortcut next to the Group dropdown on any host's Add/Edit form — to create/rename/delete groups.
      • Groups are scoped independently per protocol: an SSH group and an RDP group can share the exact same name with no credential cross-contamination.
    2. Open Settings → Host visibility (sub-label "Group filters for SSH and RDP") to control which groups show in the sidebar at once (e.g. hide "Archive" by default).
    3. Assign hosts to groups from their own Add/Edit form's Group dropdown.

    How to verify

    1. In Settings → Groups, create a new group (e.g. "TEST-GROUP") and save.
    2. Open an existing host's Edit form, set its Group dropdown to "TEST-GROUP", and save.
    3. Back in the sidebar, use the group filter control and select "TEST-GROUP".
      • Expect only that one host to remain visible — every other host hides.
    4. Switch the filter back to show all groups (or "All") and confirm the rest of your hosts reappear.
    5. In Settings → Host visibility, hide the test group, then check the sidebar directly — confirm the group's hosts no longer appear there either, even with the sidebar filter set to show everything.

    Troubleshooting

    • A host "disappears" from the sidebar — almost always a Host visibility filter hiding its group, not a deleted host; check Settings → Host visibility before assuming data loss.

    Split View (Two Sessions Side by Side)

    Purpose

    Watch two SSH sessions at once in the same window — e.g. tailing a log on one host while running commands on another.

    How to do it

    1. With an SSH session open, click the session toolbar icon titled "Toggle split view — show two SSH sessions side by side" (a rectangle split by a red line).
    2. If 3 or more sessions are open, a picker lets you choose which two to show side by side.
    3. Click the same icon again to return to single-session view; its tooltip changes to "Split view enabled (max 2 panes) — click to disable" while it's on, and the icon itself fills solid green.

    How to verify

    1. With only one SSH session open, click the split-view icon.
      • Expect an alert reading exactly "Split view needs at least 2 open SSH sessions." — not a silent no-op.
    2. Connect a second SSH host, click split view again.
      • Expect both sessions to render side by side and the icon to turn solid green.
    3. Click into the left pane and type a harmless command.
      • Expect only the left pane to receive it — the right pane's content stays unchanged until you click into it too.
    4. Click the same toolbar icon again.
      • Expect both panes to collapse back to whichever single session was last focused, and the icon to return to its normal (unarmed) look.

    Troubleshooting

    • Only one pane updates — click directly into the pane that seems frozen; each pane needs its own focus click before it'll accept input, this is expected split-view behavior, not a hang.

    Shared Terminal (Live Session Collaboration)

    Purpose

    • Invite a teammate into your live SSH session in real time — genuine multiplayer pair-troubleshooting, not a recording someone reviews afterward.
    • This is unrelated to Team Vault — Team Vault shares saved connection configs between devices; Shared Terminal shares one specific live session's input/output in the moment.

    How to do it

    1. With an SSH session open, click the session toolbar icon titled "Shared Terminal — invite a teammate into this live SSH session" and generate an invite.
    2. Send the invite to your teammate; they open "Join a Shared Terminal" and paste it in.
    3. Both sides now see the same live terminal output; input handling follows whatever mode the invite grants (view-only vs. can-type).

    How to verify

    1. Generate an invite from an active SSH session.
    2. On a second MangoSSH instance (a different machine, profile, or a teammate's install), open Join a Shared Terminal and paste in the invite.
    3. On the host side, run a visible command (e.g. date ).
      • Expect its output to appear on the joined side within roughly a second, byte-for-byte identical to what the host side sees.
    4. If the invite was created in can-type mode, type a command from the joined side.
      • Expect it to actually execute on the shared host and its output to appear on both sides.
    5. Disconnect the original SSH session (not the joined viewer).
      • Expect the Shared Terminal to end for the joined side too — it has no independent connection of its own.

    Troubleshooting

    • Joined but see nothing — confirm the inviting session is still connected; a Shared Terminal session ends the moment the original SSH session disconnects, it isn't an independent connection of its own.

    Broadcasting Typed Input to Multiple Sessions

    Purpose

    Run the same command across several already-open SSH sessions at once by typing it only one time — for identical, low-risk housekeeping across a small fleet (e.g. checking disk space on 5 boxes), not a substitute for the Scripts feature's larger-scale orchestration (see the Automation chapter).

    How to do it

    1. Click the session toolbar icon titled "Broadcast typed input to other SSH sessions" .
      • The Broadcast modal opens with a "Broadcast input" checkbox and a list of other open SSH sessions to select as targets.
    2. Check "Broadcast input" and tick the target sessions that should receive your typed input alongside this one, then close the modal.
    3. Type normally — every character now goes to all selected sessions simultaneously.
    4. Turn broadcast off the same way (uncheck "Broadcast input" ) before typing anything session-specific.

    How to verify

    1. With two other SSH sessions open, click the Broadcast icon, check "Broadcast input" , and select both as targets.
      • Expect the counter next to the checkbox to read "2 / 2" (selected / open) rather than staying at "0 / 0".
    2. Close the modal, click into the source session, and type a harmless command (e.g. echo hi ) followed by Enter.
      • Expect the exact same keystrokes to appear and execute in both target sessions' terminals, not just the one you're focused in.
    3. Reopen the Broadcast modal and uncheck "Broadcast input" . Type another command.
      • Expect it to appear only in the session you're focused in — the other two are unaffected.

    Troubleshooting

    • Typed something session-specific by accident (e.g. a host-specific path) into all sessions — this is the main real risk of this feature; the small numeric badge on the Broadcast icon itself shows how many sessions are currently receiving your input, visible at a glance without opening the modal — check it before typing anything sensitive.

    Terminal Input Macros (Record & Replay Keystrokes)

    Purpose

    Capture a short, repeatable sequence of keystrokes once and replay it on demand — for a login ritual, a common diagnostic sequence, or any multi-step thing you type often on a specific kind of host.

    How to do it

    1. Click the session toolbar icon titled "Terminal input macros — record keystrokes and replay them" .
      • The Terminal input macros modal opens.
    2. Click " l Start Capture" , then type the sequence once into the live session — every keystroke, including control keys like Ctrl-C and Enter, is captured byte-for-byte.
    3. Click " n Stop & Save" , give it a Name , choose its Scope (Global, or tied to just this host), and save.
    4. Replay a saved macro from the same modal's list whenever needed.

    How to verify

    1. Click the Macros icon, click " l Start Capture" , and type a trivial command (e.g. echo hi ) followed by Enter.
      • Expect a live byte counter next to "Capturing" to climb as you type.
    2. Click " n Stop & Save" , type a name (e.g. "Test Macro"), leave Scope on Global , and save.
      • Expect the new macro to appear in the modal's saved-macros list.
    3. Clear the terminal, then replay the saved macro from the list.
      • Expect the exact same command to be typed and executed again, producing identical output to typing it manually.
    4. Start a new capture, type a couple of keystrokes, then click Cancel instead of Stop & Save.
      • Expect no new macro to be added to the list — canceling discards the capture entirely.

    Troubleshooting

    • Replaying on the "wrong" host — a macro recorded against one host's environment may not make sense on another (different paths, different tools installed); MangoSSH warns when replaying a macro on a host it wasn't recorded against — read that warning before confirming.

    Recording, Exporting, Searching & Command History

    Purpose

    Capture and later review what happened in a session — as a full asciicast replay, a plain-text export, a scrollback search, or a per-host list of previously-run commands.

    How to do it

    1. Record (toolbar icon titled "Record session as asciicast (.cast)"): toggles asciicast recording for just this session on demand — separate from the Delegate tab's "Always record" setting covered in the SSH chapter, which does this automatically and silently for every session on a given host.
    2. Export log (toolbar icon titled "Export session log"): saves the session's full scrollback as ANSI-clean plain text.
    3. Search (Ctrl+Shift+F, toolbar icon titled "Find in scrollback"): finds text in the current session's scrollback, with a match counter and next/previous navigation.
    4. History (the clock-icon tab next to Terminal/Files/Monitor): a per-host list of previously-run commands, for recall without scrolling back through old output.

    How to verify

    1. Click Record, run a couple of harmless commands, then click Record again to stop.
      • Expect a Save-As dialog to open (not a silent save) proposing a filename ending in .cast — save it anywhere convenient.
    2. Click Record a third time, click Stop without running any commands first, and confirm you instead see an alert reading exactly "Nothing was recorded." with no Save-As dialog.
    3. Click Export log.
      • Expect the same kind of Save-As dialog, proposing a filename ending in .txt .
      • Open the saved file and confirm it's readable plain text with no leftover ANSI escape-code garbage (a too-narrow stripping pattern was a real bug, fixed this session — see the trouble note below).
    4. Press Ctrl+Shift+F to open scrollback search, type a string you know appeared earlier in the session, and confirm the counter next to the search box reads something like "1/3" (current match / total matches) rather than staying at "0/0", and that the Previous/Next arrows step between highlighted matches.
    5. Click the clock-icon History tab (next to Terminal in the session's view-tab row).
      • Expect to see the commands you ran earlier in this test listed, newest first, for this specific host.

    Troubleshooting

    • Search finds nothing for text you can clearly see on screen — scrollback search only covers what's in the buffer already rendered; a very long-running session with a capped buffer may have scrolled the earliest output out entirely.
    • Exported log has garbled escape-sequence text in it — a real bug (a too-narrow ANSI-stripping pattern) fixed this session; if you still see this on a current build, it's worth reporting.