Added
A one-line installer at get.omo.dev. (#9166) curl -fsSL https://get.omo.dev/install.sh | bash on macOS and Linux, or irm https://get.omo.dev/install.ps1 | iex in Windows PowerShell, installs the native omo binary for your OS and CPU into ~/.local/bin, after checking it against the release SHA256SUMS. When get.omo.dev is unreachable it falls back to the npm registry and GitHub Releases. bun add -g omo-ai keeps working. omo.dev now shows the command for your OS and has an install page at /docs/install (#9177).
web_search can use your own SearXNG. (senpi#2339) Add { "provider": "searxng", "baseUrl": "http://localhost:8888" } to websearch.json.
Changed
An unknown slash command no longer reaches the model by accident. (senpi#2348) A typo like /ulw-exec goes back into the editor with a Did you mean /skill:ulw-execute? hint instead of being sent as a prompt. A second Enter on the unchanged text sends it as a normal message, and Esc keeps editing.
Moving from the OpenCode edition, OmO Native tells you which model choices it ignores. (#9147, #6794) On its first start, Native lists each agent and category model from your OpenCode edition settings that it ignores, with the omo setup step and the omo.jsonc key that carries it over. omo setup itself now carries the edition's metis and momus models over to plan-consultant and plan-reviewer.
Hosted web search runs on the provider's cheaper search model. (senpi#2340) On the same login, for example claude-haiku-4-5 on Claude routes, when your model list shows it at a lower price than the session model. If it fails or finds nothing, the search retries on the session model. "nativeModel": "session" in websearch.json restores the old behavior.
Without a websearch.json, web_search tries more than DuckDuckGo. (senpi#2339) It now tries DuckDuckGo, Exa, Startpage, Mojeek, Ecosia and Google in turn and pauses an engine that blocks it, so your queries may reach these services. List only the providers you want in websearch.json to keep them away from the rest.
Remote MCP servers declared by a skill no longer receive your bearerTokenEnv token. (senpi#2345) The skill picks the server's URL, so declare that server in your own mcp.json to keep its auth. Stdio servers from skills you installed now expand ${VAR} the way your own mcp.json does.
Fixed
A running session survives omo update. (senpi#2358) omo update and bun install -g replace the installed package, and a session started earlier used to fail every later request with Cannot find module './<chunk>-<hash>.js' until you restarted it. Each launch now runs from its own copy of the engine.
Config you edit in ~/.pi/agent is no longer silently ignored. (#9173) After OmO copied ~/.pi/agent to ~/.omo/agent, edits to the old copy had no effect. The next start now warns once per edited file and names the file OmO reads, omo doctor lists the same files, and omo config import-pi <file> copies the edit over.
omo doctor no longer fails its computer-use check on every OS. (#9193) 5.1.1 shipped without an asset the check reads, so it always reported ENOENT for assets.generated.json.
A finished task child no longer stays "running" after its parent's host dies. (#9183) The child's record kept its dead owner, so Desktop showed a working agent that no longer existed and task status and DAG waits kept waiting on it.
Scrolling on X11 delivers every wheel click. (#9136) A foreground scroll from computer use sometimes dropped clicks and still reported success.
Bedrock accepts tool schemas with a root anyOf, oneOf or allOf. (senpi#1947) It also accepts schemas without an object type, which it used to reject.
Memory reflection works when your only provider comes from an extension. (#9175) If that provider disappears you get one notice instead of the same failure on every run.
Cursor runs each tool call once. (senpi#2334) It used to run every call a second time, and the replayed write could undo a file fix.
A resumed Claude conversation keeps its resume point. (senpi#1972) When a monitor or goal starts the first turn on restore, the conversation no longer resends its whole history.
In headless runs, a late Kibitzer verdict no longer replaces the final answer. (#9158) It used to add a turn after the answer that ended in NO_REPLY.
An MCP server that changes its tool list mid-session gets the new list registered. (senpi#2188) Added tools now show up and removed ones stay gone.
Native OpenAI requests with hosted web search no longer fail every turn with Tool choice 'web_search' not found in 'tools' parameter. (senpi#2234)
Web search through OpenAI and xAI lists only pages the search returned. (senpi#2337) Links the model wrote on its own are no longer counted as sources.
A rejected OpenAI Responses WebSocket request shows the provider's message. (senpi#2235) It used to show Error Code undefined: undefined.
Claude subscription sessions keep the field descriptions in custom tool schemas. (senpi#2145) Claude no longer wastes a call on a missing required field.
The OpenAI-compatible adapter merges back-to-back user messages for non-OpenAI hosts. (senpi#2120) Direct OpenAI requests are unchanged.
Extensions that depend on sloppy-mode CommonJS packages load again under Bun. (senpi#1841)
Picking a skill that needs input from the slash menu now waits for you to type it. (#9168) On OmO Native, choosing /ulw-execute, /ulw-plan, /ulw-loop, /ulw-research, /mass-ulw, /hyperplan, /init-deep, /refactor or /remove-ai-slops from the slash menu with Enter sent it right away with nothing after it, so the skill started without the plan name, request or goal it works on. These skills now declare what they take, and Enter leaves /ulw-execute (or /skill:ulw-execute ) in the input with the hint shown in the menu; type the arguments and press Enter again to send. Skills that take no input still run on one Enter. The waiting half needs the engine release that reads the hint (code-yeongyu/senpi#2258); until OmO adopts it, the menu behaves as before.
Your own computer-use skill no longer opens every session with a "Skill conflicts" warning. (#9160) With computer use on, OmO Native added its built-in computer-use skill on every start, even when you already had a skill of that name (Orca CLI ships one), so each session opened with a collision box. The built-in skill now steps aside for a same-name user, project or package skill, which is the one that loads, and /computer status says so in one line. The same applies to the x-search skill. disabled_skills now hides both the way it hides the bundled skills; the computer and x_search tools stay available either way.
- 79ab21e Merge pull request #9197 from code-yeongyu/release/v5.1.2-source-state
- 02b60ac Merge pull request #9196 from code-yeongyu/docs/changelog-5.1.2
- d73b577 docs(changelog): write the 5.1.2 notes under [Unreleased]
- a682c7a Merge pull request #9195 from code-yeongyu/fix/9183-orphaned-child-record
- 0dd2bd8 Merge pull request #9194 from code-yeongyu/fix/9193-category-coverage-prelude-asset
- 313ad00 test(audit): count the #9193 doctor lines in the command-string allowlist
- 49b26ed test(omo-ai): fail the payload gate when a bundle reads a sibling asset the package does not ship (refs #9193)
- 744b84a fix(omo-native): ship the computer-use prelude assets beside the doctor runtime (#9193)
- 3a88338 Merge pull request #9174 from code-yeongyu/fix/9173-pi-edit-doctor
- 84d7447 test(audit): count the #9173 doctor lines in the command-string allowlist
- 78eb076 fix(omo-native): omo doctor names the config dir and flags edits left in ~/.pi/agent (#9173)
- 6f196ba Merge pull request #9189 from code-yeongyu/chore/trim-plugin-runtime-deps
- 5cc0440 chore(deps): ship only the plugin's runtime imports as dependencies
- 73ca719 Merge pull request #9185 from code-yeongyu/chore/omo-ai-drop-babel-parser
- 8fb4b95 chore(omo-ai): drop the @babel/parser workaround from #6965
- c8feddc Merge pull request #9178 from code-yeongyu/feat/web-install-tabs
- f300d9b test(audit): register the install guide's command strings (refs #9177)
- d7dc4a9 docs: lead every README with the one-line installer and link omo.dev/docs/install (refs #9177)
- 8498cca fix(get-worker): send browsers to omo.dev/docs/install and install with the CMD line in CI (refs #9177)
- 113f032 feat(web): recommend the one-line installer for the visitor's OS and add /docs/install (fixes #9177)
- 3a02dbb Merge pull request #9179 from code-yeongyu/fix/9175-reflection-extension-provider
- 3f9a6bb Merge pull request #9176 from code-yeongyu/fix/get-worker-deploy-token
- 7ef5f00 ci(get-worker): deploy with a dedicated least-privilege Cloudflare token that can reach D1 (refs #9166)
- 8ccdac5 Merge pull request #9170 from code-yeongyu/feat/get-omo-dev-installer
- 206c44f ci(get-worker): write job summaries and register the installer strings with the repo audits (refs #9166)
- 051651c ci(get-worker): tag the Alpine container install as QA too (refs #9166)
- 688d17b docs(changes): describe the get.omo.dev Worker in prose (refs #9166)
- 0a4cd30 feat(get-worker): tag installer QA runs and keep them out of the rolled-up download count (refs #9166)
- 2f16e7d fix(get-worker): spell the PATH scan skip as an if so older shellcheck accepts it (refs #9166)
- d1a13c6 docs: lead the install guides with the get.omo.dev one-liner (refs #9166)
- 39a3778 feat(web): count downloads served by the get.omo.dev mirror in the site and badge totals (refs #9166)
- ac7f415 feat(release): mirror every release into R2 and move the installer channel only after read-back verification (refs #9166)
- 98e7ed3 feat(get-worker): serve the one-line installer from get.omo.dev with an R2 mirror and GitHub fallback (refs #9166)
- de133a3 Merge pull request #9171 from code-yeongyu/fix/9147-startup-opencode-agent-notice
- ad3b7ad Merge pull request #9172 from code-yeongyu/fix/9136-x11-foreground-scroll
- 934217a Merge pull request #9169 from code-yeongyu/fix/omo-skill-argument-hints
- 63ddc38 fix(desktop): wait for the X11 window manager to replay each foreground press (#9136)
- 8a4640b Merge pull request #8695 from Dante-dan/fix/8691-publish-propagation
- 1d1ef05 docs(changelog): note picker argument waiting for bundled skills (#9168)
- 9a41ccb feat(skills): declare argument-hint on every argument-reading bundled skill (#9168)
- 7737042 Merge pull request #9167 from MoerAI/fix/9147-plan-agent-migration
- 207eae5 Merge pull request #9165 from MoerAI/fix/9134-facts-shutdown-clock
- 8219f59 Merge pull request #9164 from code-yeongyu/fix/9160-computer-use-skill-yield
- 2140be7 fix(release): wait 30 minutes for platform packages to become visible on npm
- cde4bc0 fix(release): extend npm propagation budget
- 7e8fcc4 fix(omo-native): carry metis and momus models to plan-consultant and plan-reviewer in setup (refs #9147)
- c0d8b5f Merge pull request #9161 from code-yeongyu/fix/notarize-payload-name-collision
- 4423d49 Merge pull request #9158 from effortprogrammer/fix/kibitzer-no-late-steer
- 2588272 ci(release): bound the desktop engine notarization step like the omo leg
- 46c9085 fix(release): notarize every input when two share a basename
- c664013 Merge branch 'dev' into fix/kibitzer-no-late-steer
Thank you to 2 community contributors:
- @MoerAI:
- fix(omo-native): carry metis and momus models to plan-consultant and plan-reviewer in setup (refs #9147)
- @Dante-dan:
- fix(release): extend npm propagation budget
bun add -g omo-ai