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 · Access and governance

    Audit, recording and alerts

    MangoSSH keeps a tamper-evident log of what happens on each device, records sessions when you ask it to, can forward every log record to your SIEM, and can alert you when something looks wrong.

    • Hash-chained local log
    • Syslog or HTTPS forwarding
    • Desktop and webhook alerts

    The audit log

    Open Audit Log from the Dashboard's side rail. Every device keeps its own log, per profile, on its own disk. It is written as things happen and is never cleared automatically. It never contains a password, a passphrase or a key.

    The Filter menu groups the events:

    FilterWhat it records
    ConnectionsSSH connect attempts that succeeded or failed (with the error shown to you) and disconnects with the session's duration.
    RDP/VNC/other sessionsConnects and disconnects for RDP, VNC, Telnet, Serial, kubectl and the local terminal, and external applications launched from MangoSSH.
    SFTP transfersUploads and downloads with path and size, plus deletes and renames.
    Script runsWhich script ran where, and its exit status.
    Port forwardsForwards opened and closed, with where they pointed.
    Broadcast groupsA session joining or leaving a keystroke-broadcast group, so you can later tell whether its input also went to other hosts.
    Security eventsA host key that did not match, a revoked key or certificate refused, and three failed logins to the same account within a minute.
    Server SSH logEvents read from a server's own sshd log, when you follow it.
    Vault & syncPersonal Vault unlock, lock and password changes, and sync pushes and pulls.
    Config changesHosts added, changed or deleted, host imports, and group credential changes.
    Key deploy/revokeSSH keys deployed to or removed from servers.
    Secret accessA stored secret revealed on screen or copied to the clipboard.
    Alerts onlyFailed connects, the security events, server alerts, and the vault's master password being removed.

    Some entries appear only under All events, among them vault membership decisions (approved, denied, revoked, role changed), relay sessions terminated from the PAM Dashboard, share links revoked, policy deletions, and changes to audit forwarding or the host agent.

    Two views are available from the icons beside the close button: cards, and a plain console you can select and copy from. Export… saves the whole log as CSV (for a spreadsheet) or JSON Lines (for a script or SIEM). Clear Log empties it; that cannot be undone, but anything already forwarded stays at the destination.

    Check that nobody edited it

    Each entry carries a SHA-256 hash that covers its own content and the previous entry's hash, so the entries form a chain. Click Verify Integrity to walk the chain again. It reports either that the chain is intact, or the first line where a row was inserted, removed or changed. Entries before that line still verify.

    The PAM Dashboard's Audit evidence section shows the same result as a headline (Chain intact or CHAIN BROKEN), with the number of events, the date range, and Export Audit Log….

    The chain proves that the log was not altered after the fact. It cannot stop someone with access to the machine from deleting the whole file. That is what forwarding is for.

    Forward the log to a SIEM

    Forwarding sends a copy of every record, as it is written, to a syslog server or an HTTPS collector. The local log stays the source of truth.

    1. In Audit Log, click Forwarding and tick Forward every audit record to a SIEM.

    2. Choose a Destination:

      • Syslog (RFC 5424): enter the Server, Port (514 by default) and Transport (UDP or TCP).
      • HTTPS collector (JSON): enter the Collector URL and, if your collector wants one, a Bearer token. The token is kept in the operating system's keychain.
    3. Click Send Test Record, check it arrived, then click Save.

    What the receiver gets:

    DetailValue
    RecordThe exact JSON line written locally, hash included, so the receiver can verify the chain too.
    Syslog facility13 (log audit), so you can route it apart from the host's own sshd messages.
    Syslog severityWarning for security events, notice for anything that failed, was denied or was refused, informational for the rest.
    Syslog APP-NAME / MSGIDmangossh / the event name, such as host_key_rejected.
    TCP framingOctet counting (RFC 6587), so a newline inside a record cannot split it.
    HTTPS bodyA JSON array of records, up to 200 per request.
    If it is downRecords queue and are retried with backoff. Up to 10,000 wait; beyond that they are counted as dropped, and the count is shown in the panel.
    # one syslog message (the record is shortened here)
    <108>1 2026-09-29T10:15:02.114Z WORKSTATION-7 mangossh 4312 host_key_rejected - {"ts":…,"event":"host_key_rejected","host":"web01",…,"hash":"…"}
    Plain syslog is not encrypted

    UDP and TCP syslog cross the network in clear text. Use the HTTPS collector when the path is not trusted. MangoSSH refuses a collector URL that is not https://, except for localhost.

    Record sessions

    Recordings are kept in Session Logs (under Tools, or in the Dashboard's side rail). They are encrypted with your Personal Vault, so the vault must be unlocked to record, list or play them.

    SSH

    SSH sessions are recorded as asciicast v2, the asciinema format: the full terminal output with timings. There are four ways to switch it on:

    • One session: the record button on the terminal toolbar.
    • One host, always: Edit → Session → Always record sessions.
    • Every SSH session: Record sessions at the top of Session Logs. It is the same setting as Record every SSH session by default on the Policies page.
    • By policy: the Always record the session rule, for a group, a tag or the fleet.

    RDP and MangoSSH Direct

    Use the record button on the session bar (Record session (screen capture)). The recording lands in Session Logs as a screen recording. Select it and click Play to open it in the Recording Player. VNC, Telnet and Serial sessions cannot be recorded.

    Browse, keep and export

    Session Logs lists recordings newest first, with search and a protocol filter. An SSH recording shows as readable text; a screen recording opens in the player. For each one you can add a note, Bookmark it, Export… it (.cast for SSH, .mrdprec for screen recordings) or Delete it.

    Keep last sets how many recordings to keep in total; older ones are removed automatically. The default is 50. Bookmarked recordings are never removed and do not count toward the limit. Turning recording off deletes nothing; Delete All does.

    All of these recordings are made by the connecting device, so the person connecting could stop one. The PAM Dashboard's Session recording section shows which of this device's open sessions are being recorded right now.

    Server-enforced RDP recording

    For a recording the connecting person cannot switch off, broker the RDP host through the PAM Broker and turn on Record every session brokered through this host when you provision it. The relay is the RDP client for those sessions, so it records every one on its own disk. The connecting device has no toggle and no way to tell.

    • Recordings are encrypted with the relay's RELAY_BROKER_CACHE_PASSPHRASE. Lose it and they cannot be read.
    • They are written under RDP_RECORDINGS_PATH (rdp_recordings by default; the Docker setup puts it inside the relay's volume).
    • Vault admins see them in the PAM Dashboard under RDP recordings. Download saves a decrypted copy, which you open in the Recording Player.

    Brokered SSH sessions have no server-side recording yet.

    Follow a server's sshd log

    The audit log normally records what happened in MangoSSH. Following a server's sshd log adds what the server saw: every login, failed login and disconnect, including ones from other tools.

    1. Open the SSH host with Edit → Session.

    2. Turn on Follow server sshd log — ingest server-side SSH events into the audit log. A policy can turn it on for many hosts with Follow the server sshd log.

    While you are connected, MangoSSH reads the log over the same SSH connection, with no second login. It tries journalctl for the ssh or sshd unit, then /var/log/auth.log, then /var/log/secure. Your account needs permission to read one of them; membership of the adm or systemd-journal group is usually enough. If none can be read, nothing is added and no error is shown.

    Each event records the account targeted and the source IP. The Internet edition adds an approximate location for public IPs; the Secure edition leaves it out. Two rules raise a server alert:

    • a successful login as root or admin;
    • three failed logins from one IP against one account within 60 seconds.

    This works with Linux and other POSIX servers only. Windows event logs are not read.

    Alerts

    Alerts are set up in Connection Health (in the Dashboard's side rail). Click Alerts.

    1. Tick Send alerts. It is off by default; nothing is sent until you turn it on.

    2. Under Send when, choose the kinds: Host goes down, Host recovers, Latency spike, Security alert and Access request waiting.

    3. Choose where they go. Show a notification uses the desktop's notifications and only works while MangoSSH is running, so keep it in the tray. POST to a webhook sends to Slack or Teams, Discord, or any service that accepts raw JSON; paste the URL and click Set. The URL is a credential, so it is kept in the keychain and not shown again.

    4. Set the Limit (10 per minute by default, 0 for none) so one failing switch does not become forty alerts. Click Test, then Save.

    KindFires when
    Security alertA server sshd alert (above), three failed logins from MangoSSH to one account within a minute, a host key that does not match, or a revoked key or certificate being refused.
    Access request waitingA new JIT request needs approval. Vault admins only; checked about once a minute.
    Host goes down, recovers, latency spikeThe Connection Health monitor sees the change.

    Security events are also marked as syslog warnings when you forward the log, so your SIEM can alert on them as well.

    Team-wide views

    The audit log is per device. These views bring devices together:

    • Team Audit (Team Vault). Each device also writes its audit entries, encrypted, to the Team Vault's shared store. Open Sync → Team Audit on the Sessions page to search every machine's events by host, machine, event and time. The Team Vault must be unlocked. See Vaults.
    • Vault Dashboard (Self Hosting Vault, admins). Its History page lists approvals, denials, revocations and role changes, taken from this device's audit log.
    • PAM Dashboard. Fleet sessions as the relay sees them and as devices report them, the JIT queue and grants, and every browser link issued. These come from the vault server and relay, not from one device. See PAM Broker and browser access.

    Troubleshooting

    SymptomLikely cause
    “Vault is locked — unlock it in Settings first.” in Session LogsRecordings are encrypted with Personal Vault. Unlock it.
    CHAIN BROKENA line was added, removed or edited after it was written. Entries before the reported line still verify; treat the rest as unverified and compare with your forwarded copy.
    The forwarding dropped count keeps risingThe collector has been unreachable long enough to fill the queue. Check the destination, then Send Test Record.
    “The collector URL must start with https://”Plain http:// is only allowed to localhost.
    Following the sshd log adds nothingYour account cannot read the journal or the auth log, the server is not POSIX, or its log is somewhere else.
    No desktop notificationsSend alerts is off, the kind is not ticked, MangoSSH is not running, or the per-minute limit was reached.
    RDP recordings says no relay is configuredSet Settings → Relay Server on this device.