# Ghostty ships Mac and Linux apps, and points Windows at its library

> Ghostty is a Zig terminal emulator with one thread per job per terminal, a native app on each platform, and an embeddable C library. The gap worth knowing before you try it is that the graphical app covers macOS and Linux, while Windows support lives in libghostty-vt.

**ghostty-org/ghostty** — Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.

- Repository: https://github.com/ghostty-org/ghostty
- Website: https://ghostty.org
- Stars: 61,541 · Forks: 3,515
- Language: Zig
- License: MIT
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/ghostty-org-ghostty

## The apps are macOS and Linux, and Windows is a library target

The platform split is stated plainly in the roadmap and worth reading before anything else. The macOS app is a SwiftUI application with real windowing, menu bars and a settings GUI, using a Metal renderer with CoreText for font discovery, and it supports AppleScript and Apple Shortcuts through AppIntents. The Linux app is built with GTK and integrates with systemd where available, for things like always-on behaviour, opening new windows in a single instance and cgroup isolation. Windows is not named as an application target anywhere in that description. The cross-platform claim belongs to libghostty-vt, which is stated to be usable today for Zig and C and compatible with macOS, Linux, Windows and WebAssembly. So a Windows reader has a usable library and no stated desktop application.

## Three threads per terminal, and the renderer follows the platform

The performance story starts from an architectural decision rather than a benchmark. Each terminal gets a dedicated read thread, write thread and render thread, and the read thread runs a terminal parser that uses CPU-specific SIMD instructions. The renderer is chosen per platform, OpenGL on Linux and Metal on macOS, which is why the macOS build is a real Metal renderer rather than a compatibility layer. Below that sits a large shared core written in Zig, and the project is explicit that the goal is not a least-common-denominator experience, so the native parts are written per platform on purpose. A reader porting a plugin or a configuration across two machines should expect platform differences to be deliberate rather than an oversight.

## The speed claim is comparative, and it is the project's own

The claim is specific and it is attributed, so it is worth quoting in the form the project gives it. Ghostty and Alacritty are usually within a few percentage points of each other on various benchmarks, and both are something like 100 times faster than Terminal.app and iTerm, while Ghostty is described as much more feature rich than Alacritty with a more native app experience. That is the project's characterisation of itself, not a measurement reproduced here, and no benchmark is named in that paragraph. The real difference in approach against those alternatives is that Alacritty is the minimal GPU-rendered option and Ghostty is the one that adds windowing, tabs, splits and tab colouring on top of the same performance class, so the trade is features against a smaller surface.

## Behaviour is resolved as standards, then xterm, then everyone else

Terminal behaviour is partly a de jure standard and mostly a de facto one, and Ghostty writes down the order it resolves disagreements in, which is the most useful thing in the project for anyone porting a configuration. The precedence runs: standards where one exists, then xterm if the feature exists there, then other popular terminals, in that order, and that sequence is what the project treats as its definition of a standard. ECMA-48 is named as the de jure reference. On top of the legacy work there is an xterm audit with conformance test cases, and support for modern sequences including the Kitty graphics protocol, the Kitty image protocol, clipboard sequences, synchronized rendering and light and dark mode notifications. Where another emulator is quirky, this one follows the rule above instead.

## Step six of the roadmap is marked with a cross, on purpose

The roadmap is a six-row table, and five rows carry a check while the sixth carries a cross: Ghostty-only terminal control sequences. Everything else on the list is done, covering standards-compliant emulation, competitive performance, multi-window and tabbing and panes, native platform experiences, and the cross-platform libghostty. The unmarked row is not an oversight or a gap that fell through the schedule, it is a refusal. For a reader who writes extensions, that single row is the most consequential line in the repository, because it means a sequence Ghostty does not implement will not appear, and a workflow that depends on inventing one has to be reworked rather than waited on.

## libghostty-vt is the piece you can adopt independently

Ghostty is two deliverables wearing one name, and the second is a cross-platform, zero-dependency C and Zig library for building a terminal emulator or reusing terminal functionality such as style parsing. Because of the scope, the project is breaking libghostty into separate libraries, starting with libghostty-vt, whose job is parsing terminal sequences and maintaining terminal state. That piece is already available rather than announced, and the repository ships an examples directory with a small C project per capability: color scheme, colors, compression, effects, focus and key encoding, mouse encoding, formatter, grid traversal, kitty graphics, modes, paste, render, search, selection gesture, selection and SGR. A separate project named Ghostling is offered as a minimal complete example.

## The Makefile's only advice is to use zig build instead

The build story has a small joke in it that is also accurate. The Makefile defines an init target whose entire body prints a line telling you that you probably want to run zig build instead, and that is the entry point for anyone working in the repository, since build.zig and build.zig.zon sit at the root. The rest of the Makefile maintains the GLAD OpenGL loader from a generated glad.zip and provides a clean target that removes zig-out, .zig-cache, macos/build and macos/GhosttyKit.xcframework. Packaging is spread across several systems rather than one, with flatpak, snap, nix and flake.nix alongside dist/ and PACKAGING.md, and there is Doxyfile and DoxygenLayout.xml for generated reference documentation.

## Conclusion

Adopt Ghostty if you are on macOS or Linux, want a terminal that behaves like a native application on your own platform, and want a real terminal library rather than a screen-scraping library. Do not adopt it expecting a Windows desktop terminal, because the app targets are macOS and Linux and only libghostty-vt is stated to cover Windows. Verify first what counts as correct for you, since the project resolves behaviour by standards, then xterm, then other popular terminals, so an expectation carried over from a different emulator can be wrong here by design.

## FAQ

### What is Ghostty for?

It is a terminal emulator written in Zig that uses platform-native interfaces and GPU acceleration, and it also ships as libghostty, a zero-dependency C and Zig library you can embed in your own application.

### Is Ghostty on Windows?

Not as a desktop application, since the apps described are the macOS SwiftUI build and the GTK build for Linux. The library libghostty-vt is stated to be compatible with macOS, Linux, Windows and WebAssembly.

### how to install ghostty

The repository carries no install command and points to the download page on the Ghostty website instead. To build from source the project expects zig build, with the Makefile stating that you probably want that rather than its own init target.

### Is Ghostty any good?

The project states it is in the same performance category as the highest performing terminal emulators, usually within a few percentage points of Alacritty on various benchmarks, and much more feature rich than it. That comparison is the project's own claim and names no benchmark.

### how to use ghostty

The terminal runs mainstream terminal programs because all regularly used control sequences are implemented, and the project says it can run them without issue. Where behaviour is ambiguous, Ghostty resolves it by standards first, then xterm, then other popular terminals.

## Sources

- [Official documentation](https://ghostty.org)
- [Official README](https://github.com/ghostty-org/ghostty#readme)
- [Project repository](https://github.com/ghostty-org/ghostty)
- [Release notes](https://github.com/ghostty-org/ghostty/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ghostty-org-ghostty
