LmCast :: Stay tuned in

Wterm – Terminal Emulator for the Web

Recorded: May 29, 2026, 2 p.m.

Original Summarized

wterm | Terminal Emulator for the WebwtermSearch docs⌘K3.1knpmIntroductionDocumentationIntroductionGet StartedConfigurationThemesAPI ReferenceFrameworksReactVueVanilla JSPackagesGhostty CoreJust BashMarkdownCore / AdvancedExamplesNext.jsSSH ClientLocal ShellViteMarkdown StreamingGhostty CoreSource@wterm/core@wterm/dom@wterm/react@wterm/vue@wterm/ghostty@wterm/just-bash@wterm/markdownA terminal emulator for the webwterm ("dub-term") renders to the DOM — native text selection, copy/paste, find, and accessibility come for free. The core is written in Zig and compiled to WASM for near-native performance.DefaultSolarizedMonokaiLightwterm ("dub-term") renders to the DOM — native text selection, copy/paste, find, and accessibility come for free. The core is written in Zig and compiled to WASM for near-native performance.Example uses just-bash. See also: SSH, local.
Features

Zig + WASM core — VT100/VT220/xterm escape sequence parser compiled to a ~12 KB .wasm binary
DOM rendering — native text selection, clipboard, browser find, screen reader support
Dirty-row tracking — only touched rows are re-rendered each frame via requestAnimationFrame
Themes — CSS custom properties with built-in Default, Solarized Dark, Monokai, and Light themes
Alternate screen buffer — vim, less, htop work correctly
Scrollback history — configurable ring buffer
24-bit color — full RGB SGR support
Auto-resize — ResizeObserver-based terminal resizing
WebSocket transport — connect to a PTY backend with reconnection
Ask AI⌘I

wterm, also known as dub-term, is a terminal emulator designed to render within the Document Object Model (DOM), providing native features such as text selection, copy/paste functionality, find operations, and accessibility support at no additional cost. The foundational core of wterm is implemented in Zig and compiled to WebAssembly (WASM), which enables near-native performance. The core parsing mechanism handles VT100, VT220, and xterm escape sequences, resulting in a small WASM binary of approximately 12 kilobytes.

The framework incorporates several sophisticated features for a rich user experience. It manages rendering efficiency through dirty-row tracking, ensuring that only the rows that have been modified are re-rendered each frame via requestAnimationFrame. For visual customization, the emulator supports various themes utilizing CSS custom properties, including Default, Solarized Dark, Monokai, and Light themes. It supports full 24-bit color by implementing complete RGB SGR support.

Functionally, wterm features an alternate screen buffer, allowing compatibility with established utilities like vim, less, and htop. Scrollback history is managed via a configurable ring buffer. Furthermore, the emulator incorporates auto-resize capabilities based on the ResizeObserver API for dynamic screen fitting. Communication with the backend is facilitated through a WebSocket transport, which connects to a PTY backend and includes reconnection logic. The system also supports a configurable scrollback history mechanism. The ecosystem surrounding wterm includes various packages such as Ghostty Core, wterm/core, wterm/dom, wterm/react, wterm/vue, wterm/ghostty, wterm/just-bash, and wterm/markdown, demonstrating its versatility across modern web development frameworks and shell interactions.