Install omm on Windows
The whole install is one line, but it has to run in the right program. This page names that program, gives you the command, and lists the messages the installer can print with what each one means.
01 / 08 · Windows
Open PowerShell
omm's Windows installer is a PowerShell script. It cannot run in Command Prompt, and it cannot run in Git Bash or a WSL shell — those are Unix shells and do not understand PowerShell commands.
Press the Windows key, type PowerShell, and open Windows PowerShell. Either Windows PowerShell 5.1 (built into Windows) or PowerShell 7 works.
Windows Terminal is fine as a window, but check the tab: open the arrow next to the plus sign and pick Windows PowerShell or PowerShell, not Command Prompt.
You do not need to run as Administrator to install omm.
If you are not sure what you have open, look at the prompt at the start of the line.
PS C:\Users\you>PowerShell — this is the one you wantC:\Users\you>not this one — Command Prompt — the install command will not work hereyou@PC MINGW64 ~$not this one — Git Bash — the install command will not work here
- Windows 10 22H2 or Windows 11 is the supported baseline, because that is what Ollama requires on Windows.
02 / 08 · Windows
Before you start
The installer fetches what it needs, but two of those bootstraps depend on winget being present.
- Python 3.10+Required. If no suitable Python is on PATH, the installer asks winget to install Python 3.12 and then looks again.
- gitRequired, because omm is installed from a verified Git checkout. If it is missing, the installer asks winget for MinGit.
- wingetBuilt into Windows 10 2004 and later and into Windows 11. On anything older it is absent, so install Python 3.10+ and git yourself first — the installer will not be able to.
- Windows baselineomm is tested on Windows, macOS and Linux with Python 3.10+. Windows 10 22H2 / 11 is the supported Windows baseline.
- NVIDIA extraThe optional NVIDIA detector is installed only when nvidia-smi shows an NVIDIA driver is present. Nothing to do either way.
03 / 08 · Windows
Install
Paste the whole line, including the part before the semicolon, into PowerShell and press Enter.
PS > [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; irm https://raw.githubusercontent.com/omm-hippo/omm/main/install.ps1 | iex- The first half is not optional. It must run before irm: script-internal TLS settings are too late for its first download — by the time PowerShell reads a line of the script, the script has already been downloaded.
- irm downloads the script and iex runs it. Both are PowerShell commands, which is why the tab has to be PowerShell.
- Open a new PowerShell window afterward so your PATH picks up omm.
Or install the package
There is also a plain package install from PyPI. It skips the signed-commit check that the script above performs, and it is the right choice if you already manage your Python tooling.
PS > python -m pip install omm-modelFor an isolated command-line installation, pipx is recommended
PS > pipx install omm-model- The distribution name is omm-model; the installed command and Python import remain omm.
- Upgrade and remove it with the same tool that installed it: python -m pip install --upgrade omm-model, or pipx upgrade omm-model. Both preserve downloaded models and settings under OMM_HOME.
- This does not go through the signed-commit verification described above; it relies on PyPI's own account security and TLS, the same trust model as installing any other PyPI package.
- omm update only updates a canonical omm Git-source installation. On a pip or pipx install it changes nothing and prints the matching package manager command instead. The Git-only beta channel is likewise unavailable to package-managed installations.
04 / 08 · Windows
What the installer does
The one-line installer is not a plain download-and-run. It does three things in order, and it stops at the second one if the code it fetched is not the code omm signed.
- staging clone — The release is cloned into a versioned staging directory, never over the copy you are currently running.
- signed commit verified — The staged commit is checked against a bootstrap trust anchor before any of it is executed.
- pipx switch — Only after that does pipx switch to the staged tree, so omm stays an isolated CLI.
Do not replace this with an unverified git clone plus pipx install if commit authenticity matters to you.
05 / 08 · Windows
After install
The installer's last line is Done. If 'omm' isn't found, open a new shell (pipx just updated your PATH). Take that literally.
open a new PowerShell window
pipx added its bin directory to your PATH, but a window that was already open keeps the PATH it started with. Close it and open a fresh one.
run omm once
A bare omm on a fresh install starts the setup wizard: a hardware summary, then a checklist of local AI runners. Checking one that omm can install on Windows runs its official installer with live progress; checking one it cannot automate here prints a link instead. You can re-run it any time with omm setup.
PS > ommcheck what omm sees
omm scan prints the hardware, runner and model summary it will base every fit decision on.
PS > omm scan
omm hardware scan
┌───────────────────────┬───────────────────────────────────┐
│ Field │ Value │
├───────────────────────┼───────────────────────────────────┤
│ OS │ Windows 11 │
│ CPU │ Intel(R) Core(TM) Ultra 7 155H │
│ RAM (total) │ 15.5 GB │
│ RAM (available) │ 0.7 GB │
│ Safe model budget now │ 0.0 GB │
│ Reserved for apps/OS │ 1.6 GB+ │
│ GPU │ Intel(R) Arc(TM) Graphics │
│ VRAM │ Shared or unavailable from the OS │
└───────────────────────┴───────────────────────────────────┘
Local AI runners
Program Status
Ollama installed
+ 6 program(s) not installed06 / 08 · Windows
Runners on Windows
omm links one central copy of each model into every runner it finds. The setup wizard can install some of those runners for you — which ones depends on the operating system, because it only uses each vendor's own supported package.
- OllamaAutomated
- LM StudioAutomated — headless lms CLI
- JanAutomated — winget
- KoboldCppAutomated on 64-bit x86 (AMD64)
- text-generation-webuiAutomated on 64-bit x86
- AnythingLLMManual — install it yourself, omm still links to it
- MstyManual — install it yourself, omm still links to it
- Manual here means only that the wizard will not run the vendor's installer for you; it prints the download link, and once the app exists omm detects and links it like any other runner.
- AnythingLLM has no winget package any more — the community manifest was withdrawn in 2025 — and no winget package targets the current Msty Studio app rather than its retired predecessor. That is why neither is automated on Windows.
- Every runner already installed is listed in the wizard too, marked as installed rather than hidden, so the checklist always reflects what omm actually detects.
- On Windows, Ollama is detected through its HTTP API first, so a freshly installed tray app is found even before this terminal receives the new PATH.
How omm exposes a model here
omm keeps one file in the hub and exposes it to each runner. On Windows it tries an unprivileged same-volume hard link first.
If that is not possible it tries a symbolic link, which needs Developer Mode turned on or an Administrator shell.
If neither works it falls back to an owned copy. Before copying, omm checks the destination's free space and reports that the model now consumes additional bytes.
File junctions never apply here, because the link targets are files, not directories.
07 / 08 · Windows
Storage, completion, uninstall
Where models are stored
The model hub and omm's own state default to a .omm folder in your user profile. Set OMM_HOME before installing, and on later runs, to put them on another drive.
Persist it for future windows
PS > [Environment]::SetEnvironmentVariable("OMM_HOME", "D:\omm", "User")And set it in the window you have open now
PS > $env:OMM_HOME = "D:\omm"- Ollama's own model location follows OLLAMA_MODELS. LM Studio follows its home pointer; set OMM_LMSTUDIO_MODELS_DIR when LM Studio uses a custom directory omm cannot discover.
Shell completion
Install tab-completion once, then restart the shell.
PS > omm --install-completion powershellUninstall
This removes the omm command and the installer-managed source checkouts. Downloaded models and settings under OMM_HOME are preserved.
PS > irm https://raw.githubusercontent.com/omm-hippo/omm/main/uninstall.ps1 | iex- To remove the model hub and settings as well, download the script and run it with -Purge. Purge removes only known omm-owned paths and leaves unrelated files in a custom OMM_HOME untouched.
- Installers mark custom homes so uninstallers can refuse ambiguous or unsafe locations, and shell profiles are never rewritten during uninstall.
- If you installed from PyPI instead, use python -m pip uninstall omm-model or pipx uninstall omm-model. Both preserve models and settings.
08 / 08 · Windows
If something goes wrong
Every message below is one the installer, the uninstaller or the shell actually prints. Find yours, read why it happened, then do the last line.
sh : The term 'sh' is not recognized as the name of a cmdlet, function, script file, or operable program.- why
- You pasted the macOS and Linux command (the one with curl … | sh) into PowerShell. PowerShell has no sh.
- what to do
- Use the Windows command in step 3 of this page instead. The two operating systems get genuinely different commands, not two spellings of the same one.
- source
- README, Install section — two separate installer commands
Windows detected. Run the native PowerShell installer instead:- why
- The Unix installer ran under Git Bash, MSYS or Cygwin. It detects that it is on Windows and refuses rather than installing something broken.
- what to do
- Open PowerShell as described in step 1 and run the Windows command. The message prints the right command too.
- source
- install.sh:27-32
'irm' is not recognized as an internal or external command, operable program or batch file.- why
- You are in Command Prompt. irm and iex are PowerShell commands.
- what to do
- Open PowerShell. In Windows Terminal, use the arrow next to the plus sign and start a PowerShell tab.
- source
- README, Install section — the command is PowerShell-only
Invoke-RestMethod : The request was aborted: Could not create SSL/TLS secure channel.- why
- Windows PowerShell 5.1 defaulted to a TLS version GitHub no longer accepts. The script cannot fix this from inside itself, because irm has to download it first.
- what to do
- Run the full line including the [Net.ServicePointManager] part before irm. If it still fails, a corporate proxy or an antivirus inspecting HTTPS is intercepting the connection — try another network.
- source
- install.ps1:1-5 (header comment); README Windows caveat
Python not found. Install Python 3.10+ first: https://www.python.org/downloads/- why
- No Python 3.10 or newer was found, and winget either is not installed or its install attempt failed.
- what to do
- Install Python from python.org, tick Add python.exe to PATH during setup, open a new PowerShell window, and run the install command again.
- source
- install.ps1:217
git not found. Install git first (needed to fetch omm from GitHub): https://git-scm.com/downloads- why
- Same situation for git: omm is installed from a verified Git checkout, so git has to exist.
- what to do
- Install git from the linked page, open a new PowerShell window, and run the install command again.
- source
- install.ps1:229 and install.ps1:234
git 2.34+ is required to verify SSH commit signatures (found git version 2.30.0).- why
- Your git is too old to check SSH commit signatures. The installer treats cannot verify exactly like a bad signature.
- what to do
- Update git, then run the install command again.
- source
- install.ps1:105
Signature verification failed - refusing to install untrusted code.- why
- The staged commit was not signed by a key in the installer's trust anchor — or git could not check the signature at all, as in the previous entry.
- what to do
- Update git and retry. If it still fails, do not work around it with a plain git clone: open an issue on the repository instead.
- source
- install.ps1:553
git clone failed.- why
- The staging clone could not reach github.com. Usually a proxy, a firewall, or no network.
- what to do
- Confirm you can open github.com in a browser from this machine, then run the install command again.
- source
- install.ps1:529
Refusing to replace unrelated pipx environment 'omm'. Remove or rename that environment manually first.- why
- An unrelated PyPI project also called omm already owns that pipx environment. The installer will not overwrite someone else's tool.
- what to do
- Run pipx uninstall omm if you do not need that other tool, or rename its environment, then run the install command again.
- source
- install.ps1:506
Refusing to replace an unverified omm-model pipx environment.- why
- An omm-model pipx environment exists but does not look like one omm created.
- what to do
- Run pipx uninstall omm-model, then run the install command again.
- source
- install.ps1:514
Refusing unsafe OMM_HOME: C:\Users\you- why
- OMM_HOME points at a drive root or at your user profile itself. Uninstalling from there could not be made safe.
- what to do
- Point OMM_HOME at a subdirectory, such as D:\omm. A related message, Refusing OMM_HOME that contains the current directory, means you are standing inside that folder — cd somewhere else first.
- source
- install.ps1:13 and install.ps1:18
omm : The term 'omm' is not recognized as the name of a cmdlet …- why
- The install finished, but this window still has the PATH it started with.
- what to do
- Open a new PowerShell window. The installer prints the same advice on its last line.
- source
- install.ps1:671
Refusing unrecognized custom OMM_HOME (missing .omm-managed): D:\omm- why
- You are uninstalling with a custom OMM_HOME that the installer never marked as its own, so the uninstaller cannot prove the folder is safe to touch.
- what to do
- Check that OMM_HOME points at the folder omm actually installed into, then run the uninstaller again.
- source
- uninstall.ps1:21
Still stuck? Open an issue with the exact message you saw and the output of omm scan.
Elsewhere
- Install on macOSTerminal, why the bundled Python is usually too old, and the Homebrew-backed runner coverage.
- Install on LinuxAny terminal, what the apt bootstrap does, and what to install yourself on Fedora, Arch or openSUSE.
- Source and READMEgithub.com/omm-hippo/omm — issues, releases, and the installer scripts quoted on this page.
- WikiCompatible programs and the longer-form documentation.