<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Browser Terminal Multiplexer on RockB</title><link>https://baeseokjae.github.io/tags/browser-terminal-multiplexer/</link><description>Recent content in Browser Terminal Multiplexer on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 01 Sep 2026 10:02:00 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/browser-terminal-multiplexer/index.xml" rel="self" type="application/rss+xml"/><item><title>WebMux Review: Like Tmux, but for the Browser — a Persistent Web Terminal Workspace</title><link>https://baeseokjae.github.io/posts/webmux-browser-tmux/</link><pubDate>Tue, 01 Sep 2026 10:02:00 +0000</pubDate><guid>https://baeseokjae.github.io/posts/webmux-browser-tmux/</guid><description>WebMux is a self-hosted browser terminal multiplexer that tiles persistent SSH, mosh, VNC, and RDP sessions in one web workspace — like tmux, but for the browser.</description><content:encoded><![CDATA[<p>WebMux is a self-hosted, browser-based remote workspace that tiles persistent SSH, mosh, VNC, and RDP sessions into a single scrollable web interface — effectively &ldquo;tmux, but for the browser.&rdquo; It started as a shared jump-box wall of terminals and has grown into a full multi-session terminal and desktop workspace with multi-user accounts, auto-reconnect, and OS service integration.</p>
<h2 id="what-is-webmux">What Is WebMux?</h2>
<p>WebMux is an open-source TypeScript application that turns your browser into a persistent remote workspace. Instead of running a single terminal in a web page the way tools like ttyd or gotty do, WebMux gives you a 2D tiled grid of sessions — SSH terminals, mosh connections, and even VNC or RDP desktop views — all living in one interface that survives browser closes and server reboots.</p>
<p>The project was created on 2026-03-07 and is actively maintained, with its latest update on 2026-09-01. As of that date it holds 45 GitHub stars, 7 forks, and a single open issue on the <code>jordanhubbard/webmux</code> repository. It requires Node.js 20 or newer and an OpenSSH client, with optional support for sshpass, mosh, VNC targets, and Apache Guacamole&rsquo;s guacd for RDP.</p>
<h2 id="why-tmux-but-for-the-browser--the-jump-box-problem">Why &ldquo;Tmux, but for the Browser&rdquo; — the Jump-Box Problem</h2>
<p>The tagline exists for a reason: WebMux solves the jump-box problem. If you administer remote servers, you have likely SSH&rsquo;d into a jump box, started a tmux session, and kept a wall of terminals open so your work survives disconnects. WebMux moves that entire pattern into the browser.</p>
<p>The core idea is a shared, scrollable wall of persistent SSH and mosh terminals. Rather than juggling multiple terminal windows or relying on a single tmux session on one host, you get a visual grid where every session is a tile you can add, resize, and cycle through. This is the &ldquo;why&rdquo; that skeptics on Hacker News said was unclear — and it is worth spelling out: WebMux is for people who live on remote machines and want their terminal workspace to be as persistent and organized as a desktop window manager.</p>
<h2 id="core-features-tiled-terminal-workspace">Core Features: Tiled Terminal Workspace</h2>
<p>The heart of WebMux is its 2D tiled terminal workspace, built on a scrollable CSS Grid. You start with a blank grid and click the &ldquo;+&rdquo; placeholders to add a session directly to the right of or below any existing tile. This gives you a window-manager-like layout without needing a window manager.</p>
<p>Each terminal tile uses xterm.js for full terminal emulation, which means you get 256-color support, clickable links, and a 5,000-line scrollback buffer. For transport, WebMux supports both SSH and mosh through node-pty, with keepalive and auto-reconnect built in. That combination matters: mosh handles flaky connections gracefully, while SSH keepalive prevents idle sessions from dropping.</p>
<p>Beyond the grid, WebMux includes a minimap, a dock for minimized sessions, and keyboard shortcuts to cycle between terminals with Ctrl+Shift+&lt; and Ctrl+Shift+&gt;. If you need to send the same input to every session at once, the &ldquo;Type to All&rdquo; broadcast mode does exactly that.</p>
<h2 id="beyond-terminals-vnc-and-rdp-desktop-sessions">Beyond Terminals: VNC and RDP Desktop Sessions</h2>
<p>Where WebMux separates itself from single-purpose terminal tools is its remote-desktop layer. In addition to the terminal workspace, it provides a second tiled workspace for VNC and RDP sessions, with fullscreen viewing. This means you can manage a headless Linux box&rsquo;s terminal and a Windows machine&rsquo;s desktop from the same browser tab.</p>
<p>This is a meaningful differentiator. ttyd and gotty are strictly terminal-sharing tools — they expose a shell in the browser and stop there. WebMux unifies terminal (SSH/mosh) and desktop (VNC/RDP) sessions in one interface, which makes it a more complete remote-lab or remote-administration tool rather than just a terminal viewer.</p>
<h2 id="persistence-and-auto-reconnect">Persistence and Auto-Reconnect</h2>
<p>Persistence is arguably WebMux&rsquo;s killer feature. Sessions are not tied to a browser tab — they survive browser closes, and they survive server reboots. When the server comes back up, WebMux auto-reconnects to your sessions on startup.</p>
<p>For anyone who has lost work because a laptop closed or a network dropped mid-command, this is the difference between a toy and a tool. Combined with mosh&rsquo;s resilience and SSH keepalive, WebMux is designed so that your remote workspace is always where you left it.</p>
<h2 id="multi-user-multi-viewer-and-type-to-all">Multi-User, Multi-Viewer, and Type-to-All</h2>
<p>WebMux is not just a single-user tool. It supports multi-user accounts with Argon2id password hashing, and it offers multi-viewer presence: multiple people can watch the same session, with click-to-focus keyboard control so the active viewer can type. The &ldquo;Type to All&rdquo; broadcast mode extends this to every session at once.</p>
<p>This makes WebMux useful for pair debugging, team demos, or training scenarios where an operator needs to show a remote session to colleagues. The presence model — where focus is explicit and clickable — avoids the chaos of multiple people typing into the same terminal at once.</p>
<h2 id="security-argon2id-jwt-and-trusted-mode">Security: Argon2id, JWT, and Trusted Mode</h2>
<p>WebMux ships two security modes. The first is local auth, which combines Argon2id password hashing with JWT tokens and HTTPS. Argon2id is the memory-hard password-hashing function recommended by OWASP, so stored credentials are resistant to GPU-based brute force. JWT handles session authentication, and HTTPS protects traffic in transit.</p>
<p>The second mode is a &ldquo;trusted&rdquo; mode intended for isolated networks, where you can skip the full auth stack because the network itself is trusted. WebMux also maintains an append-only JSONL audit log covering logins and session lifecycle events, which is valuable for compliance and for tracing who accessed what and when.</p>
<h2 id="installation-and-os-service-integration">Installation and OS Service Integration</h2>
<p>WebMux is designed to be a drop-in self-hosted tool. It installs as an OS service on all three major platforms: launchd on macOS, systemd on Linux, and the Windows Service Control Manager on Windows. Configuration lives in a YAML file under <code>~/.config/webmux/</code>.</p>
<p>The optional tmux-backed agent views are disabled by default, so you can keep the surface area small if you do not need them. The dependency footprint is modest: Node.js 20+, an OpenSSH client, and optional extras (sshpass, mosh, a VNC target, and Apache Guacamole&rsquo;s guacd for RDP).</p>
<h2 id="webmux-vs-ttyd-vs-gotty-how-it-compares">WebMux vs ttyd vs gotty: How It Compares</h2>
<p>To understand where WebMux fits, it helps to compare it against the established &ldquo;terminal in the browser&rdquo; tools.</p>
<table>
  <thead>
      <tr>
          <th>Feature</th>
          <th>WebMux</th>
          <th>ttyd</th>
          <th>gotty</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>GitHub stars (2026-09-01)</td>
          <td>45</td>
          <td>12,288</td>
          <td>19,548</td>
      </tr>
      <tr>
          <td>Language</td>
          <td>TypeScript</td>
          <td>C</td>
          <td>Go</td>
      </tr>
      <tr>
          <td>Tiled multi-session workspace</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Persistent sessions across reboots</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>VNC / RDP desktop sessions</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Multi-user accounts</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>Multi-viewer presence</td>
          <td>Yes</td>
          <td>No</td>
          <td>No</td>
      </tr>
      <tr>
          <td>OS service integration</td>
          <td>launchd / systemd / Windows SCM</td>
          <td>systemd / others</td>
          <td>systemd / others</td>
      </tr>
  </tbody>
