{"full_name":"code-yeongyu/oh-my-openagent","owner":"code-yeongyu","name":"oh-my-openagent","url":"https://github.com/code-yeongyu/oh-my-openagent","description":"OmO: Just type \"mass ulw\" keyword with your prompt. Now you are the master of graph engineering.","homepage":"https://omo.dev","topics":[],"language":"TypeScript","license":"NOASSERTION","avatar":"https://avatars.githubusercontent.com/u/11153873?u=568c08de254b942a8ec466fcba17f2a02cb68802&v=4","created_at":"2025-12-03T01:40:05Z","pushed_at":"2026-11-10T09:30:18Z","metrics":{"stars":70815,"forks":5848,"watchers":227,"issues":5030,"prs":7667,"releases":364,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":91},"growth":{"day":{"stars":22,"forks":4,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[70793,70815],"forks":[5844,5848],"watchers":[227,227],"issues_open":[null,null],"prs_open":[null,null]},"boards":{},"same_owner":[],"issues":[{"number":1397,"title":"[RFE]: Automated Learning Capture System","comments":76,"created_at":"2026-02-02T16:08:46Z"},{"number":8235,"title":"Release binary diet: --splitting + full minify, embedded payload slim, provider registration adoption, retired browser CLIs, dependency cleanup","comments":60,"created_at":"2026-09-13T09:52:10Z"},{"number":673,"title":"[Feature]: Disable oh-my-opencode via cli command","comments":25,"created_at":"2026-01-10T19:17:26Z"},{"number":10814,"title":"windows-latest test shard 2/2 is broadly flaky: a different test fails each run","comments":21,"created_at":"2026-10-21T15:20:13Z"},{"number":854,"title":"[Feature]: Add `/omo-spec` — A Unified Spec‑Driven Workflow for Oh‑My‑OpenCode","comments":20,"created_at":"2026-01-16T14:15:59Z"},{"number":1160,"title":"[Feature]: Adding a Borg function for skill integration","comments":16,"created_at":"2026-01-27T03:04:28Z"},{"number":9766,"title":"Test suites leak temp directories into the OS temp dir (~5,600 entries on one machine)","comments":15,"created_at":"2026-10-08T15:46:54Z"},{"number":190,"title":"light version of ultrawork","comments":15,"created_at":"2025-12-24T09:34:42Z"}],"discussions":[{"number":11133,"title":"License question: reusing memory-core (and the kibitzer recall persona) in an open-source app with paid credits","comments":1,"category":"Q&A","created_at":"2026-10-24T03:08:03Z"},{"number":10631,"title":"Opencode plugins on omo standalone","comments":1,"category":"General","created_at":"2026-10-19T21:06:32Z"},{"number":10499,"title":"OmO included in AgentManager's tool catalog","comments":0,"category":"Show and tell","created_at":"2026-10-18T08:42:42Z"},{"number":10058,"title":"Miwarang Senpi Delegate: OpenCode free-tier delegation","comments":0,"category":"Show and tell","created_at":"2026-10-12T13:27:24Z"},{"number":9897,"title":"Looking for good, worked OmO native configuration reference","comments":1,"category":"General","created_at":"2026-10-10T20:12:42Z"},{"number":9637,"title":"lazyomo — a lazygit-style TUI editor for your ~/.omo/omo.jsonc","comments":0,"category":"Show and tell","created_at":"2026-10-05T22:41:13Z"},{"number":9401,"title":"Is there a way to let omo native run the plugin of OpenCode?","comments":1,"category":"Q&A","created_at":"2026-10-01T20:08:38Z"},{"number":9256,"title":"What the Discord and LINE APIs let an OmO agent do: practical recipes with official docs links (tested)","comments":0,"category":"Show and tell","created_at":"2026-09-30T05:53:40Z"}],"latest_release":{"name":"v5.1.64","tag":"v5.1.64","published_at":"2026-11-07T16:57:24Z","body":"**Desktop memory sync now starts as soon as the engine boots, without waiting for a session.** An engine started by `omo host ensure` loads extensions only when a session opens, while the desktop opens none until the engine has sent the memory-sync bootstrap handshake, so the two waited on each other. The compiled `omo` and the npm launcher now start that one claim before the engine loads whenever an RPC engine's launch declares a `memory-sync` channel; the first session reuses it. A claim that fails still reports memory sync as unavailable and never falls back to CLI credentials. ([#12702](https://github.com/code-yeongyu/oh-my-openagent/issues/12702)) ([#12704](https://github.com/code-yeongyu/oh-my-openagent/pull/12704))\n\nInternal (tests only): macOS trust acquisition reads `/etc/ssl/cert.pem` through the already-injectable bundle reader, and a test now proves that a malformed default file yields the structured `openssl-default-file-malformed` drop entry (file, cause, block index, narrowing). ([#12633](https://github.com/code-yeongyu/oh-my-openagent/pull/12633))\n\nInternal (tests only): the OpenSSL default-file importer tests now pin that any high byte on a BEGIN line, not only a BOM, drops the whole file. ([#12632](https://github.com/code-yeongyu/oh-my-openagent/pull/12632))\n\nInternal (release tooling): the omo-native trust mutation harness counts a mutant as killed only when a named test fails by an assertion; a mutant that only throws a runtime error or crashes on load is now reported as `crashed` and fails the run. ([#12631](https://github.com/code-yeongyu/oh-my-openagent/pull/12631))\n\n### Fixed\n\n- Memory sync no longer loses an edit when two devices change the same line of a memory file at the same time. Devices on this version keep both edits as whole lines, and every device converges. Before, the edits were merged character by character into text that matched neither (#12279).\n  - Between devices on this version, an edit does not disturb a line nobody edited. The exception is a very large rewrite: when one device adds and removes more than about 2,000 lines of a note in one save, that save is merged character by character, as before this fix, so a concurrent edit to the same line can still splice.\n  - When the note's body or the new text does not end with a newline, the edit is still merged character by character, as before, so two concurrent edits to that last line can still splice.\n  - With a device that still runs an older version, its old character merge can still go wrong in these ways:\n    - **Adjacent lines can fuse.** The older device rewrites the line right after a line this version edited. Depending on the two devices' internal ids, the two edits can fuse into one line followed by an empty line. Measured: from `head`, `one`, `two`, `tail`, this version writes `ONE` and the older device writes `TWO`, and the result can be `head`, `TWOONE`, an empty line, `tail`. Two older devices give `head`, `ONE`, `TWO`, `tail`.\n    - **Leftover text moves.** The older device edits a line this version deletes. Its leftover text joins a neighbouring line.\n    - **Its own diff touches other lines.** The older device's character merge crosses into a line its user did not edit. This also happens between two older devices.\n  - Two older devices keep their old character merge until they update. ([#12597](https://github.com/code-yeongyu/oh-my-openagent/pull/12597))\n- Memory sync: the push phase of a large memory set no longer needs memory in proportion to the whole set. Every push step used to re-read and re-write one journal file holding every pending item's data, several times per batch. A device pushing a few thousand memory files therefore peaked at 2 GiB or more (#12286). The journal now keeps a small index of pending items with their data in separate files, and a push reads only the batch it is sending. Capturing the set before the push still holds each captured file's text until the capture ends. A journal written by an older"},"readme":true,"readme_zh":true,"news":[],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}