NVIDIA / NVIDIA/OpenShell

sandbox_child_nproc_limit` (PR #1497) merged 2026-05-27 but absent from all release binaries through v0.0.82

Open
#2,339 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:triage-needed
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

Agent Diagnostic
  • Investigated with Claude (agent-driven diagnosis on a 19-sandbox Docker-driver fleet)
  • Tested OpenShell v0.0.72 (CLI/gateway/sandbox from GitHub release assets, x86_64-unknown-linux-gnu)
  • Checked latest releases: downloaded release assets v0.0.74/76/78/80/82 and scanned both
    openshell-gateway and openshell-sandbox binaries with strings — no
    sandbox_child_nproc_limit / nproc_limit / RLIMIT_NPROC-related config token in any of them
    (only Z3 "inprocess" noise in the gateway)
  • Cross-checked GitHub: PR #1497 merged into main 2026-05-27 (commit 9bfcad4); the
    branch_commits/tag-containment view lists it as reachable from v0.0.51+, contradicting the
    binary contents
  • Functional test on v0.0.72: added sandbox_child_nproc_limit = 4096 under
    [openshell.drivers.docker] and [openshell.gateway] — gateway starts either way, but a bogus
    test field is also silently accepted in both tables, so acceptance proves nothing
  • Recreated a sandbox from scratch after the config change: in-sandbox sessions still show
    Max processes 512 in /proc//limits
  • Searched existing issues for sandbox_child_nproc_limit / nproc: found #1390 / #1325
    (shared-UID fleet reports) and PR #1497 itself, but no issue about the feature missing from
    release binaries
  • Cannot upgrade to a fixed version because no published release contains the feature (verified
    through v0.0.82)
Description

Summary

PR #1497 ("Make sandbox child nproc limit configurable", merged into main on 2026-05-27 as commit 9bfcad4) adds the sandbox_child_nproc_limit setting to lift the hardcoded RLIMIT_NPROC=512 for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.

Evidence

  1. String scan: strings openshell-gateway | grep -i nproc (and the same for openshell-sandbox) on release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) shows no nproc_limit / RLIMIT_NPROC / sandbox_child_nproc token — only Z3 inprocess noise in the gateway.
  2. Functional test on v0.0.72 (Docker driver): adding sandbox_child_nproc_limit = 4096 under [openshell.drivers.docker] or [openshell.gateway] is silently accepted (note: a bogus test field is also silently accepted in both tables, so unknown TOML fields appear to be ignored), and a freshly recreated sandbox still shows Max processes 512 for all in-sandbox sessions.

Expected

A published release ships PR #1497, so sandbox_child_nproc_limit = 4096 (or 0 to defer to the container cgroup pids limit) takes effect for newly created sandbox sessions.

Questions

  1. Which release is expected to ship PR #1497?
  2. Are the GitHub release assets built from a branch other than the tagged main history? (Tag-containment view vs. binary content disagree.)
  3. Is the silent acceptance of unknown fields in [openshell.gateway] / [openshell.drivers.docker] intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected.

Context / impact

19-sandbox single-host fleet (Docker driver); all sandbox inner sessions share one UID. At ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic prlimit --nproc=8192 systemd timer and would like to retire it.

Environment: openshell 0.0.72 (CLI/gateway/sandbox from GitHub release assets), Docker driver, Ubuntu host, NemoClaw v0.0.81+ (source main).

Reproduction Steps

Summary

PR #1497 ("Make sandbox child nproc limit configurable", merged into main on 2026-05-27 as commit 9bfcad4) adds the sandbox_child_nproc_limit setting to lift the hardcoded RLIMIT_NPROC=512 for shared-UID fleet deployments. GitHub's tag-containment view lists the commit as reachable from tags v0.0.51 onward, but the published release binaries do not contain the feature.

Evidence

  1. String scan: strings openshell-gateway | grep -i nproc and same for openshell-sandbox from release assets v0.0.72, v0.0.74, v0.0.76, v0.0.78, v0.0.80, v0.0.82 (*-x86_64-unknown-linux-gnu.tar.gz) show no nproc_limit / RLIMIT_NPROC / sandbox_child_nproc token (only Z3 inprocess noise in the gateway).
  2. Functional test on v0.0.72 (Docker driver): adding sandbox_child_nproc_limit = 4096 under [openshell.drivers.docker] or [openshell.gateway] is silently accepted (note: unknown TOML fields appear to be silently ignored in both tables — a bogus test field is also accepted), and a freshly recreated sandbox still shows Max processes 512 for all in-sandbox sessions.

Questions

  1. Which release is expected to ship PR #1497?
  2. Are the GitHub release assets built from a branch other than the tagged main history? (Tag-containment view vs. binary content disagree.)
  3. Is the silent acceptance of unknown fields in [openshell.gateway] / [openshell.drivers.docker] intended? v0.0.54 notes say unknown fields in nested gateway config tables are rejected; that made our config validation attempts inconclusive.

Context / impact

19-sandbox single-host fleet, all sandbox inner sessions share one UID; at ~30–50 threads per sandbox the fleet saturates the hardcoded 512 and any new fork fails with EAGAIN (see also #1390 / #1325). We currently mitigate with a periodic prlimit --nproc=8192 systemd timer and would like to retire it.

Environment: openshell 0.0.72 (CLI/gateway/sandbox from GitHub release assets), Docker driver, Ubuntu host, NemoClaw v0.0.81+ (source main).

Environment
  • OS: Ubuntu 24.04 (Nutanix VM)
  • Docker: Docker Engine 29.1.3 (Docker driver)
  • OpenShell: v0.0.72 (openshell 0.0.72; CLI/gateway/sandbox binaries from GitHub release assets)
  • Latest release checked: yes — downloaded and string-scanned release assets up to v0.0.82; feature absent in all of them
  • Possible duplicates checked: yes — found #1390 / #1325 (shared-UID nproc saturation reports) and PR #1497 itself; no existing issue about the feature missing from release binaries
  • Agent stack: NemoClaw v0.0.81+ (source main) with Hermes Agent v0.18.0, 19-sandbox fleet
Logs
# String scan of v0.0.82 release assets (same result for v0.0.74–v0.0.80 and v0.0.72):
$ strings openshell-gateway | grep -ioE "[a-z_]*nproc[a-z_]*" | sort -u
inprocess
inprocessing
(only Z3 solver noise; no config token)
$ strings openshell-sandbox | grep -ioE "[a-z_]*nproc[a-z_]*" | sort -u
(no matches)
$ grep -ac "nproc_limit" openshell openshell-gateway openshell-sandbox
openshell:0
openshell-gateway:0
openshell-sandbox:0

# Functional test on v0.0.72: config accepted, no effect
$ grep -n nproc openshell-gateway.toml
32:sandbox_child_nproc_limit = 4096
$ pgrep -af openshell-gateway   # gateway starts fine with the field present
2592034 openshell-gateway[nemoclaw=nemoclaw;port=8080]

# Freshly recreated sandbox after the config change:
$ docker exec <sandbox> sh -c 'for p in $(pgrep -f "hermes|socat"|head -3); do grep -i processes /proc/$p/limits; done'
Max processes             512                  512                  processes
Max processes             512                  512                  processes
Max processes             512                  512                  processes

# Bogus-field control test (shows unknown fields are silently ignored, both tables):
$ grep -n bogus openshell-gateway.toml
33:bogus_test_field_xyz = 1
$ pgrep -af openshell-gateway   # still starts
2592100 openshell-gateway[nemoclaw=nemoclaw;port=8080]
Agent-First Checklist
  • I pointed my agent at the repo and had it investigate this issue
  • I loaded relevant skills (e.g., debug-openshell-cluster, debug-inference, openshell-cli)
  • I checked the latest OpenShell release and either reproduced the issue there or explained why I cannot upgrade/test it
  • I searched existing issues for possible duplicates or explained why I could not
  • My agent could not resolve this — the diagnostic above explains why

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing PR #1497 at commit 9bfcad4 through the release assets for v0.0.72–v0.0.82 and the tagged build history. Compare the binaries with the source behavior for sandbox_child_nproc_limit and inspect how unknown configuration fields are handled in the gateway and Docker driver. Done means identifying the release/build discrepancy and confirming a published binary applies the setting and validates configuration as intended.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, rust
Domain
build-system, release
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.