xterm.js

A fast, self-contained TypeScript library for embedding fully-featured terminals in the browser.

Library
npm
v6.0.0
21,228 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
89 /100 Excellent
Development Activity 92
Maintenance 96
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
91 /100 Excellent
Architecture 92
Code Quality 90
Innovation 90
Learning Curve 85

xterm.js is a frontend component that lets web applications deliver complete, interactive terminal experiences directly in the browser. It emulates a real terminal — handling curses-based apps, mouse events, rich Unicode, and VT sequences — while shipping with zero runtime dependencies in its core.

Battle-tested inside VS Code, Hyper, and Tabby, xterm.js pairs an ergonomic Terminal API with an optional GPU-accelerated WebGL renderer and a modular addon system, making it the de-facto standard for browser-based terminals, SSH clients, and cloud IDEs.

What You Get

  • A dependency-free core Terminal class that renders and emulates a VT100-compatible terminal in any modern browser
  • An optional GPU-accelerated WebGL renderer addon for high-performance drawing
  • A modular addon ecosystem (fit, search, web-links, attach, serialize, clipboard, unicode, ligatures, and more)
  • A headless build (@xterm/headless) that runs terminal state tracking in Node.js without a DOM
  • A fully typed public API via bundled TypeScript declarations, shipped as both CommonJS and ES modules

Common Use Cases

  • Building browser-based SSH and shell clients that stream a remote pty to the user
  • Embedding an integrated terminal inside a cloud IDE, code playground, or developer tool
  • Providing container and VM management consoles in web dashboards
  • Rendering live command output and interactive REPLs in web apps

Under The Hood

Architecture The codebase is layered into three cleanly separated units under src/: common/ holds the environment-agnostic terminal core (the VT parser in common/parser, InputHandler.ts, buffer management in common/buffer, and a service layer via CoreTerminal.ts), browser/ adds DOM-facing concerns (CoreBrowserTerminal.ts, renderers, selection, links, accessibility) and headless/ provides a DOM-free build. A service-oriented design with dependency injection wires these layers, and functionality is extended through a public addon interface (Terminal.loadAddon) with each addon isolated as its own npm workspace under addons/.

Tech Stack Written almost entirely in TypeScript (~96%), the core library ships with zero runtime dependencies. It builds with the TypeScript compiler plus esbuild and webpack for bundling, publishes dual CommonJS/ESM outputs, and is linted with oxlint and ESLint. Rendering uses the browser DOM with an optional WebGL2 canvas path provided by the webgl addon.

Code Quality Quality is high: unit tests (*.test.ts) sit alongside source across common/ and browser/, and a Playwright-driven integration suite runs against Chromium, Firefox, and WebKit. Type-aware linting is enforced with --max-warnings 0, naming conventions are checked by a dedicated ESLint config, and a benchmark harness guards performance regressions.

API Design The public API is deliberately small and ergonomic — new Terminal(), open(element), write(data), onData(), and loadAddon() cover most needs, letting developers get a working terminal in a handful of lines. The full surface is documented in a well-maintained TypeScript declaration file (typings/xterm.d.ts), with experimental APIs clearly flagged, and a demo app plus extensive README examples ease onboarding.

Used by 197 apps in this directory

TypeScript
92%
Apache 2.0

Apache Maka

AI Agents · AI Development · Developer Tools

5,668

An Apache-incubated agent workspace that treats every model call, tool run, and permission decision as an append-only, replayable event log instead of disposable chat history.

View details
81
Repo Health
85
Technical
81
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

22,918

A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.

View details
89
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated 1 weeks ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

28,378

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers