> “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.
I like Rex and have started using it and its replacing Ghostty for me. This has made me a bit confused: is the intent for Rex to replace Ghostty? not sure when I would use one vs the other yet
Dang. I was hoping some of this was going to come to ghostty. Especially the ssh session stuff. Wezterm has it. I prefer ghostty but it’s kinda lame if it becomes the lite version of a paid product.
I suspect Ghostty is to Rex what Chromium is to Google Chrome (without all the negative connotations that is, I’m a happy Rex user!): both something of a tech demo for libghostty, and an open source, basic-but-fully-featured terminal emulator. Rex, then, will possibly be a paid product at some point, and adds features like the server, agent integration, and persistent session management on top.
If you had asked me two years ago if I was ready to pay for my terminal and quit my jetbrains subscription, I’d have laughed. Now I’m earnestly ready for that if Superlogical were to announce a paid plan.
It comes down to the question of if it provides enough value over other competing products (which may be free or lower cost) to justify the price. If you sell 10$ widgets that solve $100 problems, you may wonder why nobody is buying your $10 widget when it "provides so much value" and it is because a $1 widget solves the same problem just as well.
Note, I am deliberately using a generic example, I use Ghostty but I haven't tried Rex yet and I have no idea how much value it provides over competing widgets)
yeah, that's true. but I would say with dev tools and such, people might easily fork over $10 if they think it's nice
I'd say the whole "lower cost" thing is less of a problem when it comes to ergonomics, we know that many devs buy all kinds of fancy split keyboards and things like that to make their workflow smoother, so I wouldn't be surprised if people easily forked over money to this
question is if it will actually take off or actually provide/slot into workflows that people actually like etc. if it's heavily opinionated or not really innovative, I don't see how people would "move over"
Incredible that we’re now at the point of needing to say “without all the negative connotations” when comparing against any sort Google product. LOL. I see this often.
I like Rex, too. Ghostty was never enough to use as any kind of frequent daily-use thing; I tried it, but found it basic. (I use iTerm, mainly, or Konsole on Linux.)
Rex is a more serious challenger to iTerm, for me, but atm has similar flaws (Mac only, for most functionality) without coming close on a feature basis. (Nobody uses all of iTerm's features, but most iTerm fans use a subset of them that still exceeds what less-featureful terminal apps (i.e., all of them) can do).
But libghostty is fuckig amazing. Do you have some internal/personal bespoke app that needs a terminal pane somewhere? Ask your clanker to use libghostty.
Do you have a professional, commercial product that needs a terminal somewhere? Direct your team of highly-paid experienced human software engineers to evaluate libghostty.
I’m using the beta. So far so good. I’m swapping between that and Herdr. Anyone who writes macOS apps take notes on Rex’s onboarding. It was so easy to enable/grant permissions.
The whole app is so incredibly satisfying and feels polished, down to every last button and animation. Buttery smooth, feels completely native. Better than some first-party macOS apps IMHO.
Just to reiterate to anyone reading this and being skeptical; it’s 10000000% better than what most apps give you in terms of affordances for allowing permissions in a Mac app.
Does this mean Apple might nuke those capabilities next year? It would not surprise me, but for right now, it’s really freaking good what they managed to put together.
It’s worth downloading the beta just to study their onboarding flow.
No, he does, and it's extremely good. It's completely replaced herdr for me and I run it on Linux (server), macOS, and my iPhone. I've yet to run into a bug. Access is being controlled via Discord and TestFlight - you can find the link to apply on their site.
Can you describe the iOS experience? Is it just a terminal that mirrors your sessions from the server? I have yet to encounter a good terminal experience on iOS that doesn’t make me want to rip my hair out so if they have some secret sauce to make it enjoyable I would be interested…
It has its own server-client format that replaces both the ssh / mosh layer and the tmux layer, allowing the iOS app to connect to existing sessions on the computer (also the Mac app can either connect to the local Rex server that is included in the app, or to remote servers over Tailscale).
It doesn’t replicate the “remote authentication” part of ssh, and leaves that to Tailscale instead.
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.
If you have structs that might need to be extended, you can use "versioned structs". One popular technique is to include the struct size as the first field. The struct size is set to `offsetof(mystruct, lastmember) + sizeof(lastmember)` and the receiver of the struct can use this to check if a member exists. The ARA API is a good example: https://github.com/Celemony/ARA_API/blob/65ec5c43b943a48cb54...
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)
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.
Indeed it is. It feels like libghostty was only announced yesterday and already there are things like ghostel for emacs that are imo far above and beyond the other emacs terminal options.
Ghostel is the first Emacs terminal emulator I've used that really just worked. Vterm and EAT were nice at for time but it's like night and day to Ghostel.
wow. Even today, all the modal interface options for emacs feel too slow for my fingers. Maybe a different terminal root will fix that? I should reinvestigate.
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.
> 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.
libghostty provides terminal emulation, without any UI. An application embedding it will need to provide the UI.
libvte provides terminal emulation complete with a gtk UI.
In terms of terminal emulation, libghostty implements several protocols that libvte does not. For example kitty keyboard, kitty graphics, and desktop notification.
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!
> You can now create a terminal in ~1,500 lines of C that has more features and better performance than just about any terminal that existed in 2025, and most today in 2026.5 And thanks to the rich ecosystem of language bindings, you can do this in every major programming language. You get this for free. For almost no effort. You can just do it.
can i just get you people to slow down a bit and explain: why are you guys building your own terminal? whats the deep pain here?
(i'm not at all being skeptical, i respect you guys enough to understand that there's something here I don't get and it's my skill issue, so I am trying to learn)
I think the point isn't that everyone should create their own standalone terminal, but apps that embed terminals (like IDEs, cloud portals etc) can make much better integrated terminals with less code.
It's like a better alternative to xterm.js, and better than existing terminal emulator libraries.
think of it as the split between a browser engine (renders and handles interactions with webpages) and a browser (provides the user interface and everything other than rendering the webpage, e.g. bookmarks, tabs, clipboard interaction, etc.)
similarly, a terminal conceptually consists of a terminal engine, which handles text rendering and interaction, and then a terminal which handles tabs, splits, sessions, etc.
now one key point is that you can get a terminal engine right according to a bunch of reasonably objective criteria, so it's a problem well worth solving once and for all. the terminal itself is a lot more subjective and idiosyncratic; different people want different things out of their terminals and the reason is very often that it fits the way they work, or they enjoy some particular features, and even the absence of other features. it is wonderful that libghostty can solve the part that everyone agrees needs to be objectively correct, and lets people concentrate on building the subjective part in the way they like best.
- iTerm started pushing a ton of updates to add features that absolutely no one wanted. AI chat in the terminal emulator (not within the terminal), integrated web browser, etc.
- Some of those features turned out to introduce major vulnerabilities, so they had to push even more frequent updates to patch them. It’s extremely annoying to have your work interrupted by multiple update prompts in a day from your terminal.
- iTerm has visual glitches (line artifacts appearing when windows are opened/closed) on non-Retina monitors.
That said, I miss the GUI for changing settings. Ghostty’s settings file format requires looking up keys every time you want to change something, and it isn’t nearly as powerful as iTerm profiles.
I'm also still on iterm2. I don't quite get what people want from a terminal emulator, for me it's mostly window management: being able to open iterm2 fullscreen with a hotkey, having panes and tabs, that's it.
I wouldn't even need panes and tabs if I used tmux, but I can't be arsed: I used to but now much prefer using a GUI and not have to do tabs/scroll/selection differently than every other application.
Search and tmux integration are where iTerm2 really shines imo. I use Ghostty 99% of the time now though. (Search did get a lot better with the latest release.) What features specifically keep you on iTerm2?
Aside from the outstanding tmux integration (and search):
- Font rendering (and cell size control) is still better on iTerm2, although Ghostty has been rapidly gaining
- Compact theme with thin titlebar tabs
- Profiles
- Window arrangements
- In-terminal API (which Mitchell has acknowledged as a useful feature)
The iTerm2 settings/preferences are a mixed bag. On the one hand, discoverability and settings search. On the other hand the panel is insane. Also iTerm2 doesn't have Ghostty's straightforward prefs file. I guess I want the best of both worlds: A well-organized settings UI, with search; and a file I can easily neovim.
In what way did search get better for you with 1.4? The hotkeys to navigate search results (Cmd+G / Cmd+Shift+G) don't work for me even with custom keybindings as documented and the search box doesn't get prefilled with current selection - the _only_ two features that I'd ask for besides the actual search working. Were you able to solve these in your setup?
No shade to ghostty btw, it's an amazing product that I use every day. I just have to accept the lack of some of this usability polish.
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.
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!
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.
This is a confusing question. If the terminal emulator is using the server's frame buffer, then it is running on the server end. If the terminal emulator is 'over SSH', then the actual terminal emulator runs on the client end.
They are two very different setups, the former being covered by the likes of zhcon, jfbterm, fbpad, and my virtual terminal system; and the latter being a wide range of things depending from what one's desires are on the client.
He posted here a while back, paraphrased "My revenue model is my bank account has 10 digits". He's wealthy and likes to code and is giving back to the community
"Mitchell Hashimoto is a software developer and entrepreneur best known as the co-founder of HashiCorp, which was acquired by IBM for $6.4 billion in 2025."
Many common ways for the financing of an free and open source project to be sustainable (The main keyword) in the mid to long term:
1) A non-profit company that has full-time employees but supported via sponsorships: (gnu project, mastodon, omarchy, zig)
2) Multiple for-profit companies that each have full-time employees contributing to an open source project that they all use: (ocaml, linux, rust)
3) An ultra high net worth individual that has full-time contributors to open source and supported via a non-profit (signal, ghostty)
4) A for-profit company that has dedicated full-time employees that have full support and own the direction of the open source project (go, swift, java)
> A for-profit company that has dedicated full-time employees that have full support and own the direction of the open source project (go, swift, java)
I think this has not been the case for Java in quite a while. It is a community project now.
It’s really hard to come up with better conditions for an open-source project than what libghostty has. I’m pretty sure it will be the last terminal emulator at this point.
you missed the 99% case, which is some random person who has a reasonably well paying day job and develops the project in their spare time. AI agents make that more sustainable, not less. vim is a good example, as are a lot of popular programming languages.
There's also https://wintty.io/ which I just learned about. MIT licensed, binary downloads restricted to project sponsors, but buildable from source, allegedly easily (I haven't tried it). Currently 120 stars on GitHub.
He's just starting the project, if you check his page he doesn't even have any binaries yet. So currently it's more like "Hey, subscribe to my Patreon if you want to support my work, and in the future I'll make some bonus content for subscribers when it's ready". Which... well, some people actually do follow through on commitments like that, so really it depends on how well you know and trust the person involved whether you'd want to subscribe to a Patreon like that. Similar principle here, it looks like.
(I have formed no opinion, positive or negative, on WinTTY yet, BTW, so don't take this as either an endorsement or a... whatever the right word for anti-endorsement would be).
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!!!
I think Ghostty is great for the most part but I keep going back to iTerm2, personally.
iTerm just feel less buggy. For example I was running Claude in a container the other day and the slash command complete wasn’t rendering properly with Ghostty but worked perfectly fine with iTerm.
I want to switch to Ghostty because I prefer how simple Ghostty is overall and I think the project itself is very cool and an important piece of software (libghostty) but it doesn’t quite get there for _for my use cases_.
I came to check and say the same as well. I was thinking if they used AI to convert Zig to C.
And that is with me and everyone else knew it was coded in Zig in the first place. Had anyone not knew what Ghostty were I seriously think they would have thought it was a "C Library".
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.
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
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.
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"?
My opinion is that this idea that seems to be in the same direction of all SaaS is dead because everyone will just build their own products is true only for a subset of people.
I do agree in case of terminals this subset of people might overlap a lot with the entire market -> developers.
I see the future a bit different as in many people/companies will offer to the market some kind of building blocks that will be extra configurable by agents and then we are combining them.
In this case libghostty is such a component that can be integrated in a lot of things and people building those things want to work at a higher level of abstraction than building the terminal emulator. To be honest is among the best example of such a component that I see in the future that I think about.
AI is not magic; there is a fair amount of work involved in getting a complex piece of software correct and performant, and once someone has done that it makes way more sense to build on top of it than to reinvent the wheel.
Most people are in some way constrained in their AI usage, be it a session/week limit or the token pricing. So while you now can definitely build apps on your own you couldn’t before, you still have to make some economic considerations like before: My company is still not in the business of building terminal emulators. Even if an agent takes on the majority of the work to build one for me, I still have to invest some time and focus into directing it where I want it to go; it’s using up a big chunk of my usage limits if I want something anywhere near as polished as ghostty; and like all software, it wants permanent maintenance, bug fixes, and updates. AI doesn’t change any of that.
It’s time for the industry to realize that the weights may have shifted toward build vs. buy, but the general SaaS calculus is still in effect.
138 comments:
> “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.
I like Rex and have started using it and its replacing Ghostty for me. This has made me a bit confused: is the intent for Rex to replace Ghostty? not sure when I would use one vs the other yet
Dang. I was hoping some of this was going to come to ghostty. Especially the ssh session stuff. Wezterm has it. I prefer ghostty but it’s kinda lame if it becomes the lite version of a paid product.
AFAIK he said that Ghostty was like a technical demo of libghostty
I suspect Ghostty is to Rex what Chromium is to Google Chrome (without all the negative connotations that is, I’m a happy Rex user!): both something of a tech demo for libghostty, and an open source, basic-but-fully-featured terminal emulator. Rex, then, will possibly be a paid product at some point, and adds features like the server, agent integration, and persistent session management on top. If you had asked me two years ago if I was ready to pay for my terminal and quit my jetbrains subscription, I’d have laughed. Now I’m earnestly ready for that if Superlogical were to announce a paid plan.
I'm pretty sure he said Rex will remain free.
> Rex is and will always be free.
Why on Earth would folks pay for that? I'm not trying to be a jerk, but I genuinely don't understand the value proposition.
if it provides a nicer DX and offers value for you, why wouldn't people pay for it?
there's a big market for "makes your life easier" tools both in B2C and B2B
maybe not that big of a market but who knows
It comes down to the question of if it provides enough value over other competing products (which may be free or lower cost) to justify the price. If you sell 10$ widgets that solve $100 problems, you may wonder why nobody is buying your $10 widget when it "provides so much value" and it is because a $1 widget solves the same problem just as well.
Note, I am deliberately using a generic example, I use Ghostty but I haven't tried Rex yet and I have no idea how much value it provides over competing widgets)
yeah, that's true. but I would say with dev tools and such, people might easily fork over $10 if they think it's nice
I'd say the whole "lower cost" thing is less of a problem when it comes to ergonomics, we know that many devs buy all kinds of fancy split keyboards and things like that to make their workflow smoother, so I wouldn't be surprised if people easily forked over money to this
question is if it will actually take off or actually provide/slot into workflows that people actually like etc. if it's heavily opinionated or not really innovative, I don't see how people would "move over"
just my take though.
Absolutely, ergonomics is a huge part of the value- it solves a real problem.
Incredible that we’re now at the point of needing to say “without all the negative connotations” when comparing against any sort Google product. LOL. I see this often.
How you got your invite? I wanted to test Rex, but on the website there is only an invite only beta.
Should be able to add your email to get an invite. My invite arrived after three days.
I got an invite after only a few weeks
I like Rex, too. Ghostty was never enough to use as any kind of frequent daily-use thing; I tried it, but found it basic. (I use iTerm, mainly, or Konsole on Linux.)
Rex is a more serious challenger to iTerm, for me, but atm has similar flaws (Mac only, for most functionality) without coming close on a feature basis. (Nobody uses all of iTerm's features, but most iTerm fans use a subset of them that still exceeds what less-featureful terminal apps (i.e., all of them) can do).
But libghostty is fuckig amazing. Do you have some internal/personal bespoke app that needs a terminal pane somewhere? Ask your clanker to use libghostty.
Do you have a professional, commercial product that needs a terminal somewhere? Direct your team of highly-paid experienced human software engineers to evaluate libghostty.
It's the fucking business.
Ghostty- maybe, but not libghostty.
I'd be happy there even if he did, maybe there's a delayed schedule for Rex to be publicly available.
I had a look to see how Rex was coming along the other day and it seems there's still no Linux beta (though MacOs users have one).
I'm still interested to check it out though none of these things have ever interested me too much so far.
There is a beta out for the server on Linux but not yet the frontend. So you can connect to a remote Linux box from macOS (or iOS).
Would be some serious 4d chess if you were his sockpuppet account.
lol now that I read it back it might seem like that. I’m just a Mitchell Stan.
After watching "You can see everything" I now have to stop and think rather than just laughing at your commment.
That's because he doesn't have a product yet
I’m using the beta. So far so good. I’m swapping between that and Herdr. Anyone who writes macOS apps take notes on Rex’s onboarding. It was so easy to enable/grant permissions.
The whole app is so incredibly satisfying and feels polished, down to every last button and animation. Buttery smooth, feels completely native. Better than some first-party macOS apps IMHO.
Just to reiterate to anyone reading this and being skeptical; it’s 10000000% better than what most apps give you in terms of affordances for allowing permissions in a Mac app.
Does this mean Apple might nuke those capabilities next year? It would not surprise me, but for right now, it’s really freaking good what they managed to put together.
It’s worth downloading the beta just to study their onboarding flow.
No, he does, and it's extremely good. It's completely replaced herdr for me and I run it on Linux (server), macOS, and my iPhone. I've yet to run into a bug. Access is being controlled via Discord and TestFlight - you can find the link to apply on their site.
Can you describe the iOS experience? Is it just a terminal that mirrors your sessions from the server? I have yet to encounter a good terminal experience on iOS that doesn’t make me want to rip my hair out so if they have some secret sauce to make it enjoyable I would be interested…
Here’s a demo of it on iOS. It’s on a Duo, but you can get the idea from the single-screen part of the demo.
https://xxcancel.com/almonk/status/2114390982049329442#m
It has its own server-client format that replaces both the ssh / mosh layer and the tmux layer, allowing the iOS app to connect to existing sessions on the computer (also the Mac app can either connect to the local Rex server that is included in the app, or to remote servers over Tailscale).
It doesn’t replicate the “remote authentication” part of ssh, and leaves that to Tailscale instead.
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.
One example that comes to my mind is libopus: https://github.com/xiph/opus
If you have structs that might need to be extended, you can use "versioned structs". One popular technique is to include the struct size as the first field. The struct size is set to `offsetof(mystruct, lastmember) + sizeof(lastmember)` and the receiver of the struct can use this to check if a member exists. The ARA API is a good example: https://github.com/Celemony/ARA_API/blob/65ec5c43b943a48cb54...
take a look at hpy, which is explicitly designing a better API for python C extensions. https://hpyproject.org/
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)
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.
Indeed it is. It feels like libghostty was only announced yesterday and already there are things like ghostel for emacs that are imo far above and beyond the other emacs terminal options.
Ghostel is the first Emacs terminal emulator I've used that really just worked. Vterm and EAT were nice at for time but it's like night and day to Ghostel.
As of recently, the embedded terminal in Jetbrains IDEs is also based on libghostty.
And it has been such an upgrade.
There was so many little things that bugs me with JediTerm, unsupported escape sequences, bugged visualization, truncated output, you name it.
Now it just work, like it supposed to.
ghostel makes vterm feel so sad!
Yesss! Finally I can run nvim +term inside the Emacs frame and then call emacs -nw in there. Matryoshkamacs is the dream. We all live in a simulation.
You emacs people are so weird.
Oh yeah, like you've never succumbed to temptation of nested editor sessions. Freak.
I'm a vimmer. I use Emacs only because it vims better.
In what way does it vim better?
wow. Even today, all the modal interface options for emacs feel too slow for my fingers. Maybe a different terminal root will fix that? I should reinvestigate.
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.
Though zooming images is not there yet, is very need feature indeed.
> 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.
libghostty provides terminal emulation, without any UI. An application embedding it will need to provide the UI.
libvte provides terminal emulation complete with a gtk UI.
In terms of terminal emulation, libghostty implements several protocols that libvte does not. For example kitty keyboard, kitty graphics, and desktop notification.
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!
> You can now create a terminal in ~1,500 lines of C that has more features and better performance than just about any terminal that existed in 2025, and most today in 2026.5 And thanks to the rich ecosystem of language bindings, you can do this in every major programming language. You get this for free. For almost no effort. You can just do it.
can i just get you people to slow down a bit and explain: why are you guys building your own terminal? whats the deep pain here?
(i'm not at all being skeptical, i respect you guys enough to understand that there's something here I don't get and it's my skill issue, so I am trying to learn)
I think the point isn't that everyone should create their own standalone terminal, but apps that embed terminals (like IDEs, cloud portals etc) can make much better integrated terminals with less code.
It's like a better alternative to xterm.js, and better than existing terminal emulator libraries.
think of it as the split between a browser engine (renders and handles interactions with webpages) and a browser (provides the user interface and everything other than rendering the webpage, e.g. bookmarks, tabs, clipboard interaction, etc.)
similarly, a terminal conceptually consists of a terminal engine, which handles text rendering and interaction, and then a terminal which handles tabs, splits, sessions, etc.
now one key point is that you can get a terminal engine right according to a bunch of reasonably objective criteria, so it's a problem well worth solving once and for all. the terminal itself is a lot more subjective and idiosyncratic; different people want different things out of their terminals and the reason is very often that it fits the way they work, or they enjoy some particular features, and even the absence of other features. it is wonderful that libghostty can solve the part that everyone agrees needs to be objectively correct, and lets people concentrate on building the subjective part in the way they like best.
> 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!
What is Ghosty? Why should I use it?
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
I switched from iTerm to Ghostty because:
- iTerm started pushing a ton of updates to add features that absolutely no one wanted. AI chat in the terminal emulator (not within the terminal), integrated web browser, etc.
- Some of those features turned out to introduce major vulnerabilities, so they had to push even more frequent updates to patch them. It’s extremely annoying to have your work interrupted by multiple update prompts in a day from your terminal.
- iTerm has visual glitches (line artifacts appearing when windows are opened/closed) on non-Retina monitors.
That said, I miss the GUI for changing settings. Ghostty’s settings file format requires looking up keys every time you want to change something, and it isn’t nearly as powerful as iTerm profiles.
I'm also still on iterm2. I don't quite get what people want from a terminal emulator, for me it's mostly window management: being able to open iterm2 fullscreen with a hotkey, having panes and tabs, that's it.
I wouldn't even need panes and tabs if I used tmux, but I can't be arsed: I used to but now much prefer using a GUI and not have to do tabs/scroll/selection differently than every other application.
I was on iTerm2 for a long time, but nowadays I find myself using: https://bateri.dev
Image support is much better in iterm2, you can open them, save them - then you can easily download any file. And fonts also look much nicer.
Search and tmux integration are where iTerm2 really shines imo. I use Ghostty 99% of the time now though. (Search did get a lot better with the latest release.) What features specifically keep you on iTerm2?
Aside from the outstanding tmux integration (and search):
The iTerm2 settings/preferences are a mixed bag. On the one hand, discoverability and settings search. On the other hand the panel is insane. Also iTerm2 doesn't have Ghostty's straightforward prefs file. I guess I want the best of both worlds: A well-organized settings UI, with search; and a file I can easily neovim.In what way did search get better for you with 1.4? The hotkeys to navigate search results (Cmd+G / Cmd+Shift+G) don't work for me even with custom keybindings as documented and the search box doesn't get prefilled with current selection - the _only_ two features that I'd ask for besides the actual search working. Were you able to solve these in your setup?
No shade to ghostty btw, it's an amazing product that I use every day. I just have to accept the lack of some of this usability polish.
Vertical tabs is why i keep using iterm
Libghostty made the best terminal for Emacs possible (Ghostel). Thank you Mitchell.
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.
Recent interview with Hashimoto: https://alexalejandre.com/interviews/interview-with-mitchell...
Wow. This is how you write a library.
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.
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!
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.
This is a confusing question. If the terminal emulator is using the server's frame buffer, then it is running on the server end. If the terminal emulator is 'over SSH', then the actual terminal emulator runs on the client end.
They are two very different setups, the former being covered by the likes of zhcon, jfbterm, fbpad, and my virtual terminal system; and the latter being a wide range of things depending from what one's desires are on the client.
congrats to mitchell and team!
an early christmas present, thanks mitch and team
Thanks for this, I live in the terminal and ghostty does everything right.
I wonder how the author makes the work financially sustainable.
He posted here a while back, paraphrased "My revenue model is my bank account has 10 digits". He's wealthy and likes to code and is giving back to the community
He's a billionaire, has sponsors and has a startup.
Huh, I was told billionaires are evil.
He has billionaire investors. Probably the only grey note about his ventures here.
"Mitchell Hashimoto is a software developer and entrepreneur best known as the co-founder of HashiCorp, which was acquired by IBM for $6.4 billion in 2025."
Many common ways for the financing of an free and open source project to be sustainable (The main keyword) in the mid to long term:
1) A non-profit company that has full-time employees but supported via sponsorships: (gnu project, mastodon, omarchy, zig)
2) Multiple for-profit companies that each have full-time employees contributing to an open source project that they all use: (ocaml, linux, rust)
3) An ultra high net worth individual that has full-time contributors to open source and supported via a non-profit (signal, ghostty)
4) A for-profit company that has dedicated full-time employees that have full support and own the direction of the open source project (go, swift, java)
5) VC funded open source projects (Herdr, Bun, Deno, Burno, Atuin)
All other options such as low donations like "buy me a coffee", ko-fi, are completely unsustainable, now that AI agents exist.
> A for-profit company that has dedicated full-time employees that have full support and own the direction of the open source project (go, swift, java)
I think this has not been the case for Java in quite a while. It is a community project now.
It’s really hard to come up with better conditions for an open-source project than what libghostty has. I’m pretty sure it will be the last terminal emulator at this point.
you missed the 99% case, which is some random person who has a reasonably well paying day job and develops the project in their spare time. AI agents make that more sustainable, not less. vim is a good example, as are a lot of popular programming languages.
That's not sustainable. If $DAYJOB becomes too busy the project will stall because the random person won't have enough time to work on it anymore.
https://en.wikipedia.org/wiki/HashiCorp
This is an LLVM moment for terminals
In the age of perpetual 0.x software, it's nice to see a well-known project get to 1.0
Agreed. I feel like too much projects are too reluctant to take the responsibility to say "this is production ready".
Software is either 0.0.12 or 20x6.99
And we still don't have Ghostty for Windows
Soon rex will release for Windows
I use it on Windows all the time, just use a community solution or roll your own
There are several third-party Windows ports:
- Noctty (~517 stars)
- GhosttyWin3
- ghostty-windows (~79 stars)
There's also https://wintty.io/ which I just learned about. MIT licensed, binary downloads restricted to project sponsors, but buildable from source, allegedly easily (I haven't tried it). Currently 120 stars on GitHub.
charging for binaries is bold. wonder how he generated enough hype for that to work?
He's just starting the project, if you check his page he doesn't even have any binaries yet. So currently it's more like "Hey, subscribe to my Patreon if you want to support my work, and in the future I'll make some bonus content for subscribers when it's ready". Which... well, some people actually do follow through on commitments like that, so really it depends on how well you know and trust the person involved whether you'd want to subscribe to a Patreon like that. Similar principle here, it looks like.
(I have formed no opinion, positive or negative, on WinTTY yet, BTW, so don't take this as either an endorsement or a... whatever the right word for anti-endorsement would be).
Use Windows Terminal. Nearly a match for Ghostty on Windows. Well, it's Windows
The only thing I miss from WezTerm is the super configurable cursor (because of course I need a pulsating one)
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
is mitchell hashimoto literally one of the main tanks carrying all of open source right now? what a neat contribution!!!
What's better, iTerm2 or Ghostty?
Foot ( https://codeberg.org/dnkl/foot )
iTerm2 has way more features and configuration options
Ghostty is simpler and faster
What's better? Only works for some or works for anyone?
What's better, an apple or an orange?
Depends.
My grandma uses those!
I used iTerm2 until I noticed that Ghostty’s New Tab opens at the current working directory.
Haven’t gone back since.
You can set that in iterm 2. I've had it that way for ages
Oh right, it didn’t work for me because it depends on edits to my shell config files that didn’t work in my setup.
I suppose my accolade is that Ghostty just does what I want without hunting through config screens and managing file edits.
You can configure iterm2 to do whatever you want in new tabs or panes. This feature has been available for over a decade.
I have it reuse the same directory in a new pane. And my home directory in a new tab.
I think Ghostty is great for the most part but I keep going back to iTerm2, personally.
iTerm just feel less buggy. For example I was running Claude in a container the other day and the slash command complete wasn’t rendering properly with Ghostty but worked perfectly fine with iTerm.
I want to switch to Ghostty because I prefer how simple Ghostty is overall and I think the project itself is very cool and an important piece of software (libghostty) but it doesn’t quite get there for _for my use cases_.
I’m curious why they chose to use C for this as opposed to Zig with a c like interface.
it's Zig with a C ABI
Does that mean that it won't be packaged for Debian until zig is also stable? (see https://gracefulliberty.com/articles/four-months-of-zig/#bet...)
And a C API
https://lib.ghostty.org/vt/files.html
Yeah, Mitchell's description is very confusing.
I came to check and say the same as well. I was thinking if they used AI to convert Zig to C.
And that is with me and everyone else knew it was coded in Zig in the first place. Had anyone not knew what Ghostty were I seriously think they would have thought it was a "C Library".
It's Zig
It’s Zog with a C ABI. Zig bindings are a bit of a moving target still.
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
libghostty has been awesome for tui-test, excited for the stable api
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
good one!
This is so fuckin' cool.
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.
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"?
He mentions semantic versioning in the post, so major version.
Aren't those the same?
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?
My opinion is that this idea that seems to be in the same direction of all SaaS is dead because everyone will just build their own products is true only for a subset of people.
I do agree in case of terminals this subset of people might overlap a lot with the entire market -> developers.
I see the future a bit different as in many people/companies will offer to the market some kind of building blocks that will be extra configurable by agents and then we are combining them.
In this case libghostty is such a component that can be integrated in a lot of things and people building those things want to work at a higher level of abstraction than building the terminal emulator. To be honest is among the best example of such a component that I see in the future that I think about.
AI is not magic; there is a fair amount of work involved in getting a complex piece of software correct and performant, and once someone has done that it makes way more sense to build on top of it than to reinvent the wheel.
Most people are in some way constrained in their AI usage, be it a session/week limit or the token pricing. So while you now can definitely build apps on your own you couldn’t before, you still have to make some economic considerations like before: My company is still not in the business of building terminal emulators. Even if an agent takes on the majority of the work to build one for me, I still have to invest some time and focus into directing it where I want it to go; it’s using up a big chunk of my usage limits if I want something anywhere near as polished as ghostty; and like all software, it wants permanent maintenance, bug fixes, and updates. AI doesn’t change any of that.
It’s time for the industry to realize that the weights may have shifted toward build vs. buy, but the general SaaS calculus is still in effect.