---
name: wterm-web-terminal
description: Web terminal emulator with Zig/WASM core, DOM rendering, and React/vanilla JS bindings
triggers:
- add a terminal to my web app
- embed a terminal emulator in the browser
- use wterm in my React app
- connect a WebSocket PTY terminal
- render a terminal in the DOM
- build a web-based shell interface
- integrate wterm terminal component
- display terminal output in a Next.js app
---
# wterm Web Terminal Emulator
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
wterm ("dub-term") is a web terminal emulator with a Zig/WASM core (~12 KB binary) for near-native VT100/VT220/xterm parsing. It renders to the DOM — giving you native text selection, copy/paste, browser find, and accessibility for free. Supports WebSocket PTY backends, alternate screen buffers, 24-bit color, scrollback, and themes.
## Packages
| Package | Purpose |
|---|---|
| `@wterm/core` | Headless WASM bridge + WebSocket transport |
| `@wterm/dom` | DOM renderer + input handler (vanilla JS) |
| `@wterm/react` | React component + `useTerminal` hook |
| `@wterm/just-bash` | In-browser Bash shell |
| `@wterm/markdown` | Render Markdown in the terminal |
## Installation
```bash
# React
npm install @wterm/react @wterm/core
# Vanilla JS
npm install @wterm/dom @wterm/core
# In-browser bash (no backend needed)
npm install @wterm/just-bash @wterm/core
```
Copy the WASM binary to your public directory:
```bash
cp node_modules/@wterm/core/wterm.wasm public/
```
## React Usage
### Basic Terminal Component
```tsx
import { Terminal } from '@wterm/react';
export default function App() {
return (