Comment by mitchellh

12 hours ago

I'm the original creator of Ghostty. It's been a few years now! I don't know why this is on the front page of HN again but let me give some meaningful updates across the board.

First, libghostty is _way more exciting_ nowadays. It is already backing more than a dozen terminal projects that are free and commercial: https://github.com/Uzaaft/awesome-libghostty I think this is the real future of Ghostty and I've said this since my first public talk on Ghostty in 2023: the real goal is a diverse ecosystem of terminal emulators that aim to solve specific terminal usage but all based on a shared, stable, feature-rich, high performant core. It's happening! More details what libghostty is here: https://mitchellh.com/writing/libghostty-is-coming

I suspect by the middle of 2027, the number of people using Ghostty via libghostty will dwarf the number of users that actually use the Ghostty GUI. This is a win on all sides, because more libghostty usage leads to more stable Ghostty GUI too (since Ghostty itself is... of course... a libghostty consumer). We've already had many bugs fixed sourced by libghostty embedders.

On the GUI front Ghostty the apps are still getting lots of new features and are highly used. Ghostty the macOS app gets around one million downloads per week (I have no data on Linux because I don't produce builds). I'm sure a lot of that is automated but it's still a big number. I have no telemetry in Ghostty to give more detailed notes. I have some data from big 3rd party TUI apps with telemetry that show Ghostty as their biggest user base but that is skewed towards people consuming newer TUIs tend to use newer terminals. The point is: lots of people use it, its proven in the real world, and we're continuing to improve it big time.

Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.

Organizationally, Ghostty is now backed by a non-profit organization: https://mitchellh.com/writing/ghostty-non-profit And just this past week we signed our first 4 contributor contracts to pay contributors real money! Our finances are all completely public and transparent online. This is to show the commitment I have to making Ghostty non-commercial and non-reliant on me (the second part over time).

That's a 10,000 foot overview of what's going on. Exciting times in Ghostty land. :) Happy to answer any big questions.

Do you think there's entry barrier, even if pride based or psychological, to the fact that libghostty is called so rather that something more generic?

Let's say I'm the creator of Alacritty, would I have more problems adding libghostty than it's generically named identical counterpart libtermengine?

What's it been like managing a fairly large project with Zig? I know you've spoken highly of the language in the past, but recently it seems like Zig has been through some substantial changes that would be relevant to a terminal emulator. I'm curious how painful the churn has been for project maintainers.

  • It's been extremely good. I should really blog about it in more detail because I do get asked this question regularly. It's been very good.

    The large language changes are a burden, but it's something I knew going into it. And so far in every case, it's been well worth it. For example, 0.15 introduced the std.Io.Writer overhaul, but I really love the new API. I haven't started the std.Io change yet for 0.16. We'll see. And honestly, LLMs make this all way less painful... even though they're not trained on it, agents are able to run builds, reference docs, and work their way through the upgrade with huge success.

    I thought that finding contributors would be an issue, but it hasn't at all. There's a lot of people out there eager to use Zig, the language isn't hard to learn (as long as you're already familiar with systems concepts), etc. It has been good.

    I'll think about more to say if I write about this more but overall, I'm very happy with the language, the community, and the leadership. All good.

    • That's super interesting to hear. I see people say all the time "oh I would never use it in a big project because it's changing so fast", but then see awesome projects like Ghostty and Tiger Beatle written in it, so clearly they're doing something right.

      I'm surprised to hear LLMs have been helpful. What little I tried to use them for with Zig, all the information was way too out of date. But I was mainly just doing research, not running an agent at the time, so that's probably why.

      3 replies →

    • Do you get frustrated in using a low training data language like zig with AI models? I've noticed that models tend to be better with languages like TypeScript than Swift because of issues like that.

      1 reply →

Mitchell,

