Five CLI releases, 15.0.2 through 15.0.6, shipped this week. The theme is long-running agents that stay well-behaved: fewer stray processes, bounded memory, and retry loops that know when to stop.
20 commits, 69 files, roughly 3,700 lines added. Most of it went into how oh-my-agent manages Serena, the code-search backend that every agent leans on.
What's new
- Managed Serena runtime: version-gated Serena adapters are installed with a per-file SQLite symbol cache. Python no longer holds full workspace symbol trees in memory.
-
oma serena check: a new command that validates the Serena config and runs Dart checks against the shared daemon, with exit codes you can script against. - Scheduled daemon cleanup: a separate periodic task reaps idle shared Serena daemons. It verifies process identity before signaling a registered PID, so a recycled PID never gets killed by mistake.
- Managed Dart diagnostics: package diagnostics reuse the managed Dart language server. Adapter revisions are tracked whenever a shared daemon starts or is replaced.
-
Doctor reporting:
oma doctornow reports the Serena adapter state, in both the terminal footer and the JSON report.
What's fixed
- Duplicate Serena stacks: when the shared server is unreachable, oma now reports the connection failure instead of spawning a private Serena stack. Managed contexts are normalized before registry lookup.
- Daemon replacement under load: if the runtime revision changes while clients are attached, the loaded daemon is reused and the replacement waits until every client detaches. Active, busy, and legacy-revision cases are covered by tests.
- Eager Dart analysis: Dart now defaults to analysis on file open, and uses the local stable SDK version when none is configured.
- Unbounded orchestration retries: plans are pinned when dispatched, and retries are counted by workflow lineage and logical goal. Evidence failures are now separate from product failures, and a missing-metadata problem gets one bounded repair without restarting product planning.
- Flaky checks: the bridge timeout test asserts the protected bridge's response instead of wall time. Boundary scanning retries transient TypeScript worker exits.
What's better
-
Quieter updates:
oma updateshows the changed Hyperframes components, deduplicates repaired links, and ends with one version summary. The inaccurate file totals and routine notices are gone. -
Cleaner module boundaries: Serena config validation moved into the shared I/O layer, so
serena checkand setup no longer import the bridge command slice. Behavior is unchanged. - Verification: the duplicate-server fix was checked with 211 affected tests, type checking, lint, boundary checks, and a smoke test of symbol and definition lookup on Serena 1.7.0 with Dart 3.13.4.
-
Docs and tests:
integrations/serena/README.mdis expanded, with new Python tests for the Dart adapter, installer, and symbol cache.
Installation
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex
Links
oh-my-agent is built for teams who orchestrate more than they prompt. Next up: tighter guardrails around long-running orchestration runs, so a stuck goal fails fast instead of looping.
Top comments (0)