Install omm on Linux
One command in any terminal. On Debian and Ubuntu the installer can fetch its own dependencies; on other distributions you install python3 and git first, and everything after that is identical.
01 / 08 · Linux
Open a terminal
Any terminal emulator works — GNOME Terminal, Konsole, xterm, Alacritty. The command runs under sh, so your login shell being bash, zsh or fish makes no difference.
Most desktops open a terminal with Ctrl, Alt and T together.
Otherwise find Terminal, Konsole or Console in your application menu.
You do not need to be root. The installer asks for sudo only if it has to install packages through apt.
The prompt tells you which shell you are in. All of these are fine.
you@host:~$bash — the common defaultyou@host ~ %zshroot@host:~#a root shell — also works
- omm is tested in CI on Linux with Python 3.10+.
02 / 08 · Linux
Before you start
The installer's automatic dependency bootstrap is apt-only. On Debian and Ubuntu it can install everything it needs; anywhere else it checks and reports rather than installing.
- Python 3.10+Required. On a system with apt the installer runs apt-get install python3 python3-venv python3-pip when python3 is missing. Elsewhere, install it yourself first.
- gitRequired, because omm is installed from a verified Git checkout. With apt present the installer adds git and ca-certificates for you.
- python3-venvNeeded by pipx, and packaged separately on Debian and Ubuntu. Without it pipx fails with a confusing ensurepip is not available, so the installer bootstraps it explicitly.
- Fedora, Arch, openSUSE, AlpineNo apt, so no bootstrap. Install Python 3.10+ and git with your own package manager first — for example sudo dnf install python3 git or sudo pacman -S python git.
- root or sudoThe apt step runs directly as root, or through sudo when it is available. Without either it is skipped, and the installer then reports the missing dependency instead.
03 / 08 · Linux
Install
Paste this into your terminal and press Enter.
$ curl -fsSL https://raw.githubusercontent.com/omm-hippo/omm/main/install.sh | sh- curl downloads the script and sh runs it. It installs omm as an isolated CLI through pipx.
- Open a new shell afterward so your PATH picks up omm.
- The -f and -s flags make curl silent on failure. If nothing at all happens, see the troubleshooting section below.
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.
$ python -m pip install omm-modelFor an isolated command-line installation, pipx is recommended
$ 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 · Linux
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 · Linux
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 shell
pipx added its bin directory to your PATH, but a shell that was already running keeps the PATH it started with. A new terminal window or tab is enough.
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 Linux 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.
$ ommcheck what omm sees
omm scan prints the hardware, runner and model summary it will base every fit decision on.
$ omm scan
omm scan reports
- OS
- CPU
- RAM (total)
- RAM (available)
- Safe model budget now
- Reserved for apps/OS
- GPU
- VRAM
- Local AI runners — one row per runner, with its status
06 / 08 · Linux
Runners on Linux
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 — Flatpak
- KoboldCppAutomated on x86_64
- text-generation-webuiAutomated on x86_64
- 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.
- Jan needs flatpak on PATH. Without it the wizard reports flatpak not found - install manually from https://jan.ai/download.
- AnythingLLM's only official Linux install is an interactive installer that prompts for an AppArmor profile and has no documented silent flag, and Msty has no Linux package at all — which is why neither is automated here.
- KoboldCpp and text-generation-webui publish x86_64 Linux builds only, so on ARM the wizard prints the download page instead.
07 / 08 · Linux
Storage, completion, uninstall
Where models are stored
The model hub and omm's own state default to ~/.omm. Set OMM_HOME before installing, and on later runs, to put them on another volume — useful when your home filesystem does not have room for GGUF files.
$ export OMM_HOME=/mnt/models/omm- Put that line in your shell profile so later runs see it too.
- 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. zsh and fish are supported the same way.
$ omm --install-completion bashUninstall
This removes the omm command and the installer-managed source checkouts. Downloaded models and settings under OMM_HOME are preserved.
$ curl -fsSL https://raw.githubusercontent.com/omm-hippo/omm/main/uninstall.sh | sh- 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 · Linux
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.
Nothing at all. The command returns immediately and no omm appears.- why
- curl -fsSL is deliberately quiet: -s hides its progress and errors, -f makes it exit silently on an HTTP error. A blocked network or a proxy therefore looks like nothing happening.
- what to do
- Download the script on its own first so you can read the error, then run it: curl -fL https://raw.githubusercontent.com/omm-hippo/omm/main/install.sh -o install.sh && sh install.sh
- source
- README, Install section — the curl flags in the command itself
Python 3.10+ not found: https://www.python.org/downloads/- why
- No python3 or python of version 3.10 or newer was found. The installer's automatic bootstrap only runs where apt-get exists, and even there it gives up quietly if apt fails.
- what to do
- Install Python 3.10 or newer with your distribution's package manager — sudo apt install python3 python3-venv python3-pip, sudo dnf install python3, sudo pacman -S python — then run the install command again.
- source
- install.sh:122-135
git not found. Install git first (needed to fetch omm from GitHub).- why
- omm is installed from a verified Git checkout, and git was neither present nor installable through apt here.
- what to do
- Install git with your own package manager, then run the install command again.
- source
- install.sh:141-150
python3-venv not found (needed by pipx), installing it via apt...- why
- Informational. On Debian and Ubuntu, ensurepip lives in a separate package; without it pipx fails with ensurepip is not available.
- what to do
- Nothing, if the install continues. On a non-apt distribution install the equivalent package yourself — python3-virtualenv or your distribution's python3 venv package.
- source
- install.sh:152-155
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.sh:81
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.sh:396
Could not inspect existing pipx environments; refusing an unsafe migration.- why
- pipx list --json did not return usable output, so the installer cannot tell what it would be replacing. It stops instead of guessing.
- what to do
- Check that pipx runs on its own (python3 -m pipx list), repair it if not, then run the install command again.
- source
- install.sh:343
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.sh:351
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.sh:361
bash: omm: command not found- why
- The install finished, but this shell still has the PATH it started with.
- what to do
- Open a new shell. The installer prints the same advice on its last line.
- source
- install.sh:508
Refusing non-absolute OMM_HOME: models/omm- why
- OMM_HOME has to be an absolute path. A sibling message, Refusing unsafe OMM_HOME, means it points at / or at your home directory itself.
- what to do
- Use a full path to a subdirectory, for example export OMM_HOME=/mnt/models/omm.
- source
- install.sh:11 and install.sh:14
flatpak not found - install manually from https://jan.ai/download- why
- This is the setup wizard, not the installer: Jan's only automated Linux path is Flatpak. omm never guesses a direct download URL.
- what to do
- Install flatpak and add the Flathub remote, then re-run omm setup — or install Jan yourself from the printed link. omm links models into it either way.
- source
- src/omm/linker.py:2116-2121
Refusing unrecognized custom OMM_HOME (missing .omm-managed): /mnt/models/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.sh:42
Still stuck? Open an issue with the exact message you saw and the output of omm scan.
Elsewhere
- Install on WindowsPowerShell, the TLS pre-line, winget bootstrapping, and the hard-link-then-symlink-then-copy strategy.
- Install on macOSTerminal, why the bundled Python is usually too old, and the Homebrew-backed runner coverage.
- Source and READMEgithub.com/omm-hippo/omm — issues, releases, and the installer scripts quoted on this page.
- WikiCompatible programs and the longer-form documentation.