Skip to content

GetInferenceRoute intermittently returns NOT_FOUND (~51% of calls), aborting dcode -n non-interactive turns #2915

Description

@reqsgjh

User Story

As an operator running multiple long-lived NemoClaw sandboxes (LangChain Deep Agents Code / dcode) against NVIDIA-hosted inference for an unattended, cron-driven agent loop, I need dcode -n non-interactive turns to complete reliably so that a multi-step agentic task (several tool calls in one turn) isn't aborted mid-way by the gateway itself.

Problem Statement

Roughly half of all dcode -n non-interactive turns that make more than a couple of tool calls abort with Unexpected error (correlation_id=...) inside dcode, and the sandbox's nemoclaw <name> exec ... -- dcode -n "..." wrapper reports managed non-interactive error: error_class=unknown category=unknown retryable=false.

Correlating the gateway's own request log (openshell-gateway.log) against every failure's correlation_id, each failure lines up with the same internal pattern: the gateway issues a POST /openshell.inference.v1.Inference/GetInferenceRoute call that succeeds (status=200, no gRPC error), then immediately (within ~1ms) issues a second GetInferenceRoute call for the same request that returns rpc.grpc.status_code=5 (NOT_FOUND) despite http.response.status_code=200. This paired-call/second-fails pattern is the only anomaly in the log at each failure timestamp.

Impact / Why This Matters

  • Across today's session, 53 of 104 GetInferenceRoute calls (51%) returned this NOT_FOUND, spanning from 02:22 UTC (before any of my sessions started) through the most recent attempt, and surviving an OpenShell server restart that already happened in between (Starting OpenShell server logged twice: 02:22:08 and 02:35:05).
  • Reproduced identically across three different backing models on three separate sandboxes — nvidia/nemotron-3-ultra-550b-a55b, nvidia/nemotron-3-super-120b-a12b, and minimaxai/minimax-m3 — ruling out a model-specific cause; the failure is below the model-selection layer.
  • Practically, users must retry the entire dcode -n turn from scratch (a fresh gateway session/correlation_id) — a same-turn retry is not possible since retryable=false. In an unattended/cron-driven setup this means ~50% of scheduled work cycles are silently wasted and must wait for the next cron tick, roughly doubling end-to-end latency for any multi-tool-call task.
  • No workaround exists inside the sandbox or via nemoclaw CLI: nemoclaw <name> gateway restart is unsupported for the langchain-deepagents-code agent ("LangChain Deep Agents Code has no gateway runtime"), and restarting the shared OpenShell server did not clear the underlying issue earlier today.

Acceptance Criteria

  • A dcode -n non-interactive turn with several sequential tool calls no longer aborts with Unexpected error / managed non-interactive error: error_class=unknown due to a GetInferenceRoute NOT_FOUND.
  • GetInferenceRoute calls succeed consistently for a sandbox with a valid, active inference route (no spurious immediate re-call/NOT_FOUND pair after a successful 200/no-error response).
  • If a route genuinely becomes stale/invalid mid-session, the gateway either recovers automatically or returns an error that dcode classifies as retryable=true, rather than aborting the whole turn.

Reproduction Steps

  1. nemoclaw onboard --non-interactive --yes --name <sandbox> --agent langchain-deepagents-code ... against an NVIDIA-hosted model (nvidia-prod / build provider).
  2. Run nemoclaw <sandbox> exec --workdir /sandbox/<project> --timeout 1500 -- dcode -n "<a task prompt requiring the model to read several files via read_file/ls before writing anything>" several times in a row (a handful of runs is enough to reproduce; roughly 1 in 2 fails).
  3. Observe dcode's own output: several tool calls succeed, then Unexpected error (correlation_id=<id>) and the process exits non-zero.
  4. Tail ~/.local/state/nemoclaw/openshell-docker-gateway/openshell-gateway.log around that timestamp and look for a GetInferenceRoute request immediately followed by another GetInferenceRoute request with rpc.grpc.status_code=5.

Environment

  • NemoClaw: v0.0.109
  • OpenShell: 0.0.101 (docker driver)
  • OS: Ubuntu 24.04.4 LTS
  • Docker: 29.1.3 (build 29.1.3-0ubuntu3~24.04.2)
  • Runtime/integration: NemoClaw-managed langchain-deepagents-code (dcode v0.1.34) sandboxes, inference provider build (NVIDIA-hosted), models nvidia/nemotron-3-ultra-550b-a55b, nvidia/nemotron-3-super-120b-a12b, minimaxai/minimax-m3 — same failure on all three.

Logs

managed non-interactive error: error_class=unknown category=unknown retryable=false correlation_id=01a03631-51a5-7053-a922-5557a8a6f9d0
...
Unexpected error (correlation_id=01a03631-51a5-7053-a922-5557a8a6f9d0)

Matching pair from openshell-gateway.log at the same time as one such failure (request IDs and sandbox IDs are random UUIDs, not credentials):

2026-08-24T23:53:04.440400Z INFO request{method=POST path="/openshell.inference.v1.Inference/GetInferenceRoute" request_id="999a794f-24f0-468d-8665-81e5c0564a15" ... http.response.status_code=200}: response status=200 latency_ms=0
2026-08-24T23:53:04.441564Z INFO request{method=POST path="/openshell.inference.v1.Inference/GetInferenceRoute" request_id="d302fc56-930c-4eaa-a392-7d4ea33b1fca" ... http.response.status_code=200 rpc.grpc.status_code=5 otel.status_code="ERROR"}: response status=200 latency_ms=0

Six more occurrences of the identical paired-call pattern were observed at 22:42:24, 22:43:08, 22:45:00, 22:45:10, 23:22:28, and 23:51:50 UTC in the same session, each within ~1-2ms of a dcode turn aborting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    state:needs-infoAssessment needs specific evidence or reproduction details

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions