Last week I showed how I taught Hermes to pilot agy — Google’s Antigravity CLI — headlessly, and opened the agy-antigravity-cli adapter skill in my Hermes Skills Foundry (how it started). The payoff was one workflow, two agents, no vendor lock-in.
But agy still routes through Google’s cloud. The lock-in question only moved, it didn’t disappear.
Here is the counterpoint: omp (“Oh My Pi”). An open-source coding agent that runs in your terminal, ships the IDE wired in, and — the part I like most — can run entirely on free models you already have on disk. I ported its adapter skill into the foundry too.
This picks up where my post on piloting agy left off.

TL;DR
ompis the open-source terminal coding agent from omp.sh — a Rust-native fork of Pi by @mariozechner, extended by Stencil Labs and “open all the way down”: ~80k lines of Rust core and MIT-licensed.- Its tagline is literal: a coding agent with the IDE wired in. It drives the LSP1 (14 language-server operations) and DAP2 (28 debugger operations) instead of guessing.
- Free models, easily. omp auto-discovers local Ollama, llama.cpp, LM Studio, and vLLM endpoints — no API key, no provider bill. It also speaks to 60+ hosted providers when you want one.
- I added
ompto the foundry (ported fromzaharenok/omp-skill, MIT), verified headless on omp 18.1.18 / Hermes 0.22.2. - One workflow, three backends now: Hermes, agy, and omp — with the closed Google engine optional.
What omp Actually Is
Ask ten people what “a coding agent” is and you get ten hand-wavy answers. omp gives a concrete one: a terminal program that inspects your repository, edits code, runs your dev tools, and keeps the work in a resumable session.
Architecturally it strips the surprise out of the whole category:
- It is an IDE in disguise. Most agents edit text and hope. omp stands on a compiled language server: I can ask it for semantic renames that update imports across files, find-references, inferred types, and live diagnostics — not regex string surgery.
- It debugs for real. Via DAP2 it attaches to a live process: real breakpoints, step over/into, read locals from the running stack. Not a simulated trace.
- It parallelizes itself. omp fans out its own subagents (scout, reviewer, security-reviewer, …) so one call replaces several of my own subagent hops.
- It plans before it wrecks. Plan mode is read-only investigation first; execution only after review. Headless,
--plan-yolodoes the same in one shot. - It remembers between runs. Sessions are saved per directory, resumable with
-c. The context you built yesterday isn’t re-explained from scratch today.
That set of capabilities — LSP, DAP, subagents, plan mode, persistent sessions — is the whole “agent” story. omp just ships it complete, out of the box.
The Part That Won Me Over: Free Models
This is why I reach for omp for everyday coding work: I am not forced onto a paid API lane.
omp auto-discovers local engines by probing common ports:
| Engine | Default port |
|---|---|
| Ollama | 11434 |
| llama.cpp | 8080 |
| LM Studio | 1234 |
| vLLM | route exists |
No API key, no quota, no billing surprise. Point omp at a local Ollama model and it is a fully functional coding agent running on hardware I already own. When a thorny refactor genuinely needs a frontier model, omp models lists the hosted providers (60+) and I pick one — the same model routing pattern, but optional instead of mandatory.
That is the real contrast with agy: with agy the model is fixed in Google’s cloud; with omp the model is a choice, and the free choice is the default.
How Hermes Drives It
Same adapter discipline I learned the hard way with agy:
hermes skills install sentenza/hermes-skills-foundry/skills/ompHeadless runs follow the pattern from the agy post — print mode, bounded time, explicit repo root:
terminal(command="omp -p --max-time 600 'Fix the failing test in src/parser.test.ts, run it, explain the root cause in 3 lines.'", workdir="<repo>")The rules the skill bakes in:
- Always
-p— print mode, streams to stdout, exits. A bareompopens an interactive TUI that will hang a shell call. - Always
--max-time— a stuck run must not hang the parent agent forever. - Always
workdir=<project root>— LSP1 discovery never walks parents; the project marker must sit directly in the launch dir. - Keep sessions on real projects (
--no-sessiononly for throwaway scratch) — accumulated project knowledge is the point.
flowchart LR accTitle: Hermes piloting omp flow accDescr: Hermes receives a prompt, triggers the omp skill via terminal, runs omp headless against a local or hosted model, and captures stdout and file diffs. User([Task / Prompt]) --> Hermes[Hermes Agent] Hermes -->|skill call| Skill[omp adapter skill] Skill -->|subprocess -p| Omp[omp CLI] Omp -->|autodiscovered| Local["Local engine<br/>Ollama / llama.cpp / LM Studio<br/>or hosted provider"] Local -->|reasoning + edits| Omp Omp -->|stdout + filesystem| Skill Skill -->|verified result| Hermes
agy vs omp, side by side
| agy | omp | |
|---|---|---|
| Origin | Google Antigravity CLI | Open source (Pi fork, Stencil Labs) |
| Engine | Cloud | Native Rust |
| Model | Gemini, pinned to Google | Choice: local or 60+ providers |
| Free/local models | No | Yes (Ollama, llama.cpp, LM Studio, vLLM) |
| Code intelligence | — | LSP1 (semantic renames, references, diagnostics) |
| Debugging | — | DAP2 (breakpoints, step, live locals) |
| Subagents | — | Built-in specialists (scout, reviewer, security-reviewer) |
Both are now first-class adapter skills in the foundry, under the same Gate 4 exception I wrote for agy-antigravity-cli: inert without the binary (command -v preflight), configurable engine ($AGY_BIN / $OMP_BIN), honest eval status.
I keep agy for Gemini-class gnarly refactors. I reach for omp for the everyday build/fix/test loop — because it never charges me a token to try.
Getting Started
Install omp itself:
curl -fsSL https://omp.sh/install.sh | shThen install the adapter skill into Hermes:
hermes skills install sentenza/hermes-skills-foundry/skills/ompPoint it at a local engine (ollama serve, or any llama.cpp / LM Studio endpoint) and you have a free, resumable, IDE-grade coding agent that Hermes pilots headlessly.
Check the hermes-skills-foundry repository for the omp skill, the updated README table, and the continued Gate 4 story.
How We Got Here: From a WhatsApp Relay to Oh My Pi
omp didn’t appear out of nowhere. It sits at the end of one of the weirdest six-month stretches in open-source AI, and the story is worth knowing because the same few ideas keep coming back. (For the longer arc behind all of this, from symbolic logic to transformers, see my brief history of AI.)
1. A weekend project (November 2025). On November 24, 2025, Peter Steinberger, the Austrian developer who founded PSPDFKit, opened a repo (the full naming timeline is worth a read) whose second commit was “Add warelay CLI with Twilio webhook support.” It was a WhatsApp relay for talking to an AI from his phone. The name lasted a day.
2. The name carousel (December 2025 to January 2026). The relay became Clawd, then Clawdis, then Clawdbot. On January 27, 2026, it became Moltbot after a trademark request from Anthropic, whose model the lobster mascot’s name resembled. Two days later, on January 29, Steinberger announced the final name: OpenClaw. He cited more than 100,000 GitHub stars in about a week. The project changed names five times in nine weeks, and every time the underlying idea got stronger: an always-on agent that lives in your chat apps and does things for you.
3. The engine underneath was tiny. OpenClaw is the gateway: chat channels, memory, scheduling. The part that actually reads and edits code is Pi (pi-mono on GitHub), a deliberately minimal agent runtime by Mario Zechner (the creator of libGDX). Six days after OpenClaw’s first commit, on November 30, 2025, Mario published “What I learned building an opinionated and minimal coding agent”. For a good outside read, see Pi: anatomy of the agent powering OpenClaw. Pi has four tools and a system prompt under 1,000 tokens. It has no built-in to-do list and no permission pop-ups, which Mario argues are security theater. Customization lives in plain-text AGENTS.md files and a TypeScript extension API. The lesson of the whole ecosystem is in that design: the smaller the core, the more room the model has to think.
4. Hermes arrives (February 2026). Nous Research released Hermes Agent, an MIT-licensed, self-improving agent. It is not an OpenClaw fork (here is a side-by-side comparison). It is an independent Python project, and it ships hermes claw migrate, which imports OpenClaw settings, memories, skills, and API keys, so people could switch without starting over. That migration command is why a lot of OpenClaw users ended up in Hermes, and why a skill like the ones in my foundry is portable at all.
5. OpenClaw changes hands (February 2026). In mid-February, Steinberger announced he was joining OpenAI, and that OpenClaw would move to a foundation and stay open source. A side project that started as a weekend hack became a foundation-backed project in under three months.
6. Oh My Pi: the batteries-included fork. Pi’s minimalism is a feature, but some people want the opposite trade-off. Oh My Pi (omp, home at omp.sh), built by Stencil Labs and maintained by Can Bölük, forks Pi and adds everything Mario left out on purpose: LSP1 and DAP2 integration, subagents, plan mode, and hash-anchored edits, where the model points at anchors instead of retyping the lines it wants to change, so a stale file makes the patch fail instead of silently corrupting the code.
The interesting part is that these are two answers to the same question (see Oh My Pi vs Pi for a feature-by-feature view). Pi says “give the model almost nothing and get out of its way.” omp says “give the model the whole IDE.” Both are open source, both run on local models, and Hermes can pilot either one.
That is the thread I keep following. The agent runtime keeps getting smaller and more replaceable. The part that matters is the skill layer on top, which is why I put my adapters in the Hermes Skills Foundry instead of tying them to one vendor.
Footnotes
Language Server Protocol, the standard that lets an editor ask a language server for semantic answers: go to definition, find references, rename a symbol everywhere, report errors. Originally from Microsoft for VS Code. Spec. ↩ ↩2 ↩3 ↩4
Debug Adapter Protocol, the debugging counterpart: a common way for tools to set breakpoints, step through code, and inspect variables in a running program. Spec. ↩ ↩2 ↩3 ↩4