</table>
<p>The star counts tell the real story: ttyd and gotty are mature, widely adopted single-purpose tools. WebMux is young and small by comparison. But it targets a different problem. ttyd and gotty answer &ldquo;how do I share one terminal in a browser?&rdquo; WebMux answers &ldquo;how do I run a persistent, multi-session, terminal-and-desktop workspace in a browser?&rdquo; If you only need to expose a single shell, ttyd or gotty is the pragmatic choice. If you need a persistent jump-box workspace with tiling, desktop sessions, and multi-user presence, WebMux is the only one of the three that fits.</p>
<h2 id="what-the-community-is-saying-hn-skepticism">What the Community Is Saying (HN Skepticism)</h2>
<p>WebMux&rsquo;s Hacker News Show post reached 26 points, and the discussion surfaced two honest critiques. The first was that the README lacked a screenshot or demo link, making it hard to judge the tool at a glance. The second was more fundamental: one commenter wrote, &ldquo;I genuinely don&rsquo;t understand what problem this solves. Running on operating systems that can run web browsers but not terminal emulators?&rdquo;</p>
<p>That skepticism is fair, and it points to a documentation gap rather than a product gap. The use case — a persistent remote jump-box workspace — is real, but it needs to be explained clearly to win over people who have never needed one. The author&rsquo;s background as a long-time FreeBSD user since 1997 lends credibility to the project&rsquo;s focus on persistent remote sessions, a workflow that is second nature to veteran sysadmins but unfamiliar to many.</p>
<h2 id="who-should-use-webmux">Who Should Use WebMux</h2>
<p>WebMux is a strong fit for a few specific profiles. Remote sysadmins and SREs who live on jump boxes will appreciate a persistent, tiled wall of SSH and mosh sessions that survives disconnects. Teams that need to share a remote session for pair debugging or demos will benefit from multi-viewer presence and Type-to-All. Anyone managing a mix of headless Linux servers and Windows or VNC-based desktops will value having terminal and desktop sessions in one browser tab.</p>
<p>It is less suited to users who just want to expose a single shell to the web — for that, ttyd or gotty is simpler and far more battle-tested. And because it is young (created in March 2026) with a small community, you should expect to self-support and watch the project&rsquo;s trajectory before betting critical infrastructure on it.</p>
<h2 id="verdict-is-webmux-worth-it">Verdict: Is WebMux Worth It?</h2>
<p>WebMux is a promising answer to a real problem: persistent, multi-session remote workspaces in the browser. Its tiled terminal grid, VNC/RDP desktop layer, auto-reconnect, and multi-user presence are genuinely differentiated from ttyd and gotty, and its security posture (Argon2id, JWT, HTTPS, audit log) is thoughtful.</p>
<p>The trade-offs are maturity and adoption. With 45 stars and a single maintainer&rsquo;s roadmap, it is early-stage software. If you need a persistent jump-box workspace today and are comfortable self-hosting and self-supporting, WebMux is worth a serious look. If you need a proven, single-terminal web share, stick with the established tools. For the specific niche it targets, WebMux is the most complete option available.</p>
<h2 id="faq">FAQ</h2>
<p><strong>What is WebMux?</strong>
WebMux is a self-hosted, browser-based remote workspace that tiles persistent SSH, mosh, VNC, and RDP sessions into a single scrollable web interface — effectively &ldquo;tmux, but for the browser.&rdquo;</p>
<p><strong>How is WebMux different from ttyd or gotty?</strong>
ttyd and gotty expose a single terminal in the browser. WebMux adds a tiled multi-session workspace, persistent sessions that survive reboots, VNC/RDP desktop support, and multi-user accounts.</p>
<p><strong>Does WebMux keep my sessions alive if I close the browser?</strong>
Yes. Sessions persist across browser closes and server reboots, and WebMux auto-reconnects to them on startup.</p>
<p><strong>What do I need to run WebMux?</strong>
Node.js 20 or newer and an OpenSSH client. Optional dependencies include sshpass, mosh, a VNC target, and Apache Guacamole&rsquo;s guacd for RDP support.</p>
<p><strong>Is WebMux secure?</strong>
It offers two modes: local auth with Argon2id password hashing, JWT, and HTTPS, plus a trusted mode for isolated networks. It also maintains an append-only JSONL audit log of logins and session lifecycle events.</p>
]]></content:encoded></item></channel></rss>