nah nah

NAH(1) · WINDOWS

Windows installation

nah ships an unsigned x86-64 Windows binary. ARM64 Windows and package-manager installations through Winget, Chocolatey, or Scoop are not supported yet. Windows may show a SmartScreen warning because the binary is unsigned.

Install

Run in PowerShell:

irm https://nahguard.ai/install.ps1 | iex

The installer downloads the release ZIP and checksum, verifies the archive, and installs nah.exe under %USERPROFILE%\AppData\Local\Programs\nah. It adds that directory to the user PATH without expanding or reordering existing entries.

Set $env:NAH_VERSION to a release tag before running the installer to select that version. Without it, the installer uses the latest release.

Running the command again upgrades nah. The previous executable is retained as nah.exe.old until a subsequent successful install of the same binary removes it. If Windows has the executable locked, the installed version is left unchanged.

Restart open terminals and coding agents if they do not see the updated PATH. Then install the runtime integration you use; nah docs runtimes shows the qualified Windows support matrix.

Uninstall

This removes both installed executables and only the user PATH entry written by the installer.

$installDirectory = Join-Path $env:USERPROFILE 'AppData\Local\Programs\nah'
Remove-Item -LiteralPath (Join-Path $installDirectory 'nah.exe'), `
    (Join-Path $installDirectory 'nah.exe.old') -Force -ErrorAction SilentlyContinue
$pathEntry = '%USERPROFILE%\AppData\Local\Programs\nah'
$environmentKey = [Microsoft.Win32.Registry]::CurrentUser.CreateSubKey('Environment', $true)
try {
    $rawPath = [string]$environmentKey.GetValue(
        'Path', '', [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
    $rawPath = (($rawPath -split ';') -ne $pathEntry) -join ';'
    $environmentKey.SetValue(
        'Path', $rawPath, [Microsoft.Win32.RegistryValueKind]::ExpandString)
} finally {
    $environmentKey.Dispose()
}

Restart open terminals and coding agents after removal. nah does not provide an uninstall command for the executable.