Get AI summaries of any video or article — Sign up free
Creator of Ghostty talks Zig over Go thumbnail

Creator of Ghostty talks Zig over Go

The PrimeTime·
6 min read

Based on The PrimeTime's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

libghostty is intended to be the reusable emulator core so terminal developers can stop rebuilding the same low-level functionality and instead focus on higher-level app features.

Briefing

Mitchell Hashimoto frames Ghostty’s long-term bet as a split between a cross-platform terminal emulator library (libghostty) and a “platform-native” terminal app experience—then argues that the emulator core should stop being reinvented by every terminal project. The priority isn’t chasing iTerm2-style feature sprawl inside the app; it’s building a reusable emulator foundation so other developers can focus on higher-level terminal behaviors and UI, avoiding years of duplicated work across terminals like iTerm2, Kitty, and others.

Hashimoto’s roadmap centers on stabilizing the Ghostty app feature set so users can choose based on what they value: speed, feature richness, and platform-native integration. He’s confident iTerm2 will remain ahead on raw feature count, but positions Ghostty as the better fit when the terminal’s “feel” matches the operating system—updates, UI conventions, and security behaviors included. A key example is macOS “secure entry” mode, which blocks other apps from stealing keystrokes while sensitive input (like passwords) is entered. He contrasts this with Linux’s fragmented ownership across kernel, desktop environment, and windowing layers, arguing that such cross-layer features are harder to implement in open ecosystems.

The conversation also turns into a product philosophy lesson: loud feature requests are a signal, but not a blueprint. Hashimoto describes how corporate product managers often treat “N customers asked for X” as a scientific mandate, even when the real need is different or when the feature could harm the product’s long-term shape. For Ghostty, feature requests flow through discussions rather than direct issues, partly to uncover what people actually want and to evaluate whether the request fits the project’s vision.

On the engineering side, Hashimoto says Ghostty began as a learning project—Zig, GPU programming, and desktop software—before becoming something worth shipping. He credits Zig with making Ghostty easy to compile from source and with giving him the kind of control and enjoyment that keeps the project moving. His dislike of Rust is personal and practical: he finds Rust’s traits and navigation model frustrating day-to-day, while Zig’s compile-time approach reduces the need for runtime interfaces and dynamic dispatch. He also argues that interfaces aren’t always “missing”; they can be replaced with compile-time polymorphism, and he claims Ghostty avoids vtable-based dynamic dispatch entirely.

Sustainability and motivation remain open questions. Hashimoto says he can personally fund the work, but wants a path for others to take over eventually—likely through a foundation-style structure and corporate sponsorship tied to libghostty’s ecosystem potential. He calls the project “technical philanthropy,” treating the terminal as a widely used developer tool and aiming to make it free and useful.

Finally, he addresses open-source friction and AI tooling. He reads negative feedback for the truth inside the emotion, avoids blocking critics, and treats the internet’s anger as something to process rather than personalize. He uses Copilot and other AI tools, describing them as strong autocomplete for Zig-level patterns but not reliable for higher-level reasoning. He also raises licensing uncertainty around training and code reuse, noting Ghostty’s MIT license and the need for clearer legal precedent—while saying that if AI-generated code ever became a real issue, he would rewrite affected parts.

Cornell Notes

Mitchell Hashimoto positions Ghostty as two-layer software: a reusable terminal emulator library (libghostty) and a separate, platform-native terminal app experience. He argues that terminals shouldn’t keep rebuilding the same emulator core from scratch; instead, libghostty should let others build richer terminal applications on top. Product decisions are filtered through long-term vision rather than raw volume of feature requests, using discussions to uncover what users truly need. Hashimoto built Ghostty as a learning project in Zig, valuing compile-time control and developer enjoyment over Rust’s traits/navigation model. Sustainability is still uncertain, but he’s exploring foundation-style support and corporate sponsorship tied to libghostty’s ecosystem potential.

Why does Hashimoto treat libghostty and the Ghostty app as separate priorities?

He says they overlap sometimes—app improvements can flow through the library—but most work is non-overlapping. The app’s job is to deliver a stable, platform-native experience (macOS, Linux, and eventually Windows), while libghostty is meant to become the emulator core that other terminal apps can reuse. His long-term goal is an ecosystem where developers can focus on higher-level features and UI instead of repeatedly rebuilding emulator functionality.

What does “platform-native” mean for a terminal emulator, and why does it matter?

