Skip to content

[Feature]: continue Claude catalog sessions on paired nodes (node-side CLI agent runs) #105529

Description

@steipete

What problem does this solve?

Claude Code sessions living on paired nodes appear in the native sidebar (session catalog) but are view-only: continueClaudeSession rejects non-gateway:local hosts. Investigation confirmed nothing today can run an agent turn on a node — execHost/execNode only routes individual bash-tool calls through node.invoke system.run (request/response, captured output); the agent-run pipeline has no node placement branch, nodes advertise no agent-run command, and node.invoke has no streaming.

Proposed change (v1)

Make claude-cli catalog rows on opted-in paired nodes continuable, keeping inference and session files on the node (vendor CLI, node's own auth):

  1. Streaming node invoke — additive node.invoke.progress events (seq-ordered chunks) with idle+hard timeouts; non-streaming invokes unchanged.
  2. Node command agent.cli.claude.run.v1 (TS node host) — spawns the node-resolved claude binary with allowlist-validated args, streams stdout, opt-in via node-local config plus the existing exec approval policy. Mac-app (Swift) nodes simply don't advertise it until the app ships support.
  3. cli-runner placement branch — sessions with execHost=node + claude-cli backend run each turn through the streaming invoke, feeding the existing JSONL parser (session-id capture, fork markers unchanged). One-shot -p runs only; warm stdio, gateway-loopback MCP, reseed, and attachments disabled for node runs in v1.
  4. Catalog wiring — node rows advertise canContinue when the node exposes the command; adoption binds execNode/execCwd; history import via the existing node read commands.

Out of scope (follow-ups)

macOS-app (Swift) node support; warm stdio on nodes; MCP loopback over the node transport; codex app-server on nodes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestmaintainerMaintainer-authored PR

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions