hotty (HTML over the TTY)
What if: terminals could speak HTML?
Status: innovation, market validation in progress
Yep, this website is a TUI program that renders hotty in xterm.js.
I wanted the neuroplast.io website to be an xterm.js TUI that you can SSH into, but I quickly hit a limit on how rich the experience can be. So I came up with an OSC protocol similar to Kitty's graphics, but it streams HTML instead of pixels. Then I built the whole vertical:
- the hotty protocol spec
- hotty-blitz library that implements the host side
- hottyterm, Ghostty with hotty built in via hotty-blitz
- xterm-addon-hotty for hotty on the web (in sandboxed iframes)
Some parts of the protocol are still naive, but it works remarkably well. plx already speaks hotty, so I build its tools and status bars with it, and this is just the start. I can't wait to see what other people build with it.
- hotty.neuroplast.io: See it for yourself
- The spec: a draft
- hottyterm: a terminal with hotty built in, Ghostty with a few mods (install)
- hotty-blitz: the renderer, in Rust with a C ABI, and a polyfill for terminals with kitty graphics
- xterm-addon-hotty: hotty for xterm.js, each surface in a sandboxed iframe
- hotty-go: the Go SDK
- hotty-ts: the TypeScript SDK, for Node and Bun
- hotty-rs: the Rust SDK, with a ratatui adapter and the host side hotty-blitz is built on (docs)
- hotty-lua: the Lua SDK
- hotty-a2ui: a UI kit on A2UI, with a Go core, a hotty renderer and a storybook (a proof of concept; the storybook is one of the apps on hotty.neuroplast.io)