What has it been like witnessing terminal emulators make such a huge comeback with the advent of Claude Code et. all? I remember comments here in the early days of Ghostty along the lines of "Why is he working on a terminal emulator? We need people working on future problems, not the past!" Pretty funny considering I regularly hear people say they are in the terminal more than the browser now. Crazy times!

  • Overall I would describe it as "amusing."

    If you told me 3 years ago that terminal usage would _increase_ I would've laughed. Beyond that, I'm now having regular conversations with the frontier agentic coding companies (since they're far and away the largest terminal users at the moment) and if you had told me 2 years ago that that would be happening because of a terminal, I would've laughed even harder.

    So, it's amazing. But overall, its amusing.

  • Wait, really? So I’ve used the terminal for everything for decades, and now, because of vibe coding, all The Kids have joined me? I don’t even know how to feel about that. Better terminals are nice though.

    • Right? It’s been kind of funny watching everyone “rediscover” the terminal and I’m over here feeling like a true graybeard “silly kids, I’ve been here the whole time.”

      What’s old is new again is apparently just as true in tech as it is in fashion.

      5 replies →

    • I think terminal workflows are intimidating for a lot of people, because the discoverability is lower than GUIs. You can't necessarily intuit how a CLI works, you have to read the documentation or watch a tutorial, which my 10 years in the IT industry has taught me a big barrier even for really experienced SWEs. The new coding TUIs are a more gentle introduction to that.

      2 replies →

  • /* Claude Code is the strongest case of the return to the mainframe: a closed, bespoke, paid service that nothing locally run compares to. Terminals are just a natural part of the mainframe world! */

I'm the author of Trolley[0] (Electron for TUIs).

It was so easy to get the terminal functionality going with `libghostty`. Most time was spent building the functionality around it.

Thanks for making it.

[0]: https://github.com/weedonandscott/trolley

  • I'm not quite understanding your project. What is the use case? Is this so I can package up an existing terminal app as a dedicated desktop app?

    If so that actually sounds really cool. I'd like a dedicated lazygit app in my tray at all times.

Coincidentally I was just listening to your interview with The Pragmatic Engineer [1] this morning. Loved hearing the stories of early days at HashiCorp, taking it public, and the near-miss with VMware.

It also got me wondering how things would be different if you haven't crossed paths with the guy who unplugged your mouse :) It's fascinating how life is full of these small yet defining moments. We don't always appreciate them right away, but beautiful to look back.

Thanks for Ghostty! It has been my daily terminal driver for the past year.

[1] https://www.youtube.com/watch?v=WjckELpzLOU

  • I was also just recommended this interview on youtube. honestly it makes sense if the algo decided it was the right time to recommend this video and resultantly this post is making it's way to front page of HN

You're one of the forefront experts in terminal protocol parsing. Do you have opinions on "interceptor" applications like tmux or mosh, for example? These applications technically need to do extra upfront work (especially mosh as it transforms the entire protocol) and it's not a transparent "I treat vt100 as a black box, I put bytes in, I get well structured, standardized events out". Does libghostty-vt support that currently, does it intend to support these kinds of protocols in the feature, or is this kind of thing outside the scope of the project?

Thanks for all the work you do! I had used terminal just a few dozen times before November — and now i am in terminal more than any app (even more than the web browser).

It’s common for me to have 15-25 different terminal windows open for using Claude code. I shifted to Ghostty because I was looking for more features.

Unfortunately, none of the features I wanted are available anywhere (though I’ve come to appreciate Ghostty anyway). Here’s what I had wanted:

1. Basic text editing features (ie click to place cursor in the text input field; highlight to delete)

2. Change colors or fonts mid session (to make it easier to find particular windows)

3. Window management and search (eg, a way to find my windows when I lose them and to otherwise control them)

Apparently, it is really hard to develop features like these for terminal emulators. I’d love to understand why…

  • The next release includes a way to use a command palette to search for and jump between surfaces (windows, panes), which sounds like it partially addresses your third point. I had a small hand in it, by building the initial UI for the Linux version.

  • IMO this isn’t the job of the emulator. You can do this all in `tmux` for example.

    As for editing text, ghostty+tmux most definitely supports editing text with the mouse (even an in terminal right click menu!) although sounds like your intended use of select to delete isn’t common so you’ll need to do some customizations.

    • What makes you say that isn't the job the emulator? Sure it is. In fact, tmux itself is a terminal emulator that you just so happen to run inside of another terminal emulator that you want to multiplex.

    • I’ve been using scroll back search for 15+ years with Terminal.app and iTerm2, and there’s no way that’s not the job of the terminal. You don’t know how good that is until you use it.

      3 replies →

Now that Ghostty is part of a real org, is there any way people can sponsor specific features/bugfixes? I've been waiting for drag/drop to be working on KDE before I make the switch, and I'd be happy to pay for a fix.

Having incorporated libghostty into my current web-based project, I can't say enough thanks. I've lived in the terminal since 2003, resisting IDEs, VSCode, everything because I'm a die hard Vim + tmux guy. Vibe coding coming back to the terminal, and being able to use libghostty to facilitate that is a serious vindication of my steadfast resistance to move away from the terminal.

I'm sure you feel the same watching Ghostty become what it has. Big thank you.

mitchellh: What is the current thinking WRT adding client/server functionality (like built-in tmux+mosh)? I recall you talking about it on the Changelog podcast, and that would be a killer feature for me; I really make a lot of use of the wezterm equivalent, it's so nice having first-class UI windows rather than tmux's faking of it.

  • Zellij has been holding me over with tabs and panes (in quick terminal) while I wait for them to come to ghostty directly.

    Tabs (and panes? I haven't tried yet) should work fine for regular terminal windows though.

    • Did a double take on this one since my Ghostty has had panes for a while now (I run tip/nightly). Didn't realize it's not part of the current release.

      Also, Zellij is nice.

      1 reply →

    • Just to clarify, it's more about the ability to run a terminal on my Linux box and connect and disconnect to it from my Mac that I'm looking for. Wezterm does a good job of this. Previously I was using tmux and mosh and Nebula, and that worked really great for reconnecting (I almost never had to reconnect, it just stayed live, wezterm I need to reconnect all the time, but that works reliably). But copy-paste with tmux is meh.

What's the current state of the art with using libghostty in a browser? There are a few community projects around that compile it down to wasm.

Essentially, I have a few features that have a TUI-first UI, and the obvious next step is to expose some of that to a browser.

Random advice question. My brother taught himself to program and has been making a terminal-based game. What started out small has turned into a highly polished game with ascii art, sound, you name it.

I’ve been trying to figure out how I could actually help him distribute it and I keep coming back to the best option being to wrap his programs terminal output into a host process that can emulate and render it. It seems that the lib Ghostty might be perfect for the former, but not quite yet on the latter?

I started using it a few days ago and then I need to find something in the terminal. But....there is no find! Why? Can you guys add it? This is such a basic and critical feature that I may have to just go back to...just about anything else.

  • find is provided by the OS, not a terminal emulator like Ghostty. Most likely something is wrong with your paths.

    • I think they mean like CTRL+F kind of find.

      This is addressed in paragraph 5 of the post they replied to.

Hey Mitchell, thanks for ghostty (happy user here for a month or two). Is there anywhere I can look to see the status of the next planned release?

I've been waiting for the vim feature to hit stable, and have just been checking to see if there's a new release every so often, but I couldn't find a discussion or anything to see when it was planned.

I literally discovered Ghostty yesterday when googling "best terminal macos" and surfaced a ~year-old reddit thread recommending it [0]. Just needed something other than Terminal so I could Cmd-Tab between distinct command-line work (e.g. claude code and ipython tabs). Was nice to find something that just worked

[0] https://www.reddit.com/r/macapps/comments/1loiw2z/comment/n0...

I use Ghostty as my main TUI at work and absolutely love it. Most of my day lives in terminals, and Ghostty just feels fast, clean, and out of the way in the best possible sense.

I was a long-time Kitty user, but switching to Ghostty has been a big upgrade for my workflow. Hard to go back now. Thank you

Excited to see the further development of libghostty! It is an exciting project in this new world of being able to develop your own agentic development environments rather effortlessly. These things are possible because of projects like yours. Thank you!

I just wanted to say "thank you". I switched to Ghostty over a year ago and it's been working out great. It's now my default terminal. My favorite features are responsiveness and ease of splitting panes.

Hi Mitchell, thanks for creating Ghostty. Been part of my workflow ever since I found it. Just a small question, when do you see Ghostty can fully replicate iTerm2 popular features like output copy/selection?

Congrats on creating and helming such a cool project!

Out of curiosity, does ghostty do the Quake terminal thing - I use yakuake for this, but it feels a bit long in the tooth.

Thanks for your awesome work. Never thought I’d switch to a terminal without cmd-f, but ghostty made it worth it. Can’t wait for v1.3!

[flagged]

  • while I agree, the comment you just replied to says:

    > Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more

    • It works well enough that I didn't realize I've been on the nightly channel since it appeared, too!