MultiTerminals is a browser-based window manager for terminal sessions. Each terminal is a real xterm.js instance backed by a WebSocket-connected PTY process on the server. You can spawn, drag, resize, stack, and close terminal windows exactly like a desktop environment -- but everything runs in a single browser tab.
This was the biggest project in the Terminal/3D phase. The 15.3 MB codebase reflects the ambition: full window management, full terminal emulation, and Claude Code integration so you could run AI-assisted development across multiple terminals simultaneously.
Window Management
Drag, resize, minimize, maximize, z-order stacking. Full desktop-like window management built from scratch in the browser.
xterm.js Terminals
Real terminal emulation with full ANSI support, Unicode, 256 colors, mouse events, and scrollback. Not a simulation.
WebSocket PTY Backend
Each terminal connects to a server-side PTY via WebSocket. Low latency, full interactivity, real shell processes.
Claude Code Integration
Dedicated Claude Code terminal mode. Run AI-assisted coding sessions alongside regular shells. The multi-agent dream.
- 01 Browser window management is deceptively hard. Z-ordering, focus management, drag boundaries, resize handles on all edges, snapping -- every feature that feels simple on a desktop requires careful implementation in the DOM.
- 02 xterm.js is a deep library. Getting basic terminal rendering is easy. Getting correct behavior for every ANSI escape, bracketed paste, mouse mode, and Unicode cluster takes weeks of edge-case hunting.
- 03 WebSocket + PTY performance matters. Every keystroke is a round trip. Batching, buffering strategies, and keeping the connection alive under load were constant challenges. A 50ms stall feels like lag.
- 04 15 MB means you went too far (or not far enough). The codebase grew because the vision kept expanding. In retrospect, this project needed better boundaries -- or a commitment to go fully modular, which led directly to XtermOrchestrator.