{
  "$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"
}