Installation
Install Maestro with npx or bunx, pick skill libraries, log in to providers and give the router a key.
Requirements
- omp — the oh-my-pi harness. Required; the installer can install it for you.
- Node.js (for
npx) or Bun (forbunx). The package declaresnode >= 18. - git — only needed to install skills. Without it, plugins and the model setup still install.
- A subscription for the providers your ensemble uses, and optionally a TypeSafe API key for the router.
Run the installer
Pick an ensemble by name. Without one you get the default, mix:
$ npx omp-maestro # mix — Claude leads, GPT codes (default)$ npx omp-maestro anthropic # Claude only$ npx omp-maestro openai # ChatGPT / Codex only$ bunx omp-maestro mix # the same, with Bun| Ensemble | What it is | Log in to |
|---|---|---|
mix | Claude Opus orchestrates and plans, GPT Sol/Luna do the coding, Claude Sonnet does design and vision | Anthropic + OpenAI Codex |
anthropic | Claude only: Opus thinks and plans, Sonnet codes, Haiku handles the small stuff | Anthropic |
openai | ChatGPT/Codex only: GPT-6.1 Sol thinks and codes, GPT-6 Luna handles the small stuff | OpenAI Codex |
Not sure? Start with the one that matches the subscriptions you have — you can switch later without reinstalling.
What the installer does
- Checks your setup. It probes
omp,gitand the runner you launched it with (npxorbunx). - Offers to install what's missing — and asks first, every time. omp is installed with the tool you launched from (
bun install -gornpm install -g, the latter only when Bun is present, since omp runs on Bun), otherwise with omp's official installer. git comes from your system package manager: winget, Homebrew (or Xcode command-line tools), apt-get, dnf, pacman, zypper or apk. - Asks one question: which skill libraries you want. All 6 start selected; ↑/↓ move, space toggles, enter confirms.
- Installs plugins: ponytail, then
omp-maestro@0.1.2. - Installs the chosen skills into
~/.agents/skillswith the skills CLI. A library that fails is skipped with a warning; the rest carry on. - Applies the ensemble by merging its
modelRolesandretry.fallbackChainsinto your omp config. Roles the ensemble doesn't define are left untouched.
$ omp plugin install @dietrichgebert/ponytail$ omp plugin install omp-maestro@0.1.2$ npx -y skills add <repo> -g -y -a codex --skill <skills…> # once per library you ticked$ omp config set modelRoles '{…your roles, with the ensemble's roles merged in…}'$ omp config set retry.fallbackChains '{…}'Plugin source override
Set OMP_MAESTRO_SPEC to install the plugin from a different spec than omp-maestro@0.1.2 — useful when testing a fork.
After installing
Inside omp:
- Log in to the providers your ensemble uses:
/login→ Anthropic and/or OpenAI Codex (ChatGPT plan). - Give the router a key. Export it, or put it in omp's env file:
$ export TYPESAFE_API_KEY=… # current shell# or add this line to ~/.omp/agent/.env:TYPESAFE_API_KEY=…- Play. The status line shows
🧭 jev: ONwhen the router is live,NO KEYwhen it has no key, andOFFafter/jev-route off.
CI and non-interactive runs
Without an interactive terminal the checklist is skipped and every skill library is installed. The installer also can't ask before installing missing tools, so it won't — make sure omp --version works first.
$ npx omp-maestro anthropic < /dev/nullRe-running and updating
Re-running the installer is safe. It updates the plugins and skills and re-applies the ensemble you name — handy on a new machine, or to reset roles you've changed by hand.
Uninstalling
$ omp plugin uninstall omp-maestro$ omp plugin uninstall @dietrichgebert/ponytail # if you don't want ponytail either$ npx skills remove -g # pick skills to removeYour model roles stay as they are — change them with /model.