Skip to content

Follow-up (#2229): ACP-runtime agent entry for OpenClaw→OpenCode dispatch (opencode-acp) #2256

Closed

Description

@dezren39

Follow-up to #2229 (method 1 of 3). Method 3 — the opencode-route provider front — shipped as the priority build (PR #2250, live-proven). This method was descoped by Drew on 2026-10-29 to a follow-up: sometime soon / when an OpenClaw-origin workload needs ACP dispatch into OpenCode.

What it adds

An ACP-runtime agent entry in home/openclaw/default.nix (agents.entries): opencode-acp with runtime.type="acp", runtime.acp.agent="opencode", backend="acpx", mode="oneshot", heartbeat disabled. Per the shipped OpenClaw runbook, an entry configured with runtime.type="acp" makes it a valid sessions_spawn({runtime:"acp"}) target and binding-default holder, with runtime.acp.agent naming the underlying harness (opencode). That gives OpenClaw a standing capability to dispatch a job into OpenCode over ACP, instead of only reaching OpenCode models through the provider front.

Starting point (already done pre-descope)

  • PR feat(openclaw): opencode-acp ACP-runtime agent (#2229 mechanism 1) #2237 (branch feat/openclaw-acp-agent-2229) already contains the entry. The shape was verified against the pinned OpenClaw 2026.10.7 zod schema — mode must be persistent|oneshot (an earlier run draft was rejected by openclaw config get and corrected).
  • Established semantics: a direct openclaw agent --agent opencode-acp turn still runs embedded on the default model — the entry's value is as a spawn target, so its live proof depends on the sessions_spawn follow-up (headless/CLI sessions currently never receive that tool). Once that lands, prove this with a spawn to agentId="opencode-acp" and check the acp_sessions table plus a new row in OpenCode's session_v2.

Activity

  1. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Closed by Drew's decision (2026-10-29, main chat): the embedded runtime is what he wants for OpenClaw's agents. The standing ACP-runtime agent (opencode-acp) is therefore not wanted, not merely blocked — this restore is cancelled, not deferred. OpenClaw spawning OpenCode over ACP on demand from sessions (#1728) remains enabled and is unaffected. The nix-openclaw schema bug that made the entry unevaluable is still tracked at #2509 / upstream openclaw/nix-openclaw#176 for what it's worth to the generator, but nothing here waits on it anymore.

  3. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Reopened on Drew's directive (2026-10-29 21:44 CDT, main chat): "I want the other options built and functional." This supersedes the close from ~25 minutes earlier — embedded stays the default runtime for OpenClaw's agents, AND the ACP-runtime agent option is to be built and proven functional as a standing capability. Build note: the nix-openclaw schema cannot express the entry (#2509, upstream openclaw/nix-openclaw#176); the working route is to carry a patch against the nix-openclaw module in this repo (single-submodule runtime type) or an equivalent local encoding, proven by a full toplevel evaluation WITH the entry present. Acceptance: entry evaluates, a switch activates it, and 'openclaw agent --agent opencode-acp' completes a trivial dispatched turn. Scope clarification (Drew, 21:45 CDT): ACP dispatch is task handoff — OpenCode doing the work there is the point of the option. The routing-only principle in the new follow-up issue applies to the opencode-route MODEL door, not to dispatch.

  4. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Claimed by the OpenChamber scheduled queue lane (task 7860, triage, 20 min box). Revalidating against current main: entry still absent, blocker #2509 / upstream openclaw/nix-openclaw#176 still open at the pinned rev. Scope + ordering follow in this same run.

  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Triage at current main (f04a439, 2026-11-03)

    Verdict: live, unbuilt, and correctly ordered behind #2509. Not closed.

    Verified state

    Scoped fix path

    The only viable route is a local workaround, because the pinned input cannot express runtime.type=acp:

    1. Preferred: vendor/patch the generated schema module locally — single submodule type = enum [ "embedded" "acp" ] plus optional acp attrset, keeping the rendered JSON shape identical. This repo already accepts exactly this pattern for a nix-openclaw piece: home/openclaw/plugins/summarize/flake.nix is vendored for the same class of upstream-pin defect.
    2. Not preferred: a third fork flake input. Repo policy keeps fork inputs to opencode and openchamber; do not add nix-openclaw as a fork.
    3. Reuse OpenClaw ACP-runtime agent entry cannot evaluate: nix-openclaw generated schema makes the acp runtime branch unreachable #2509 if it lands first — its acceptance already includes restoring the entry and a switch with it present, so doing (1) here first would duplicate it.

    Ordering / blockers recorded

    Follow-up

    Enqueued implementation task 8040 (repo-health:v1:fix:developing-today/code:issue:2256), not_before 2026-11-03T20:00Z, with the #2509 ordering gate written into its acceptance criteria. No new labels needed on the issue beyond the queue lifecycle ones already applied.

  6. 116 remaining items

  7. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  8. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  9. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  10. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Drew's adjudication (2026-11-05 01:44 CST, main chat): embedded is what I want — the Oct 30 ruling stands; the ACP-runtime agent entry is NOT restored as a standing agent. Two refinements recorded: (1) the architecture focus is OpenClaw calls OpenCode, and OpenClaw handles the loop — Shed drives, OpenCode is the called backend. (2) Drew wants to know ACP could work: a bounded capability proof (OpenClaw driving its own loop, dispatching real work to OpenCode over ACP, end-to-end) is spun out as its own issue — a proof, not a restore, and it changes no standing config. Closing this issue as not planned per the ruling; the reopen on 2026-10-30T02:45Z has no recorded basis and is superseded by this comment.

  11. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: done (task 8040)

  12. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

source/creatorFiled by the new-issue-creator jobstatus:donetask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions