We built a web workspace for our terminals, RDP sessions and Claude Code, and made it work from a phone A small IT services company in Santiago, Chile, released MuxTerm, an open-source (MIT) web workspace that unifies local shells, SSH, RDP, VNC and SFTP panels alongside Claude Code sessions in a single browser interface that works from a phone. The tool keeps terminals in server-side tmux via ttyd, brokers RDP/VNC through guacd without Guacamole, pulls credentials from a Vaultwarden vault, and parses Claude Code's JSONL transcripts to show conversation views, per-panel state indicators and Web Push notifications when a session is waiting for permission or input. We run a small IT services company in Santiago, Chile. A normal day for us is a dozen Linux servers, a handful of Windows machines we reach over RDP, and, since last year, three or four Claude Code sessions doing real work in parallel. For a long time that meant a laptop with too many tabs, a phone that was useless for any of it, and the recurring question "which Claude is waiting for me right now?". MuxTerm is what we built to fix that. It has been our daily driver for months and we released it as open source MIT with a proper installer and signed updates this week. This post is the story and the design decisions, not a feature list; the list is in the README https://github.com/tecnologicachile/muxterm . Terminals live in tmux on the server, not in the browser. Each panel is a tmux window served through ttyd. Close the browser, restart the server, update MuxTerm: the session is still there. This one decision gives you "pick up on the phone where you left the laptop" for free. RDP and VNC through guacd, without Guacamole. guacd is the small C daemon that does the protocol work. We talk to it with guacamole-lite from Node and render in the browser with guacamole-common-js. No Java, no Tomcat. On a phone you get a touch trackpad drag to move, tap to click, long-press for right-click and a toolbar with the keys phones do not have. One page, many panels. Local shell, SSH, RDP, VNC and an SFTP file browser are all panel types. Drag borders on a desktop; swipe between panels on a phone, with a pill at the bottom telling you where you are. Credentials stay in your vault. We use Vaultwarden. MuxTerm asks the Bitwarden CLI for the credential when you open a connection and forgets it afterwards. Entries with ssh:// , rdp:// , vnc:// or sftp:// URIs show up directly in the connection dialog. Responsive means re-fitting, not just media queries. The terminal has to be re-measured on every resize, rotation, tab switch and wake from sleep, and tmux has to be told the new size. Most of the bugs we fixed in the first months were in this area. This is where MuxTerm stopped being "yet another web terminal" for us. Claude Code writes a JSONL transcript of every session. MuxTerm reads it and turns a terminal panel into a conversation view : messages, tool calls, narration, the permission question with the options as buttons. You answer with a tap. From tmux and the transcript we compute one state per panel : idle, working, waiting for permission, waiting for input, done. It shows as an indicator on the panel, so a glance at the workspace answers "which one needs me". An activity tray keeps every question and completion from every session, grouped by session, and Web Push sends the question to your phone. We have genuinely left Claude working and gone for a walk. The honest caveat: Claude Code changes its transcript format between versions. The parser needs a small fix every few releases. If you see something rendered badly, an issue with the raw JSONL lines is the most useful thing you can send. Using a tool yourself and letting strangers install it are different jobs. Before releasing we spent a week on: Type=simple , a lesson learned the hard way . ssh-keygen -Y verify . No more "git pull and rebuild on the user's machine". releases/