Libghostty 1.0 released with a stable C ABI for terminal emulation
Libghostty-vt 1.0 is out. It is a portable C library for terminal emulation, extracted from the core of the Ghostty terminal, and its creator Mitchell Hashimoto announced on November 6, 2026 that both the library and its C ABI are now stable. For developers, that means you can embed a full terminal emulator in your own app and link against it without worrying that the next update breaks your build.
What’s new
According to Hashimoto’s announcement, the 1.0 release brings:
- A stable C ABI. The library follows semantic versioning. Every object is an opaque handle, and values are read and written through enum-keyed getters and setters, so new values can be added without new symbols. Programs built with newer headers and linked against an older library get a
GHOSTTY_UNSUPPORTEDresult instead of a crash. - ABI checks in CI. Changes are checked with libabigail against a committed baseline on Linux, and against golden type manifests on macOS and WebAssembly. On ELF platforms every exported symbol is versioned.
- Packaging for distributions. Libghostty has its own release cycle, separate from the Ghostty app. Each release has a signed source tarball plus a dependencies tarball, so a distribution can build it offline. The build installs shared and static libraries, headers, pkg-config files and a CMake package config.
- MIT license and few dependencies. The post lists simdutf, Google Highway, a compact Unicode table and Wuffs (for Kitty graphics protocol images) as the compiled-in dependencies, and says there is no copyleft code in the tree. The default build links libc, but it can be built freestanding by turning off SIMD.
- Wide platform support. CI builds and tests Linux (glibc and musl), macOS 13+, iOS 13+, FreeBSD, Windows, Android and WebAssembly. Other targets such as bare-metal RISC-V and ARM are built but not tested automatically.
Hashimoto also says the library creates no threads and allocates only through an allocator you can supply. He reports running 10,000 active terminals, each with a live shell, on a Linux server with 4 cores and 8 GB of RAM.
Who already uses it
The announcement lists a long set of consumers. The terminal in JetBrains IDEs now runs on libghostty, which Hashimoto ties to JetBrains’ report of more than 12.5 million active users. He notes the numbers are rough because most projects do not report usage.
Other users named in the post:
- Neovim has an approved pull request that replaces libvterm with libghostty-vt. It is waiting for a tagged release so distributions can package the dependency, and it closes a 10-year-old issue about reflowing scrollback on resize.
- Vercel’s Turborepo uses it to render task output in its TUI.
- KDE developers are experimenting with a Konsole replacement built on it.
- OrbStack, devenv, Ghostel for Emacs and ghostty-web, a WASM build with an Xterm.js-compatible API.
Community bindings exist for Rust, Go, JavaScript, Swift, Python, .NET, Elixir, Dart, Java and more.
What it means for developers
If you build a TUI, an IDE, a cloud terminal or an agent tool that shows shell output, you no longer have to write your own escape-sequence parser. The post claims you can build a terminal in about 1,500 lines of C with more features and better performance than most terminals that existed in 2025. Hashimoto defines “features” as the terminal protocols understood and “performance” as parsing throughput and memory use, since those are the parts the library provides.
For distribution packagers, the stable ABI and offline-buildable tarballs are the key change: you can package libghostty-vt as a shared library and let apps link to it dynamically.
Docs, examples and downloads are at lib.ghostty.org. If you want to read more on command-line tooling on this site, see our guide to a command-line invoice generator.
What comes next
Hashimoto says the team will focus on stability while adding as many terminal protocols as exist, with options to enable or disable each one, so embedders can choose what to include.