Libghostty 1.0

858 points138 comments16 hours ago
jdorfman

> “And a whole wave of new terminals and "agentic" coding tools, such as herdr and cmux, have been built on it rather than writing yet another emulator.”

Mitchell could have easily snuck his competing product Rex in there but resisted. Respect.

show comments
smj-edison

I'm currently working on my own Zig project (an interpreter) and right now I'm working on designing a C interface for it. Seeing things mentioned like having objects as opaque handles, or enum-keyed getters and setters, made me think about how clunky my current API is, since I leak too many details to callers.

What really caught my attention was this: "So from the start, I took inspiration from C libraries I enjoyed working with and designed the API to have a strong, stable ABI that allows for future additions." What are good examples of this? I feel like I just don't have enough experience with well-designed C libraries to know what to look for.

show comments
nigehban

I was using ghostty since its beginning, then Mitchell has shown the capability of rendering for kitty and I installed the kitty, dropped everything else. maybe statistically is not correct but I feel the transitions, animations, rendering of the kitty terminal is superior than ghostty. I only miss some fancy window/pane layout settings (not sure kitty does have a window at all) and naming. Other than that kitty is my daily driver for any Agentic env.

PS: FMPOV Mitchell is a relentless performance addict. I have been seeing this since the vagrant days (this also makes me sad because it reminds me I am getting old)

JuniperMesos

Libghostty is a very cool project, this is an exciting release, kudos to mitchellh for spearheading this as well as all the people who have made contributions to the project. I use ghostty as my primary terminal emulator today and a few months ago I was experimenting with using libghostty in an android project that I plan to jump back to someday when I have the time, so I personally benefit from this work.

show comments
spudlyo

One area where Ghostty really shines is with fancy TUI programs like the pi agent. Pi has a relatively recent tuiMode "fullscreen" feature, and it's been exceptional. Showing inline images with the Kitty graphics protocol has been a huge improvement too -- I love it when a model calls `read` on an image file and I get to see the results in my terminal. The OSC-8 hyperlink support very handy too. Viewport scrolling is super fast, and pi can hide/show the scrollbar as you need it.

show comments
ximm

> Every bug any libghostty-vt embedder reports makes everyone else in the ecosystem better. Every feature we ship in libghostty-vt becomes available to everyone quickly and safely. Terminals can move faster with less fragmentation.

Can anyone give a comparison to libvte? There are many terminals that are just thin wrapper around that (gnome-terminal, xfce4-terminal, mate-terminal, lxterminal, sakura, …). It is tied to GTK, so it has a much narrower scope. But still it feels related in spirit.

show comments
amterp

Libghostty is such an awesome project, I didn't myself understand the vision a year ago but I've since then been working on my own terminal project using Libghostty and it really does just work and save me such a tremendous amount of work. Kudos to all the contributors!

show comments
vladde

> I had to use dash because bash used far more RAM than libghostty-vt and wouldn't fit into the 8 GB budget.

not only hilarious, but also very impressive!

alexpadula

What is Ghosty? Why should I use it?

paradox460

I'm still on iTerm2, simply because it just seems to work and has all the features I want

Occasionally I'll check out other terms people rave about. Tried kitty, wezterm, and a few others a while back, but wound up coming back to iterm.

Still, really happy to see things like this gaining traction. An easy way to implement high performance terminals in any application is a boon

show comments
IlikeMadison

Libghostty made the best terminal for Emacs possible (Ghostel). Thank you Mitchell.

lioeters

The documentation for libghostty is great, I'm reading through the guides and examples. It feel like a fun way to build your own terminal emulator GUI in C, Zig, or other languages with C bindings.

https://lib.ghostty.org/vt/example-programs.html

It also looks useful for testing and developing text interfaces (TUI), like file navigator, editor, dashboard, etc.

kyrofa

Wow. This is how you write a library.

sho_hn

Great stuff, congrats to mitchellh and the other Ghostty devs!

Kwi's (a KDE embedder) CI/CD and its Flatpak builds/repo have moved to the new version.

jwr

Thanks to libghostty and the efforts of many wonderful people, I can use ghostel in Emacs to have fast and reliable terminal emulation. I use that mostly to run multiple Claude Code and Codex sessions and it works great!

Thank you, Mitchell!

CrimsonCape

does anyone have a terminal setup with gorgeous colors/background/etc over ssh without a display manager? Looking for a lightweight server side environment. I keep searching for headless / framebuffer / DRM setups and there seems to be a few out there, wondering if these exist in a practical workflow.

show comments
nektro

congrats to mitchell and team!

gregjw

an early christmas present, thanks mitch and team

regexorcist

Thanks for this, I live in the terminal and ghostty does everything right.

markstos

I wonder how the author makes the work financially sustainable.

show comments
melodyogonna

This is an LLVM moment for terminals

Sparkle-san

In the age of perpetual 0.x software, it's nice to see a well-known project get to 1.0

show comments
matrixhelix

And we still don't have Ghostty for Windows

show comments
pmarreck

The only thing I miss from WezTerm is the super configurable cursor (because of course I need a pulsating one)

neomantra

When he first announced Ghostty, I was thrilled. Not about a new terminal emulator, there were plenty of those. I was excited about the vision of libghostty-vt, a portable high-performance terminal emulation component.

But I wasn't entirely sure, but Mitchell kept evangelizing it and his podcast interviews sealed it for me. I was going to use libghostty, along with Kitty Graphics Protocol to realize my vision.

It's been a pretty amazing 9 months. I've been as deep as assembly language trampolines and garbage collector debugging and as high as fixing cursive connections in Arabic script, with a lot of BubbleTea and hardening in between.

Here's some of the libghostty warez:

ntwebterm [1] , originally Coder's ghostty-web, is an xterm.js compatible browser embedder. I've added WebGPU rendering and soooo many UX enhancements; I finally forked it to keep it cohesive with our platform.

booba [2] uses ntwebterm to remote Golang programs over WebTransport or embed them in browser. All the demos on NimbleTerminal.com use it.

ntrecord [3] uses go-libghostty to make an improved version of Charm's vhs. The most important difference is it supports Kitty Graphics Protocol, but of course has all the compatibility that libghostty provides.

gloss [4] is 'less' for graphics. The hardest part of 'gloss' is forgetting to type 'less'. If you have Rex, run "gloss skill install rex" and you'll have a new "grex" command to view files in a side block, also command-shift-G will open a Gloss block. There's too much to write about, including how agents can use it... coincidentally released a new version yesterday.

I made a Golang 3D game engine that targets Kitty Graphics [5]. Started at 4fps but got it to 120fps! And once you are there, you can add yummies like Gaussian Splatting.

Our fuzzing dash/orchestrator [6] uses this platform in several ways, including OSC 7501-driven web GUI via booba.

Everything in the Nimble Terminal Platform is layered, so you can grab the parts that fit your needs.

Thank you Mitchell and the libghostty team for empowering and inspiring us!!!

[1] https://nimbleterminal.dev/ntwebterm

[2] https://nimbleterminal.dev/booba

[3] https://nimbleterminal.dev/ntrecord

[4] https://nimbleterminal.github.io/gloss

[5] https://nimbleterminal.dev/nt3d

[6] https://fuzz.nimbleterminal.com

orliesaurus

is mitchell hashimoto literally one of the main tanks carrying all of open source right now? what a neat contribution!!!

brcmthrowaway

What's better, iTerm2 or Ghostty?

show comments
Decabytes

I’m curious why they chose to use C for this as opposed to Zig with a c like interface.

show comments
hit8run

Related, from the foot side: I've been porting foot (dnkl's Wayland terminal) natively to macOS: AppKit, CoreText, Core Animation, CPU rendering like upstream. On top of it I added native tabs, a Quake-style drop-down terminal and Ghostty-style splits.

What I'm working on now is close to what libghostty enables: a daemon that runs foot's terminal core headless, so programs keep running when the app quits or crashes, and windows come back with their scrollback. Next I want to attach to sessions on other machines over SSH.

https://github.com/gobijan/foot-macos

cpendery

libghostty has been awesome for tui-test, excited for the stable api

WhereIsTheTruth

Used it to for a terminal emulator plugin for sublime text, works flawlessly, better than Terminus, tmux and interactive programs works out of the box, only limitation came from the poor sublime text plugin API related to mouse events (there is none, so you have to hack)

If you thought building a terminal emulator too hard to add for your project, you no longer have an excuse, libghostty makes it very easy to implement

akshaysharma108

good one!

loeg

This is so fuckin' cool.

VadimPR

Tried libghostty-vt 1.0 as Mudlet's ANSI decoder - no measurable speed gain in tests and its terminal grid doesn't suit a MUD client (UTF-8 only, scrollback can't be edited), but I reckon it'd make a great terminal pane for cursor-addressed game screens.

hujun236

Curious how stable the public ABI is intended to be now that JetBrains and others are embedding it this quickly. Is the 1.0 promise closer to "API surface won't break" or more "we won't break you without a major version"?

show comments
didip

In the world of AI (slop or not),

why won’t people write their own subset of terminal emulators, just for their own need?

Probably faster without waiting for 3rd party to fix bugs and merge patches, no?

show comments