Hashimoto uses “native” to mean idiomatic OS integration rather than just using a native programming language. For macOS, Ghostty uses SwiftUI/AppKit and integrates with update frameworks like Sparkle so updates feel like standard Mac app updates. He also highlights macOS secure entry mode: when enabled, other apps can’t steal keystrokes, which helps protect passwords from both malicious and compromised accessibility-style input capture. He contrasts this with Linux, where kernel/desktop/window-manager separation makes similar features harder.

How does Ghostty handle feature requests without being driven purely by “the loudest” users?

He calls the volume of requests a strong signal but not sufficient on its own. The real challenge is that people often can’t precisely define their desired solution. For Ghostty, feature requests go through GitHub discussions (not issues) so the team can talk through the underlying need, evaluate trade-offs, and decide whether a request fits the project’s long-term product shape.

Why Zig, and how does Hashimoto’s view of interfaces differ from his earlier Go experience?

He says Zig is the language he enjoys writing and debugging daily, and he sees tangible benefits like easy compilation from source. On interfaces, he initially expected Zig to lack them, spent time studying dynamic dispatch/vtables, then realized interfaces aren’t always necessary. Zig’s compile-time capabilities enable static dispatch patterns that match what he actually wants—switching behavior at compile time rather than runtime. He claims Ghostty avoids vtable-based dynamic dispatch entirely because it isn’t needed.

What’s Hashimoto’s approach to open-source negativity and detractors?

He treats negative feedback as mostly emotion with some truth. Instead of blocking people, he tries to extract the useful part and understand where the criticism comes from. He also describes a coping technique: reading angry comments out loud in an exaggerated voice to expose how unhinged they can sound, which helps defuse the emotional impact.

How does AI (e.g., Copilot) fit into Ghostty development, and what concerns remain?

He uses Copilot and says it’s especially effective for Zig-level autocomplete and pattern completion, but not for higher-level tasks like writing complex logic from a prompt. He’s optimistic about AI utility overall. Legally, he’s uncertain about licensing and training—especially how GPL/MIT code and LLM training interact—so he wants clearer precedent. He says if AI-generated code ever became problematic, he would rewrite the affected parts, citing a prior relicensing workflow where he used blame/approval checks to identify non-author contributions.

Review Questions

  1. What trade-offs does Hashimoto say senior management roles impose on family life, and how does he compare that with time as an individual contributor?
  2. How does Ghostty’s use of GitHub discussions change the way feature requests are interpreted compared with a simple “N users want X” rule?
  3. What compile-time vs runtime distinction does Hashimoto make when discussing interfaces in Zig, and how does that relate to Ghostty’s architecture?

Key Points

  1. 1

    libghostty is intended to be the reusable emulator core so terminal developers can stop rebuilding the same low-level functionality and instead focus on higher-level app features.

  2. 2

    Ghostty’s app roadmap aims for a stable, platform-native experience rather than matching iTerm2’s maximum feature count, with selection guided by speed, feature richness, and OS integration.

  3. 3

    Feature requests are filtered through long-term product vision; Ghostty uses discussions to uncover what users actually need instead of treating raw request volume as a mandate.

  4. 4

    Hashimoto built Ghostty as a learning project in Zig and credits Zig’s compile-time control and developer ergonomics for keeping the project enjoyable and maintainable.

  5. 5

    macOS secure entry mode is highlighted as a concrete “native” security integration that’s difficult to replicate on Linux due to cross-layer separation.

  6. 6

    Open-source sustainability is an active unknown; Hashimoto is exploring foundation-style support and corporate sponsorship pathways tied to libghostty’s ecosystem potential.

  7. 7

    AI tools like Copilot are treated as strong autocomplete for Zig patterns, while licensing uncertainty around LLM training remains a concern that could require rewrites if issues arise.

Highlights

Hashimoto argues terminals keep wasting time by reimplementing the same emulator core; libghostty is meant to end that cycle by enabling an ecosystem of terminal apps that share the emulator foundation.
“Native” for Ghostty isn’t just language choice—it includes OS-level behaviors like macOS secure entry mode, which blocks other apps from stealing keystrokes during password input.
Ghostty’s feature intake uses discussions to translate “we want X” into the real underlying job-to-be-done, preventing product decisions from being driven by loud but imprecise requests.
Hashimoto’s Zig choice is personal and practical: he enjoys writing Zig more than Rust, and Zig’s compile-time polymorphism reduces the need for runtime interfaces and vtables.
He’s optimistic about Copilot’s usefulness in Zig development but wants clearer legal precedent on how LLMs interact with open-source licenses and code reuse.

Topics

  • Ghostty Roadmap
  • libghostty Ecosystem
  • Platform-Native Terminals
  • Zig vs Rust
  • Secure Entry Mode
  • Open-Source Sustainability
  • AI Coding Tools

Mentioned