Installation
Install Harmony on Windows, macOS, or Linux with one line, or download a build and verify it yourself.
Harmony ships builds for Windows x64, macOS (Apple silicon and Intel), and Linux x64. Every build today is a free preview and is not code-signed, so your OS will warn you the first time you open it. That is expected, and handling it takes one click.
Install
macOS, Linux, or WSL:
curl -fsSL https://ideharmony.com/install.sh | sh
Windows — already in PowerShell (short / hero tier):
irm https://ideharmony.com/install.ps1 | iex
Windows — Command Prompt or you are not sure which shell (download tier):
powershell -Command "irm 'https://ideharmony.com/install.ps1' | iex"
If you paste the short irm line into Command Prompt, you get 'irm' is not recognized — that means you are in cmd.exe; use the any-terminal line above, or open PowerShell (prompt starts with PS).
The installer picks the right build for your platform, checks it, and puts nala on your PATH. It pins the version the manifest publishes and refuses to continue unless the byte size and SHA-256 both match — it will not invent a build for a platform we do not publish.
These one-liners come from the same install-command source as the site (COPY-5): hero short form on the home page, download/docs full form here.
Read the script first
Piping a script from the internet into a shell is a reasonable thing to be uncomfortable with. Both installers are plain text and short:
curl -fsSLo install-nala.sh https://ideharmony.com/install.sh
less install-nala.sh
sh install-nala.sh
irm https://ideharmony.com/install.ps1 -OutFile install-nala.ps1
notepad install-nala.ps1
powershell -ExecutionPolicy Bypass -File .\install-nala.ps1
That last line matters. Windows blocks saved .ps1 files by default, so running the file you just downloaded needs -ExecutionPolicy Bypass. (The one-line install above is unaffected — execution policy applies to script files, not to piped text.)
Download manually
If you would rather not run an installer at all, take the file directly. The download page lists the exact filenames, sizes, and SHA-256 for the current release.
| System | File |
|---|---|
| Windows x64 | NALA-<version>.Setup.exe |
| macOS Apple silicon | NALA-<version>-arm64.dmg |
| macOS Intel | NALA-<version>-x64.dmg |
| Linux x64 (AppImage) | NALA-<version>-x64.AppImage |
| Linux x64 (Debian/Ubuntu) | NALA-<version>-x64.deb |
On Linux, an AppImage needs to be made executable before it will run:
chmod +x NALA-*-x64.AppImage
./NALA-*-x64.AppImage
Check what you downloaded
We cannot prove where a build came from with a certificate yet, so verifying the hash yourself is the honest substitute. Compare the output against the SHA-256 shown on /download:
Get-FileHash .\NALA-*.Setup.exe -Algorithm SHA256
shasum -a 256 ./NALA*.dmg # macOS
sha256sum ./NALA*.AppImage # Linux
Unsigned builds
Preview builds are not code-signed. Your OS will say so, in language that sounds worse than it is.
| OS | What you will see | What to do |
|---|---|---|
| Windows | SmartScreen: "Windows protected your PC" | More info → Run anyway. Do not turn SmartScreen off globally. |
| macOS | Gatekeeper may call the app damaged | System Settings → Privacy & Security → Open Anyway. On older macOS, Control-click the app → Open. "Damaged" here means unsigned, not corrupt. |
| Linux | No signature prompt; AppImage needs execute permission | Verify the SHA-256, then chmod +x |
Verify
nala version
nala doctor
nala doctor checks the parts that usually go wrong and tells you which one did. Then:
nala desktop # the desktop app
nala # the terminal agent, in the current directory
If your shell says nala is not found, open a new terminal — PATH changes do not apply to windows that were already open.
Update
nala update # install the newest build on your channel
nala update --check # just look; change nothing
Windows installs update themselves in the background. macOS and Linux download a fresh verified build today.
| Channel | What it means |
|---|---|
preview | Where every build lives right now. Unsigned. |
stable | Reserved for signed releases. Nothing is published here yet. |
You are on preview, and that is deliberate — it is where the builds are. Switching to stable today would leave you on a channel with nothing in it. Change it in Settings → Update Channel when signed releases exist.
If the command failed
The most common install failure is running the right command in the wrong shell, and no shell tells you that. Match the error text:
| The error says | What happened | Fix |
|---|---|---|
The token '&&' is not a valid statement separator | You are in PowerShell, running a Command Prompt line | Use the PowerShell command |
'irm' is not recognized as an internal or external command | You are in Command Prompt, running a PowerShell line | Use the Windows command above — it works in both |
cannot be loaded because running scripts is disabled | Windows blocked a saved .ps1 | Run it with powershell -ExecutionPolicy Bypass -File .\install-nala.ps1 |
syntax error near unexpected token | The server returned an error page and your shell tried to run the HTML | Fetch without piping to see the real error: curl -fsSL <url> | head |
command not found: nala | It installed; your shell has not picked up the new PATH | Open a new terminal |
Your prompt tells you which Windows shell you are in: PowerShell shows PS C:\>, Command Prompt shows C:\> with no PS.
Still stuck? Report it — include the exact error text.
Requirements
| Minimum | Recommended | |
|---|---|---|
| OS | Windows 10 64-bit, recent macOS, or a modern Linux desktop | Windows 11 / current macOS / Ubuntu 22.04+ or Fedora 39+ |
| RAM | 4 GB | 8 GB |
| Disk | ~250–450 MB, plus room for voice models if you use them | 2 GB free |
| Internet | Needed to download, and for third-party agent CLIs | Broadband |
On some distros an AppImage also needs libfuse2, and desktop integration needs xdg-utils.
Package managers (Homebrew, WinGet) are not supported yet — both expect signed applications, so they are waiting on the same signing work.
Per-OS detail
Next
- Your first workspace
- Connect a provider
- Uninstall, if you need a clean removal