{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiddrfusqeedllu7t3s6fo3oswcthsxatpuoufqvi25jm5auwaj2e4",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3moigpygprho2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreiaathfia2jkyzlqluxc4g3srf25grcfqt2dp2vd74jvziorxvuw3m"
},
"mimeType": "image/webp",
"size": 66956
},
"path": "/gracefullight/oh-my-agent-cross-vendor-scheduling-kimi-and-opencode-land-4b2b",
"publishedAt": "2026-06-17T13:34:11.000Z",
"site": "https://dev.to",
"tags": [
"ai",
"productivity",
"programming",
"agents",
"https://github.com/first-fluke/oh-my-agent"
],
"textContent": "Two new vendors and an OS-level scheduler merged into oh-my-agent this week, which means your agents can now run on a clock instead of only when you prompt them. 135 commits, and the theme underneath most of them is the same: stop pinning the agent to a single runtime, and stop leaking resources between sessions.\n\noh-my-agent is a cross-vendor harness. The point is that a workflow, a skill, or a subagent dispatch should not care which CLI is underneath it. This week pushed hard on that promise.\n\n## What's new\n\n * **Kimi Code CLI** is now a first-class vendor: OAuth/`KIMI_API_KEY` auth, TOML hook install into `~/.kimi-code/config.toml`, mode-aware Serena and chrome-devtools MCP, and external dispatch via `kimi -p`.\n * **OpenCode** lands as an extension-class vendor with in-process plugin bridging. Subagent dispatch runs through `opencode run --agent <id>`, and model slugs are validated against `opencode models` rather than a hardcoded catalog.\n * **`oma schedule:*`** adds time-based recurring agent jobs that fire independently of any runtime. One `SchedulerPort` abstracts launchd, `systemd --user`, crontab, and Windows `schtasks`, with `--cron` or natural-language `--every` intervals.\n * **`oma serena reap`** kills idle language servers. Serena keeps a per-project LSP stack warm with no idle shutdown, so a few open projects pin 1.5GB or more; the reaper trims them and Serena respawns on the next tool call.\n * **`oma memory:gc`** prunes project-local session state and aged Serena run artifacts (defaults: keep 100 sessions, 50 days), while curated knowledge like decisions and designs is never touched.\n * Two new agents: `refactor-engineer` (budget-funded, behavior-preserving refactoring) and `research-explorer` (cited, trust-labeled cross-source synthesis), backed by the new `oma-refactor` skill.\n * `oma-mobile` gains full Flutter and React Native variants, each with a mandated repository-layer response cache (Drift offline-first, TanStack Query plus MMKV).\n\n\n\n## What's fixed\n\n * `oma update` no longer bulk-deletes vendor skill symlinks on every run, so a mid-update download failure can no longer leave the skills directory empty.\n * Updates stopped pruning skills that a shipped agent depends on, closing a gap where `refactor-engineer` could arrive without `oma-refactor`.\n * `cleanupPeriodDays` moved to the top level of Claude Code settings, where it was a no-op nested under `env`.\n * Antigravity hooks registered through the `/hooks` UI are now preserved instead of clobbered on link and update.\n\n\n\n## What's better\n\n * Docs verification got far less noisy: full-repo `oma docs verify` drops from 6,611 to 394 broken refs (and the web/docs subset from 491 to 29), so the remainder is real drift.\n * `oma hook` fires on every prompt, so it now takes an argv fast path and lazy-loads the command tree: invocation went from about 0.54s to 0.32s.\n * `UserPromptSubmit` handler budgets were retuned against a p95 of 373ms, dropping the aggregate timeout ceiling from 21s to 15s while keeping headroom over the 2s AgentMemory recall budget.\n * A large structural pass split all 28 non-test files over 500 lines into focused modules (largest remaining is 491) and consolidated duplicated helpers (type guards, safe writes, vendor unions, exit codes) with no behavior change.\n * AgentMemory recall now drops facts older than 30 days by default, so long-resolved decisions stop rehydrating into the boundary snapshot.\n\n\n\nGemini CLI is on its sunset path (June 18, 2026), so `GEMINI.md` generation and the standalone gemini preset were removed, with legacy configs soft-redirecting to antigravity.\n\n## Installation\n\n\n # macOS / Linux\n curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash\n\n\n\n # Windows (PowerShell)\n irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex\n\n\n## Links\n\noh-my-agent is built for teams who run the same workflows across whichever CLI they happen to have authenticated. Next up: deeper per-agent model routing across the newly added vendors.\n\nhttps://github.com/first-fluke/oh-my-agent",
"title": "oh-my-agent: cross-vendor scheduling, Kimi and OpenCode land"
}