Skip to content
Noctty

About Noctty

Noctty is a Windows terminal built on Ghostty's terminal core and maintained by one person. This page covers what the project is, what has been measured, how to verify a release before you run it, and how to move over from another terminal.

Latest stable release: v1.3.124. Releases ship when they are ready; the release history has the dates. Version 1.3.124, latest release, for Windows 10 and 11 on x64 and ARM64, MIT licensed.

What Noctty is

Ghostty provides the terminal emulation, fonts, renderer, input handling, configuration, shell integration, and VT library. Noctty adds the Windows parts: the Win32 runtime, tabs and splits, session restore, shell profiles, a native settings window, packaging, and updates. It is a separate project and is not affiliated with Ghostty.

Other Windows ports of Ghostty exist. Noctty is one maintained application with a public release process: the history is never rewritten, the build and release workflows are on GitHub, and the verifier below ties every release to a single signing key.

Known gaps are listed in Status and the capability matrix.

Architectures
x64 and ARM64
Distribution
Installer, portable ZIP, Scoop. WinGet pending.
Release process
Public workflows, packaging scripts, checksums, provenance
Network
The update check is the only outbound traffic; there is no telemetry or analytics. auto-update = off disables automatic release checks and downloads; manual update checks remain available.
Accessibility
UI Automation for terminal text and most chrome; screen readers not yet measured on a release build.
Performance
One same-machine baseline published, including two results that miss their budget.

What has been measured

Performance

Throughput, frame time, cold start, memory per pane, idle cost, and ConPTY round trip were measured on one machine using ReleaseFast builds. The methodology document records each figure with its date, run count, and the state the machine was in.

Two results miss a budget stated in PRODUCT.md: memory per additional pane, and the cold-start tail, where the median fits and the p95 does not. Both came from an older binary and have not been re-measured on the current code, so this page does not repeat them. Key-to-pixel latency is not measured at all; the suite has a software proxy that cannot stand in for it.

No comparison against another terminal is published, here or anywhere else in the project.

Benchmark methodology and figures

Accessibility

Noctty exposes UI Automation for terminal text and selection, the tab strip, docked search, the command palette, and the settings window. An automated harness walks that tree on a real desktop and checks control types, names, patterns, and events. It does not check what a screen reader says.

No screen reader has been run against a release build. An NVDA pass against a pre-release Debug build found mixed results: terminal text and live regions were read, while tabs, search controls, and palette state had failures. Narrator and JAWS remain unmeasured. Window chrome also cannot be reached from the terminal with the keyboard alone.

Screen-reader matrix

How to verify a release

Download the installer or portable ZIP and the checksum file from the same GitHub release, then run these checks before you install.

  1. Compare the checksum

    Hash the file you downloaded, installer or portable ZIP, and compare it with the line for that file in SHA256SUMS-windows-<arch>.txt. If it differs, stop. A matching checksum shows the file is the one on the release page. It does not show who published it.

    Get-FileHash .\noctty-<version>-windows-<arch>-setup.exe -Algorithm SHA256
    Get-FileHash .\noctty-<version>-windows-<arch>-portable.zip -Algorithm SHA256
  2. Run the verifier

    The repository verifier accepts v1.3.124 and later, the first release that uses the current Noctty asset contract. It downloads every asset, checks the GitHub digests and checksum entries, and verifies GitHub build-provenance attestations for every published asset except the static icon. It then checks each embedded signature against the key pinned in the updater. The environment variable lets it accept the self-signed certificate; without it, the script fails closed.

    v1.3.123 uses the legacy winghostty-* asset layout. Its manual signature check is in the verification guide.

    $version = "<1.3.124-or-later>"
    git clone --branch "v$version" --depth 1 https://github.com/amanthanvi/noctty.git
    Set-Location .\noctty
    $env:WINDOWS_CODESIGN_TRUST_SELF_SIGNED = "true"
    pwsh .\scripts\verify-published-release.ps1 -Version $version

Signing

There is no code-signing certificate from a public certificate authority. Releases are signed with a self-signed certificate, which gives a valid cryptographic signature but no Windows publisher identity and no SmartScreen reputation. SmartScreen will warn, and the warning does not go away with time. PowerShell may report the signature as UnknownError because Windows does not trust its root.

Certificate subject
CN=winghostty Local Dev Signing
SPKI SHA-256
671ec822c41f39b1d79c31d27169b37486333c008c7a038261b4fae53818ce2a

The subject name predates the rename and means nothing on its own. The pinned public key is what the updater and the verifier check; both refuse an installer signed with any other key. The rules for rotating it are in ADR 0005. A publicly trusted certificate would need either an accepted open-source signing application or a purchase. Neither has happened yet.

Who may sign a release, where the key is held, what is signed, and what would happen if the key were compromised are in the code signing policy.

Moving from another terminal

Noctty does not touch another terminal's settings, so keep the old app installed, set up the same shells and shortcuts in Noctty, and use it for a normal working day before you switch. If something does not behave the way this page says, report it.

From Windows Terminal

Carry over the default profile, font, theme, starting directory, and the keybindings you changed. There is no settings.json importer, and none is planned.

Windows Terminal guide

From Git Bash and mintty

Git, Bash, dotfiles, history, and SSH state stay where they are. Only the window changes. Carry over the useful parts of .minttyrc and try your usual tools, since ConPTY behaves differently from mintty's PTY.

Git Bash and mintty guide