feat(adapters): OpenMono adapter contract - #3502
Conversation
OpenMono (StartupHakk/OpenMonoAgent.ai, 1.8k stars, AGPL-3.0) is a terminal-native local-LLM coding agent. Their users are our ICP and they already have a real enforcement chokepoint, so this is an integration, not a competitive play. What they already ship: Docker sandbox, 'nothing bypasses the pipeline', doom-loop detection at a fixed 3x repeat, per-sub-agent turn budgets (Explore 15 / Plan 10 / Coder 30 / Verify 20), write-restricted sub-agents. The gap this fills: every one of those controls is static and per-run. Run 1 and run 500 are identical. ThumbGate adds cross-session persistence - captured failure to lesson to prevention rule to a block on the next matching call. Two couplings specific to their design are encoded in openmono.json: adaptive loop detection (learn which sequences preceded wasted runs instead of a fixed 3x) and evidence-based turn budgets (measured, not guessed). Deliberately NOT added to package.json 'files': the runtime binding is not built yet (proposed upstream as StartupHakk/OpenMonoAgent.ai#129, awaiting confirmation of the hook surface). Shipping unbound config in the npm runtime would also push the bundle 467 -> 469 and collide with the ratchet bump in open PR #3491. When upstream confirms, the binding and the files entries land together with a single deliberate ratchet bump. Licensing: ThumbGate stays permissive, OpenMono is AGPL-3.0. The adapter lives here and talks over their existing interface, so neither side takes on a new obligation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012x6mu5e4Bjhaa3UcmZrLks
|
Merging to
After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryAdds an OpenMono adapter definition and installation guidance. The documented Confidence Score: 4/5Not safe to merge as documented because the advertised OpenMono installation flow silently leaves enforcement uninstalled. The exact documented command was executed in an isolated project and produced no OpenMono hook configuration; a supported Claude control run created its PreToolUse hook. The CLI's agent-only dispatch explains the different outcomes. Files Needing Attention:
What T-Rex did
|
Verify changeset was failing because adapters/ is a release-relevant surface. This also clears the test job, whose failing step is the same changeset-coverage check.
…/openmono-adapter
Review found the documented init invocation exits 0 without creating any hook configuration: init dispatches on the agent flag and openmono is not a supported agent or auto-hook target. The doc instructed users to run something that reports success for work that never happened, which is the precise failure class this adapter exists to catch. Replaced with the three conditions that must all hold before an install path exists.
What
Adds
adapters/openmono/— the ThumbGate-side contract forOpenMono (1.8k stars, AGPL-3.0), a
terminal-native local-LLM coding agent.
Why this is an integration, not a competitive play
OpenMono's users are our ICP, and they already have a genuine enforcement chokepoint:
Pitching them "you need guardrails" would have been false. The real gap is that every
one of those controls is static and per-run — run 1 and run 500 are identical. Nothing
learns from Monday's incident before Tuesday's run.
That is exactly the self-improving-firewall position: capture failure → lesson →
prevention rule → block on the next matching call.
Two couplings specific to their design are encoded in
openmono.json:loopDetection.adaptive— learn which sequences preceded wasted runs in this repoinstead of a fixed 3× threshold, while leaving legitimate retry loops alone.
everywhere.
Deliberately NOT in
package.jsonfilesThese two paths are not added to the npm
filesarray, on purpose:StartupHakk/OpenMonoAgent.ai#129,
awaiting confirmation of the hook surface. Shipping unbound config in the runtime
package would be theater.
When upstream confirms, the binding +
filesentries + a single deliberate ratchet bumpland together.
Verification
Licensing
ThumbGate stays permissive; OpenMono is AGPL-3.0. The adapter lives here and talks over
their existing interface, so neither side takes on a new obligation.