← All guides AI Release
RU Subscribe to @ai_release1

How to Install and Configure Oh-My-Pi (OMP): A Terminal AI Agent Setup Guide

Updated: 25.10.2026 · AI Release · @ai_release1
How to Install and Configure Oh-My-Pi (OMP): A Terminal AI Agent Setup Guide

TL;DR

- A terminal: macOS, Linux, or Windows (PowerShell 7 or WSL)

- Node.js + npm installed (required version = whatever the package's engines field says — check the documentation)

- An API key from an LLM provider that OMP supports (check the documentation for the supported provider list)

- About 200 MB of free disk space for a global npm package and its dependencies

- One empty scratch project folder that the agent is allowed to touch

Important about values in this guide. The source material does not pin a package name, a version, a config path, or a model ID for OMP. Everything that cannot be verified is written as a placeholder — <omp-package>, <your-api-key>, <your-provider>, <model-id> — and flagged "check the documentation". Replace each placeholder before running a command. Never guess a package name from memory: the registry check in Step 1 tells you the real one.

Requirements and setup

Illustration: Requirements and setup
Illustration: Requirements and setup

What to do: confirm your runtime, then read the package metadata straight from the npm registry so you know the exact package name, the required Node version, and the name of the binary you will type.

Why: CLI agents (command-line tools that run inside your terminal and act on your files) are distributed as npm packages. Installing the wrong Node version or typing a binary name that does not exist produces errors that look like tool bugs but are just environment mistakes.

How to check:

node --version
npm --version

Expected: two lines, e.g. v20.11.1 and 10.2.4. Any numbers are fine at this stage; what matters is that neither command prints command not found.

npm view <omp-package> version engines bin

Expected output shape (your values will differ — treat the actual numbers as authoritative):

version = 'x.y.z'
engines = { node: '>=x' }
bin = { omp: 'bin/omp.js' }

The bin line is what you type afterwards. If it says bin = { 'omp-cli': ... }, then the command is omp-cli, not omp. Check the documentation for the canonical command name.

Now export the key for the current shell:

export OMP_API_KEY="<your-api-key>"
printenv OMP_API_KEY | wc -c

Expected: a number greater than 1 (the character count of your key). Use wc -c instead of plain printenv when screen-sharing, because the raw command prints the secret to your terminal. To persist it across sessions:

echo 'export OMP_API_KEY="<your-api-key>"' >> ~/.bashrc && source ~/.bashrc

On Windows PowerShell, setx OMP_API_KEY "<your-api-key>" works but only affects new shells — close and reopen the window before testing.

Step 1. Install the CLI and confirm the binary

What to do: create the workspace folder, install the package globally, and confirm the binary resolves.

mkdir -p ~/projects/omp-demo && cd ~/projects/omp-demo
npm install -g <omp-package>

Why: a global install (-g) puts the launcher on your PATH, so you can start the agent from any project folder rather than only from one directory.

How to check:

omp --version

Expected: a single version string such as x.y.z, matching the version value from the registry query. If you instead see zsh: command not found: omp, jump to Troubleshooting case 1 — this is a PATH problem, not a failed install.

Then confirm the binary can see its own options:

omp --help

Expected: a usage block listing subcommands. Look for a config or doctor entry — that is the supported way to validate your configuration in the next step. If neither exists, check the documentation for the correct validation command.

Step 2. Write and validate the configuration file

Illustration: Step 2. Write and validate the configuration file
Illustration: Step 2. Write and validate the configuration file

What to do: create the config directory, drop in a JSON config that names your provider, model, key variable, and sandboxed workspace, then validate the JSON before you ever start the agent.

mkdir -p ~/.config/omp
$EDITOR ~/.config/omp/config.json
{
  "provider": "<your-provider>",
  "model": "<model-id>",
  "apiKeyEnv": "OMP_API_KEY",
  "workspace": "/home/<user>/projects/omp-demo",
  "approvalPolicy": "ask",
  "maxTokens": 4096
}

Why each key matters:

KeyWhat it controlsHow to confirm the correct value
`provider`Which API endpoint OMP callsProvider list — check the documentation
`model`Which model answersProvider's model list; copy the ID exactly
`apiKeyEnv`Name of the env var holding the keyMust equal the variable you exported: `OMP_API_KEY`
`workspace`Directory the agent may read and writeAbsolute path, no `~`
`approvalPolicy`Whether commands run silently or need your OK`ask` is the safe default for a first run
`maxTokens`Cap on response lengthProvider plan limits

Two rules that prevent most incidents. First, the key never goes into this file — apiKeyEnv stores only the *name* of the variable, so the file is safe to back up. Second, workspace is your blast radius: everything outside that path should be off-limits, which is the same safety model used when you set up subagents and shared permissions for a team of Claude Code agents. Keep approvalPolicy at ask until you trust the setup.

How to check: validate the JSON syntax on its own, without involving OMP:

python3 -m json.tool ~/.config/omp/config.json > /dev/null && echo "JSON OK"

Expected: JSON OK. A trailing comma produces json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes and no output — fix the comma and re-run. Then, if omp --help showed a validation subcommand, run it (e.g. omp config check) and expect a line confirming the config path and the resolved model.

Step 3. Run a first task and verify the result

Illustration: Step 3. Run a first task and verify the result
Illustration: Step 3. Run a first task and verify the result

What to do: give the agent a small, safe, verifiable task inside the workspace.

cd ~/projects/omp-demo
printf 'hello world\n' > notes.txt
omp "summarise the files in this directory"

Why: a one-shot prompt proves three things at once — that the API key is read, that the provider and model resolve, and that the workspace path is correct. If any of those is wrong, the run fails immediately instead of failing later on a real task.

How to check: on screen you should see the agent state a plan, pause for your approval if approvalPolicy is ask, then print an answer that mentions notes.txt. Then confirm a clean exit:

echo $?

Expected: 0. Anything non-zero means the run errored — read the last lines of output before changing the config.

Final acceptance checklist:

Troubleshooting

Problem. The shell cannot find the command after a successful install

npm prefix -g
echo 'export PATH="'$(npm prefix -g)'/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
omp --version

Expected: the version string appears after the re-source.

Problem. The global install is refused with a permissions error

mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
npm install -g <omp-package>

Problem. The agent starts but every request is rejected

printenv OMP_API_KEY | wc -c
printf '%s' "$OMP_API_KEY" | wc -c

If the two counts differ, your key has a trailing newline — re-export it without one. If the count matches and the error persists, confirm that provider and model belong to the same vendor whose key you issued.

Summary and next steps

You now have OMP installed globally, a JSON config that pins the provider, model, and workspace, and a verified one-shot run returning exit code 0. Next, give the agent a scratch README to rewrite and compare the diff against git status, then explore approval policies — and if you want an agent that also drives a browser, read how to set up the open-source browser agent Scout by Outcrawl.

FAQ

Do I need Node.js installed to run OMP?

Yes. OMP is distributed as an npm package, so Node.js and npm must be on your machine. Confirm the exact minimum version with npm view <omp-package> engines rather than assuming an LTS number.

Where should I store the API key?

In an environment variable such as OMP_API_KEY, referenced from the config by name (apiKeyEnv). Storing the raw key in config.json means it ends up in backups, screen shares, and possibly git.

Can I restrict which folders the agent can touch?

Set workspace to a single absolute path and keep approvalPolicy at ask, so every command is confirmed first. The config schema for additional allow/deny rules is version-specific — check the documentation.

I'd rather not work in a terminal at all — what are the alternatives?

Terminal is not the only option: DeepSeek Harness Desktop covers installing a desktop agent and adding plugins on Windows and Mac, and there is also a route to run an on-device assistant directly on a phone.

🤖 AI summary