Skip to content

Agents spawned on remote fleet nodes die young and produce nothing, while spawn reports success #1603

Description

@khaliqgant

Agents placed on remote fleet nodes register, then die young, producing nothing — and spawned: true hides it

Two independent instances today, on two different nodes, both confirmed dead by attaching rather than by reading a status field.

Instance 1 — sf-mini

spawn factory-placement-why-0823  target_node sf-mini
  -> {"spawned": true}                         (and a duplicate invocation refused: spawn_agent_name_in_use)
  -> registers, roster node_id node_203549044126121984   (correct node)
  -> lastSeenAt 2026-08-23T10:20:14Z
  -> attach at 10:32Z:
     "No active agent named 'factory-placement-why-0823' on node 'sf-mini'"
     HTTP 404, code agent_not_found

Output produced: none. No Step 0 report, no DM, no issue comment, no commit. It owned the critical path of a live outage for ~20 minutes and evaporated.

Instance 2 — daytona-1538-verify-0817b

spawn factory-322-guard-sandbox-0823  target_node daytona-1538-verify-0817b
  -> {"spawned": true, "agent_id": ...}
  -> registers, roster node_id node_214899219332034560   (correct node)

Output produced: none. Its target PR is byte-identical to before it was spawned.

Controls

  • Both were verified remote, not silently placed locally: roster node_id matched the requested node in each case, and a local process search found zero harnesses for either name (the same search returns hits for local lanes, so the instrument works).
  • Local lanes spawned the same way, in the same session, with comparable briefs, survive and produce work — five of them merged PRs today. So this is specific to remote placement, not to the briefs or the workload.
  • Both briefs opened with a mandatory Step 0 environment report explicitly designed to fail loudly ("if you cannot clone or auth, say so and STOP — that is a valuable result, not a workaround"). Neither arrived, so this is not a lane deciding to stay quiet.

Why this matters more than it looks

  1. spawned: true is not arrival. It reports that placement was accepted, not that an agent is alive and has its task. Every consumer of that field currently treats it as success.
  2. The failure is silent in both directions. The agent produces nothing, and the registry keeps a plausible-looking record — lastSeenAt was recent and status read offline, which is the same thing the registry says about agents that are demonstrably alive. Nothing distinguishes "died young" from "thinking".
  3. It defeats distribution entirely. Concentrating work on one node is a single point of failure — but distributing it currently means the work silently does not happen. Today that cost the critical path of a 5-day outage roughly 20 minutes and a stalled PR.
  4. It blocks on-demand node provisioning (see [factory] Provision an on-demand sandbox node when no eligible node is live or all are saturated factory#336). Provisioning a sandbox node is not the hard part; arrival proof is. A node that comes up and accepts placements whose agents then die is worse than no node, because placement reports success.

What would close this

  • An arrival proof distinct from placement acceptance: the agent reporting in under its own identity. Until an agent speaks, a spawn is pending, not successful.
  • A death signal. Right now the only way to distinguish a dead remote agent from a working one is to attach and read the error. That should not require a human.
  • Ideally, the reason. These may be dying for a mundane cause — no credential, no disk, no model credits, a missing runtime — but nothing surfaces it, which is the actual defect. A remote lane that cannot start should say why.

Reproduction

Spawn any agent with target_node set to a live remote node and a brief whose first instruction is to send a DM. Observe spawned: true, observe registration, then attach after ~15 minutes. Compare against the identical spawn with target_node set to the local broker, which survives.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions