opi
Operations Interface — a project control center for your terminal.
Go into any repository, type opi, and get a usable interface for that
project — without configuring anything first.
Status:
0.1.0does one thing — makes a project'spackage.jsonscripts immediately runnable. Health, dependency updates, clean and security are designed but not built.
What it does
Its primary job is to be a better npm run. The start screen shows the
project's scripts — grouped by prefix, labelled from scripts-info, with the
package manager detected rather than typed:
astro-v7-workspace pnpm
Development
› dev Startet die Starter-App im Dev-Modus
dev:blog Startet die Blog-App im Dev-Modus
Build
build Baut Starter- und Blog-App
build:blog Baut die Blog-App
Preview
preview Vorschau des Starter-Builds
Quality
check Prüft das Repo mit Biome
check:fix Behebt Lint- und Formatfehler
Enter runs the highlighted script. That is the shortest path, and nothing is
placed in front of it. A list taller than the terminal scrolls.
Three speeds, all backed by the same task model:
In a monorepo each workspace member's scripts appear under the member's name.
Root and member scripts share names in practice, so a bare name runs the
root's and blog/dev runs the member's:
opi also works from anywhere inside a project, not only from the directory
holding package.json.
The script replaces the opi process, so Ctrl-C reaches your dev server
rather than killing a wrapper, and the script's exit code is what your shell
sees — opi build && … works.
Later releases add project health with parallel checks, dependency updates,
clean with real sizes, a fuzzy search and secret scanning — each orchestrating
an established tool (tsc, ESLint, Biome, Vitest, Knip, No Secrets,
pnpm audit, Taze) rather than reimplementing it.
Design rules
- Zero configuration.
opimust be useful in an unmodified repository. A tool you have to configure first never gets started in someone else's project. package.jsonis the only interface. Noopi.toml, no second source of truth.scripts, optionallyscripts-info, optionally anopikey for refinement.- No task system of its own.
opidoes not define tasks with their own commands — that would put it in competition with npm scripts,just,makeand Taskfile for no gain. - Orchestration, not reimplementation.
opiis a UX layer over proven tooling.
Install
Unix only. opi runs a script by replacing its own process with exec, so
Ctrl-C reaches the dev server rather than killing a wrapper, and its
interactive list drives termios directly. Windows offers neither, and a second
execution model that nothing exercises would be worse than an honest boundary.
Building on Windows fails with that message rather than producing a degraded
binary.
Documentation
- docs/project-state.md — what this is and where it stands
- docs/constraints.md — the boundaries the implementation respects
- docs/decisions.md — the decisions in force, and why
Terminal presentation comes from runemark, the shared presentation layer for these CLI tools.
Name
opi is unrelated to OdradekAI/opi, which
owns the opi-* crate namespace on crates.io. Installing both puts two opi
binaries in ~/.cargo/bin.
License
MIT (LICENSE).