Repository navigation
Native orchestration API for plugins #17239
Replies: 3 comments
|
On "lifecycle settlement" specifically — if Orca is to be the sole authority for it, From running a worker pool daily and getting this wrong four separate times:
Collapsing UNVERIFIED into FAILED is what fires side effects twice. Collapsing it into Two host-side facts that make settlement decidable, both learned the hard way:
If the facade exposes settlement, exposing why it settled (recorded exit status vs. Reference for the process half, MIT: https://github.com/soul-sol/agent-watch |
|
Hi — this is very close to the integration boundary I’m currently investigating in Orca 1.4.217. We want Orca to remain the lifecycle owner for Runs, Tasks, Dispatches, workers, messaging, stop/cancel, and settlement.
We specifically want to avoid relying on implicit selectors such as current, active, or cwd-derived authority.
The key question for us is: |
|
We have a small Hermes-to-Orca integration working across two macOS hosts for terminal discovery, inspection, and carefully checked direct messaging. We would like to contribute a reusable, sanitized adapter recipe and tests rather than build a parallel orchestration system. This is closely related to this discussion and #15828. In particular, the earlier Hermes/host-side-adapter comment describes the boundary we want too: Orca remains the authority for Runs, Tasks, Dispatches, delivery, worker lifecycle and settlement; Hermes is a client and human-facing interface. We recognize that Orca already provides Hermes lifecycle hooks. It also provides durable Run inboxes with replay/ACK, pending questions and federated worker placement. We are not requesting a second mailbox, a new scheduler, or basic Hermes support. One important attribution: our current SSH forced-command transport intentionally exposes only an allowlisted subset of commands, with ownership restrictions. Missing orchestration routes through that wrapper are our integration limitation—not an Orca bug and not a request to relax Orca's authority checks. Would you welcome a reference integration built on supported CLI/host contracts, covering:
Proposed acceptance tests:
We can prepare a clean-room sample with placeholder hosts, structured argv, strict JSON parsing, capability checks, mutation read-back and focused tests. No production scripts, logs or credentials would be included. Telegram-specific buttons and persistent human-inbox UI would remain in a separate Hermes gateway plugin; they are not an Orca responsibility. Maintainer question: which supported caller/ownership seam should a non-interactive Hermes adapter target today, and would docs plus a reusable adapter/test fixture be preferable to a small host API addition? We would prefer to contribute to the existing discussion and identity work before proposing a new public API. References for the existing contracts: orchestration guide, messaging and gates, remote placement, and Hermes lifecycle plugin. |
Uh oh!
There was an error while loading. Please reload this page.
Problem or use case
We are building a Genie integration for Orca and want Orca to remain the sole authority for Runs, Tasks, Dispatches, workers, questions, gates, and lifecycle settlement.
Today a plugin worker cannot call the existing orchestration engine through Orca's typed plugin host facade. The available workaround is a narrowly allowlisted, shell-free adapter over
orca orchestration ... --json, but that cannot provide first-class capability consent, stable host schemas, or host-enforced lifecycle authority.We would like maintainer feedback before writing code. No PR has been opened.
Proposed solution
Expose a small additive orchestration surface through
pluginApi: 1, with separateorchestration:read,orchestration:write, andorchestration:subscribecapabilities.The API would delegate to the existing orchestration services rather than create new state. The first version would be limited to plugin-created Runs, use installation principal and controller-generation fencing rather than trusting manifest identity alone, authorize every child object atomically through its Run, use durable request receipts for remote retries, and treat lifecycle events as advisory with authoritative read-back.
The complete architecture proposal—including scope, authority model, retry semantics, mixed-version behavior, security limitations, and the cross-platform/SSH/federated test plan—is here:
https://gist.github.com/namastex888/76e22d09df7eb4387c1465949ae3f687
If the maintainers agree with this architectural direction and point us at the preferred principal/controller integration seams, I am happy to implement the focused PR and full test matrix. I will not open a speculative PR before that approval.
Alternatives or additional context
The immediate no-upstream workaround is a Genie-owned plugin that invokes only allowlisted Orca orchestration CLI commands using structured argv, mandatory
--json, no shell, strict output parsing, capability/version probes, timeouts, and mutation read-back. It would not use terminal injection, internal RPC, a second lifecycle store, or local fallback for unavailable remote execution.A native host facade would still be preferable because it provides honest install consent, typed compatibility negotiation, durable authority boundaries, and a provider-neutral integration point for plugins beyond Genie.
This proposal follows the repository's contribution requirements: the eventual change would be narrowly scoped, provider-neutral, compatible with macOS/Linux/Windows, and tested across local, folder, SSH, and federated execution. Release changes would remain maintainer-owned.
All reactions