VoidTerm is a browser-native terminal emulator that brings the full power of a local shell session into the browser tab. Built on WebAssembly for near-native execution speed and xterm.js for pixel-accurate terminal rendering, it handles everything from interactive SSH tunneling to custom color theming without plugins or extensions.
Why Another Terminal Emulator
Most web-based terminals feel sluggish because they relay every keystroke through a REST layer. VoidTerm sidesteps that by compiling a PTY multiplexer to Wasm and running it in a dedicated worker thread. The UI thread stays free for rendering, which means zero dropped frames even during heavy output — piping a multi-gigabyte log through grep feels instant.
The project started as a weekend experiment after I got frustrated with SSH-in-browser tools that couldn’t handle my tmux workflow. Three months later it had a theme engine, split-pane support, and a WebSocket relay that lets you tunnel into any host where you can run the companion daemon.
Architecture Overview
The front end is a TypeScript application bundled with Vite. xterm.js handles rendering, with addons for search, Unicode 11 width tables, and the WebGL renderer for GPU-accelerated output. Theme definitions are JSON files — swap palettes at runtime without reloading.
The back end is a lightweight Node.js relay server that authenticates via SSH keys and multiplexes connections over a single WebSocket. The Wasm PTY bridge handles local shell emulation for offline mode, so you can prototype shell scripts without a network connection.
If your terminal emulator can’t keep up with cat /dev/urandom, it’s not a terminal — it’s a slideshow.
Key Capabilities
- Full xterm-256color support with truecolor passthrough
- Split panes — horizontal and vertical — with drag-to-resize dividers
- SSH tunnel relay with ed25519 and RSA key authentication
- Offline local shell via Wasm PTY bridge
- Hot-swappable JSON theme engine with 40+ bundled palettes
- WebGL renderer for sustained 60fps output on heavy workloads
VoidTerm is MIT-licensed and actively maintained. Contributions welcome — especially around Wayland clipboard integration and the planned libsixel image-in-terminal renderer.
