Powerful, lightweight web terminal. Batteries included. Powered by libghostty-vt, WebGPU, and text-shaper.
See the codeBrowser terminal rendering for web apps, powered by libghostty-vt in WASM,
WebGPU with WebGL2 fallback, and TypeScript text shaping.
restty is early-release software. The high-level API is usable, but some APIs may still change
while the developer experience settles.
npm i restty
<div id="terminal"></div>
import { Restty } from "restty";
const restty = new Restty({
root: document.getElementById("terminal") as HTMLElement,
});
restty.connectPty("ws://localhost:8787/pty");
new Restty(...) creates the pane DOM, canvas, and hidden IME input for you.
restty: primary API (Restty, createRestty, themes, fonts, PTY helpers, plugin types).restty/xterm: focused xterm.js-style compatibility wrapper.restty/headless: DOM-free WASM terminal core wrapper for replay, tests, and backend-owned sessions.restty/esm: standalone browser ESM bundle for script/CDN usage.restty/internal, restty/internal/runtime, restty/internal/surface: unstable advanced modules.See the canonical API surface docs for the current method and export list.
git clone https://github.com/wiedymi/restty.git
cd restty
git submodule update --init --recursive
bun install
bun run build:themes
bun run playground
Open http://localhost:5173.
Useful checks:
bun run build
bun run test:ci
bun run lint
bun run format:check
bun run playground:build
Cloudflare Pages deployment settings:
Nonebun install --frozen-lockfile && bun run pages:buildplayground/distSKIP_DEPENDENCY_INSTALL=1 when using the build command above.The hosted docs are sourced from playground/content/docs/. Repository notes under docs/ are
legacy/internal references for development context.
522 commits
1 commits
TypeScript
98.8%
Powerful, lightweight web terminal. Batteries included. Powered by libghostty-vt, WebGPU, and text-shaper.
See the codeBrowser terminal rendering for web apps, powered by libghostty-vt in WASM,
WebGPU with WebGL2 fallback, and TypeScript text shaping.
restty is early-release software. The high-level API is usable, but some APIs may still change
while the developer experience settles.
npm i restty
<div id="terminal"></div>
import { Restty } from "restty";
const restty = new Restty({
root: document.getElementById("terminal") as HTMLElement,
});
restty.connectPty("ws://localhost:8787/pty");
new Restty(...) creates the pane DOM, canvas, and hidden IME input for you.
restty: primary API (Restty, createRestty, themes, fonts, PTY helpers, plugin types).restty/xterm: focused xterm.js-style compatibility wrapper.restty/headless: DOM-free WASM terminal core wrapper for replay, tests, and backend-owned sessions.restty/esm: standalone browser ESM bundle for script/CDN usage.restty/internal, restty/internal/runtime, restty/internal/surface: unstable advanced modules.See the canonical API surface docs for the current method and export list.
git clone https://github.com/wiedymi/restty.git
cd restty
git submodule update --init --recursive
bun install
bun run build:themes
bun run playground
Open http://localhost:5173.
Useful checks:
bun run build
bun run test:ci
bun run lint
bun run format:check
bun run playground:build
Cloudflare Pages deployment settings:
Nonebun install --frozen-lockfile && bun run pages:buildplayground/distSKIP_DEPENDENCY_INSTALL=1 when using the build command above.The hosted docs are sourced from playground/content/docs/. Repository notes under docs/ are
legacy/internal references for development context.
522 commits
1 commits
TypeScript
98.8%