Skip to content

fix(onboard): pin OpenClaw home/state/workspace env in sandbox#4766

Merged
cv merged 6 commits into
mainfrom
fix/4709-pin-openclaw-workspace-env
Jun 4, 2026
Merged

fix(onboard): pin OpenClaw home/state/workspace env in sandbox#4766
cv merged 6 commits into
mainfrom
fix/4709-pin-openclaw-workspace-env

Conversation

@laitingsheng

@laitingsheng laitingsheng commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Workspace-installed OpenClaw skills disappear from openclaw skills list inside the sandbox because the upstream skill loader can fall back to a hardcoded DEFAULT_AGENT_WORKSPACE_DIR that drifts from where install wrote. Inject OPENCLAW_HOME, OPENCLAW_STATE_DIR, and OPENCLAW_WORKSPACE_DIR at sandbox creation and propagate them into the sandbox's runtime shell rc so install and list resolve identical paths regardless of the base-image HOME.

Related Issue

Fixes #4709

Changes

  • src/lib/onboard/openclaw-runtime-env.ts: new helper appendOpenClawRuntimeEnvArgs(envArgs, agent) that derives OPENCLAW_HOME, OPENCLAW_STATE_DIR, and OPENCLAW_WORKSPACE_DIR from agent.configPaths.dir and gates injection to OpenClaw agents only so non-OpenClaw sandboxes (e.g. Hermes) do not pick up cross-agent state.
  • src/lib/onboard/openclaw-runtime-env.test.ts: unit tests for the helper covering default dir, OpenClaw configured dir, missing configPaths, append semantics, and Hermes-skip.
  • src/lib/onboard.ts: call the new helper from createSandbox; collapse the adjacent appendHermesDashboardEnvArgs call to keep onboard.ts net-neutral against the codebase-growth-guardrails budget.
  • scripts/nemoclaw-start.sh: add OPENCLAW_WORKSPACE_DIR to the env-name list that write_runtime_shell_env emits into /tmp/nemoclaw-proxy-env.sh, so the new var reaches every shell spawned by openshell sandbox exec (not only nemoclaw-start).
  • test/onboard.test.ts: extend the existing dashboard-port envArgs test with regex assertions on the three new pins in the sandbox create command.
  • test/e2e/test-openclaw-skill-cli-e2e.sh: new deterministic E2E with 7 phases — pre-flight runtime env propagation, write SKILL.md inside sandbox /tmp, openclaw skills install <path>, on-disk check at $OPENCLAW_WORKSPACE_DIR/skills/<id>, openclaw skills list --json enumeration + source label, openclaw skills info workspace path resolution, and openclaw skills check eligibility.
  • .github/workflows/nightly-e2e.yaml: register openclaw-skill-cli-e2e as a manually dispatchable nightly job. It needs NVIDIA_API_KEY for the same reason skill-agent-e2e does — the install phase onboards a real sandbox via install.sh, which goes through the full inference-provider preflight; there is no fake-provider seam at that layer today.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Tinson Lai tinsonl@nvidia.com

Summary by CodeRabbit

  • New Features

    • Added comprehensive end-to-end testing for OpenClaw skill CLI operations including install, discovery, and validation.
  • Tests

    • Added unit tests for OpenClaw runtime environment configuration to ensure proper directory resolution in sandbox environments.
  • Chores

    • Updated nightly E2E workflow to include new OpenClaw skill CLI test job.

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 36779db7-2b3b-4aed-af5c-4c21626a2a33

📥 Commits

Reviewing files that changed from the base of the PR and between 0cae0e2 and 80c586e.

📒 Files selected for processing (1)
  • test/e2e/test-openclaw-skill-cli-e2e.sh

📝 Walkthrough

Walkthrough

Pins OpenClaw filesystem paths into sandbox runtime env by adding OPENCLAW_HOME, OPENCLAW_STATE_DIR, and OPENCLAW_WORKSPACE_DIR via a new helper; updates createSandbox call site, runtime env script, unit/integration tests, adds a nightly E2E job, and an end-to-end test script validating install/list behavior.

Changes

OpenClaw Directory Pinning

Layer / File(s) Summary
OpenClaw env helper and unit tests
src/lib/onboard/openclaw-runtime-env.ts, src/lib/onboard/openclaw-runtime-env.test.ts
Adds appendOpenClawRuntimeEnvArgs which computes a config dir (defaults to /sandbox/.openclaw) and appends OPENCLAW_HOME, OPENCLAW_STATE_DIR, OPENCLAW_WORKSPACE_DIR env assignments. Unit tests validate defaults, configPaths-derived values, preservation of existing envArgs, and non-injection for other agents.
createSandbox env injection and integration test
src/lib/onboard.ts, test/onboard.test.ts
createSandbox now calls appendOpenClawRuntimeEnvArgs(envArgs, agent) before other env augmentations; the sandbox create test asserts the sandbox command includes the three OPENCLAW_* variables pinned to the sandbox paths.
Runtime proxy env export
scripts/nemoclaw-start.sh
write_runtime_shell_env() now exports OPENCLAW_WORKSPACE_DIR into the generated /tmp/nemoclaw-proxy-env.sh alongside other OPENCLAW_* variables for sandbox connect sessions.

Nightly E2E job and OpenClaw E2E script

Layer / File(s) Summary
Nightly workflow job addition
.github/workflows/nightly-e2e.yaml
Adds openclaw-skill-cli-e2e to the workflow dispatch valid jobs and defines a job that runs test/e2e/test-openclaw-skill-cli-e2e.sh, wires the job into notify/report/scorecard aggregation, and sets timeout/artifact/env_json.
OpenClaw E2E test script
test/e2e/test-openclaw-skill-cli-e2e.sh
New E2E script that installs NemoClaw, verifies Docker and required tooling, checks OPENCLAW_* are exported inside sandbox, creates a temporary skill fixture, runs openclaw skills install, runs openclaw skills list --json and asserts the installed skill is listed, then prints a colored summary and exits appropriately.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#4331: Modifies createSandbox envArgs construction to forward host proxy envs; closely related to env-arg assembly in the same call site.

Suggested labels

v0.0.58, fix, area: sandbox, Integration: OpenClaw, E2E, area: ci

Suggested reviewers

  • prekshivyas
  • cjagwani

Poem

🐰 I hopped through code to tuck a tiny key,

Pinned OPENCLAW paths where sandbox skills should be,
Workspace, state, and home now live inside the shell,
Installs land in place and listings ring the bell,
The rabbit smiles — the CLI can now tell.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and concisely summarizes the main change: pinning OpenClaw environment variables (home/state/workspace) in the sandbox, which directly addresses the root cause of the linked issue.
Linked Issues check ✅ Passed All coding requirements from issue #4709 are met: the PR implements environment variable pinning for OPENCLAW_HOME, OPENCLAW_STATE_DIR, and OPENCLAW_WORKSPACE_DIR; propagates these variables through the sandbox runtime; and includes comprehensive test coverage and e2e validation.
Out of Scope Changes check ✅ Passed All changes directly support the PR objective of fixing workspace skill discovery via environment variable pinning; no unrelated modifications are present outside the scope of issue #4709.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/4709-pin-openclaw-workspace-env

Comment @coderabbitai help to get the list of available commands and usage tips.

@laitingsheng laitingsheng added integration: openclaw OpenClaw integration behavior area: cli Command line interface, flags, terminal UX, or output bug-fix PR fixes a bug or regression labels Jun 4, 2026
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: openclaw-skill-cli-e2e, cloud-onboard-e2e
Optional E2E: skill-agent-e2e, openclaw-onboard-security-posture-e2e

Dispatch hint: openclaw-skill-cli-e2e,cloud-onboard-e2e

Auto-dispatched E2E: cloud-onboard-e2e via nightly-e2e.yaml at 80c586eebfe463fc9697dfe884b449ab115b25c7nightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • openclaw-skill-cli-e2e (medium): Directly validates the changed user flow: after real install/onboard, OPENCLAW_* runtime env vars are exported in the sandbox shell and openclaw skills install, list, info, and check agree on the workspace path.
  • cloud-onboard-e2e (medium): The onboarding path and sandbox create env propagation changed for default OpenClaw sandboxes. This broader onboard smoke validates install, sandbox health, policy/security checks, and inference.local after the runtime env changes.

Optional E2E

  • skill-agent-e2e (medium): Useful adjacent confidence that skill availability still works through the real agent path, not only direct OpenClaw CLI enumeration. It is more LLM-dependent than the targeted CLI E2E, so treat as optional.
  • openclaw-onboard-security-posture-e2e (medium): scripts/nemoclaw-start.sh changes the runtime shell env file contents. This E2E can provide additional confidence that trusted rc/runtime guard behavior remains intact for a non-root host user.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/nightly-e2e.yaml
  • jobs input: openclaw-skill-cli-e2e,cloud-onboard-e2e

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

E2E Scenario Advisor Recommendation

Required scenario E2E: ubuntu-repo-cloud-openclaw
Optional scenario E2E: wsl-repo-cloud-openclaw, gpu-repo-local-ollama-openclaw

Dispatch required scenario E2E:

  • gh workflow run e2e-scenarios.yaml --ref <pr-head-ref> --field scenarios=ubuntu-repo-cloud-openclaw

Workflow run

Full scenario advisor summary

E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required scenario E2E

  • ubuntu-repo-cloud-openclaw: OpenClaw onboarding/runtime env propagation changed in src/lib/onboard.ts and scripts/nemoclaw-start.sh. The primary scenario path is repo-current Ubuntu cloud OpenClaw, which creates a sandbox and runs smoke/baseline onboarding checks against the runtime shell.
    • Dispatch: gh workflow run e2e-scenarios.yaml --ref <pr-head-ref> --field scenarios=ubuntu-repo-cloud-openclaw

Optional scenario E2E

  • wsl-repo-cloud-openclaw: Optional adjacent platform coverage for the same OpenClaw cloud onboarding/runtime environment propagation on WSL.
    • Dispatch: gh workflow run e2e-scenarios.yaml --ref <pr-head-ref> --field scenarios=wsl-repo-cloud-openclaw
  • gpu-repo-local-ollama-openclaw: Optional special-runner coverage for OpenClaw runtime env propagation under the local Ollama/GPU onboarding path.
    • Dispatch: gh workflow run e2e-scenarios.yaml --ref <pr-head-ref> --field scenarios=gpu-repo-local-ollama-openclaw

Relevant changed files

  • scripts/nemoclaw-start.sh
  • src/lib/onboard.ts
  • src/lib/onboard/openclaw-runtime-env.ts

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 1 worth checking, 0 nice ideas
Since last review: 0 prior items resolved, 1 still applies, 0 new items found

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • Secret-bearing target-ref E2E job runs tested-ref code (.github/workflows/nightly-e2e.yaml:150): The new openclaw-skill-cli-e2e job uses the reusable E2E runner with ref set to inputs.target_ref or github.ref, script set to test/e2e/test-openclaw-skill-cli-e2e.sh, and nvidia_api_key enabled. The reusable runner checks out that ref and executes the script from the checked-out repository while exporting NVIDIA_API_KEY. This follows an existing pattern, but this PR expands the manually dispatchable trusted-code boundary for a real secret.
    • Recommendation: Prefer a trusted workflow-ref harness for this CLI-only regression, withhold NVIDIA_API_KEY when workflow_dispatch supplies an explicit target_ref, or add a fake/local provider seam so this validation does not need a real NVIDIA secret for target-ref testing.
    • Evidence: .github/workflows/nightly-e2e.yaml adds openclaw-skill-cli-e2e with ref: ${{ inputs.target_ref || github.ref }}, script: test/e2e/test-openclaw-skill-cli-e2e.sh, and nvidia_api_key: true. .github/workflows/e2e-script.yaml checks out inputs.ref into repo and runs bash "$E2E_SCRIPT" with NVIDIA_API_KEY in the environment.

🌱 Nice ideas

  • None.
Since last review details

Current findings:

  • Secret-bearing target-ref E2E job runs tested-ref code (.github/workflows/nightly-e2e.yaml:150): The new openclaw-skill-cli-e2e job uses the reusable E2E runner with ref set to inputs.target_ref or github.ref, script set to test/e2e/test-openclaw-skill-cli-e2e.sh, and nvidia_api_key enabled. The reusable runner checks out that ref and executes the script from the checked-out repository while exporting NVIDIA_API_KEY. This follows an existing pattern, but this PR expands the manually dispatchable trusted-code boundary for a real secret.
    • Recommendation: Prefer a trusted workflow-ref harness for this CLI-only regression, withhold NVIDIA_API_KEY when workflow_dispatch supplies an explicit target_ref, or add a fake/local provider seam so this validation does not need a real NVIDIA secret for target-ref testing.
    • Evidence: .github/workflows/nightly-e2e.yaml adds openclaw-skill-cli-e2e with ref: ${{ inputs.target_ref || github.ref }}, script: test/e2e/test-openclaw-skill-cli-e2e.sh, and nvidia_api_key: true. .github/workflows/e2e-script.yaml checks out inputs.ref into repo and runs bash "$E2E_SCRIPT" with NVIDIA_API_KEY in the environment.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26950254106
Target ref: c7090b7f53fcf7e13d80c2ce8c5f403e3cdbe65c
Workflow ref: main
Requested jobs: skill-agent-e2e,cloud-onboard-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
skill-agent-e2e ✅ success

…LAW_WORKSPACE_DIR in runtime shell rc

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/lib/onboard.ts (1)

3566-3571: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Line-budget guardrail is currently blocking this change

Line 3566 is fine functionally, but this PR is failing CI because src/lib/onboard.ts is net +1 line. Please reclaim one line in this file before merge (for example by collapsing the adjacent multi-line appendHermesDashboardEnvArgs call).

Possible net-neutral adjustment
-  onboardHermesDashboard.appendHermesDashboardEnvArgs(
-    envArgs,
-    hermesDashboardState,
-    formatEnvAssignment,
-  );
+  onboardHermesDashboard.appendHermesDashboardEnvArgs(envArgs, hermesDashboardState, formatEnvAssignment);

Based on learnings: onboarding changes in src/lib/onboard.ts are constrained by a CI “onboard-entrypoint-budget” line budget; prefer collapsing adjacent calls to stay net-neutral.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lib/onboard.ts` around lines 3566 - 3571, The file has a +1 line net
change due to the two adjacent calls; collapse the multi-line call to
onboardHermesDashboard.appendHermesDashboardEnvArgs into the previous line (or
combine both calls onto a single line) so that
require("./onboard/openclaw-runtime-env").appendOpenClawRuntimeEnvArgs(envArgs,
agent); and onboardHermesDashboard.appendHermesDashboardEnvArgs(envArgs,
hermesDashboardState, formatEnvAssignment); occupy fewer lines and restore
net-neutral line budget; keep the same argument order and names (envArgs, agent,
hermesDashboardState, formatEnvAssignment) and do not change any functionality.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@src/lib/onboard.ts`:
- Around line 3566-3571: The file has a +1 line net change due to the two
adjacent calls; collapse the multi-line call to
onboardHermesDashboard.appendHermesDashboardEnvArgs into the previous line (or
combine both calls onto a single line) so that
require("./onboard/openclaw-runtime-env").appendOpenClawRuntimeEnvArgs(envArgs,
agent); and onboardHermesDashboard.appendHermesDashboardEnvArgs(envArgs,
hermesDashboardState, formatEnvAssignment); occupy fewer lines and restore
net-neutral line budget; keep the same argument order and names (envArgs, agent,
hermesDashboardState, formatEnvAssignment) and do not change any functionality.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 482ce9b9-162a-4a0b-9fab-fbb7770c16fe

📥 Commits

Reviewing files that changed from the base of the PR and between c7090b7 and 7fea05a.

📒 Files selected for processing (5)
  • scripts/nemoclaw-start.sh
  • src/lib/onboard.ts
  • src/lib/onboard/openclaw-runtime-env.test.ts
  • src/lib/onboard/openclaw-runtime-env.ts
  • test/onboard.test.ts
✅ Files skipped from review due to trivial changes (1)
  • scripts/nemoclaw-start.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/onboard.test.ts

…collapse Hermes dashboard call to keep onboard.ts net-neutral

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26951755601
Target ref: 7fea05a76ca95fad969acc482341edbc8227e589
Workflow ref: main
Requested jobs: cloud-onboard-e2e,skill-agent-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
skill-agent-e2e ✅ success

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26952229228
Target ref: dc68db72a9f5af903fe6ff29d6058cde67cc8204
Workflow ref: main
Requested jobs: cloud-onboard-e2e,skill-agent-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
skill-agent-e2e ✅ success

… list roundtrip

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/e2e/test-openclaw-skill-cli-e2e.sh`:
- Line 1: The new E2E test script test-openclaw-skill-cli-e2e.sh was added under
the legacy test/e2e/ boundary which is blocked by the repository growth
guardrail; move this new test file out of test/e2e/ into the approved location
(e.g., tests/e2e-scenario/) or, if intentionally adding it under test/e2e/,
include the necessary guardrail exception/update in
.github/workflows/codebase-growth-guardrails.yaml as part of the same PR so the
repository growth checks will allow the added lines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 14e74f21-c2aa-4f6a-ad18-ad40fea89294

📥 Commits

Reviewing files that changed from the base of the PR and between dc68db7 and 0cae0e2.

📒 Files selected for processing (2)
  • .github/workflows/nightly-e2e.yaml
  • test/e2e/test-openclaw-skill-cli-e2e.sh

Comment thread test/e2e/test-openclaw-skill-cli-e2e.sh
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26953084892
Target ref: 0cae0e2d6d284a547f0d6b07466e565cf92027f9
Workflow ref: main
Requested jobs: cloud-onboard-e2e
Summary: 0 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ⚠️ cancelled

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26953366040
Target ref: 0cae0e2d6d284a547f0d6b07466e565cf92027f9
Workflow ref: main
Requested jobs: openclaw-skill-cli-e2e
Summary: 0 passed, 0 failed, 0 skipped

Job Result
openclaw-skill-cli-e2e ❓ not reported

Missing requested jobs: openclaw-skill-cli-e2e. The reporting workflow needs to include these jobs.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26953484481
Target ref: fix/4709-pin-openclaw-workspace-env
Requested jobs: openclaw-skill-cli-e2e
Summary: 0 passed, 1 failed, 0 skipped

Job Result
openclaw-skill-cli-e2e ❌ failure

Failed jobs: openclaw-skill-cli-e2e. Check run artifacts for logs.

…c arg newline rejection

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26953911689
Target ref: fix/4709-pin-openclaw-workspace-env
Requested jobs: openclaw-skill-cli-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
openclaw-skill-cli-e2e ✅ success

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26954366805
Target ref: 3f8463fc6a3d34e21dedf2216933be989713d3cc
Workflow ref: main
Requested jobs: cloud-onboard-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success

@laitingsheng laitingsheng added area: e2e End-to-end tests, nightly failures, or validation infrastructure and removed area: cli Command line interface, flags, terminal UX, or output labels Jun 4, 2026
…k phases, strip issue refs from comments

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26955219528
Target ref: fix/4709-pin-openclaw-workspace-env
Requested jobs: openclaw-skill-cli-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
openclaw-skill-cli-e2e ✅ success

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26955457721
Target ref: 80c586eebfe463fc9697dfe884b449ab115b25c7
Workflow ref: main
Requested jobs: cloud-onboard-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success

@laitingsheng laitingsheng added the v0.0.59 Release target label Jun 4, 2026
@prekshivyas prekshivyas self-assigned this Jun 4, 2026

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — approving. Verified against source:

  • appendOpenClawRuntimeEnvArgs derives the three pins from agent.configPaths.dir (real field — AgentDefinition in agent/defs.ts:88/:404), and the agent?.configPaths?.dir || "/sandbox/.openclaw" fallback mirrors the existing installer convention in skill-install.ts:119 exactly. That's the crux of the #4709 fix: OPENCLAW_STATE_DIR = configDir and OPENCLAW_WORKSPACE_DIR = configDir/workspace now resolve to the same root the installer writes to, so install and list stop drifting. Non-OpenClaw agents (Hermes, name !== "openclaw") are correctly skipped; null → OpenClaw defaults, consistent with skill-install.
  • nemoclaw-start.sh: OPENCLAW_HOME/OPENCLAW_STATE_DIR were already in the runtime-shell propagation list; adding OPENCLAW_WORKSPACE_DIR reuses the same single-quote-escaped emission, so all three reach openshell sandbox exec shells.
  • onboard.ts integration is behavior-preserving — the appendHermesDashboardEnvArgs collapse is just the net-neutral line-budget adjustment (CodeRabbit's "Major" finding is already satisfied; codebase-growth-guardrails passes). Same args, same order.

Unit tests cover default/configured/missing-configPaths/append/Hermes-skip; CI is green. CodeRabbit's e2e-location finding was correctly refuted by the author.

One note, not blocking: the cross-component contract (OpenClaw honoring these vars so install/list converge) is exercised only by the new test-openclaw-skill-cli-e2e.sh, which is a manually-dispatched nightly needing NVIDIA_API_KEY — so it isn't covered by PR CI. The NemoClaw-side arg construction and propagation are unit-tested, which is the part this repo owns. Good to merge.

@cv cv merged commit 0d9220b into main Jun 4, 2026
98 of 99 checks passed
@cv cv deleted the fix/4709-pin-openclaw-workspace-env branch June 4, 2026 17:45
cv pushed a commit that referenced this pull request Jun 5, 2026
## Summary
- Add the v0.0.59 release notes from the GitHub announcement discussion.
- Refresh local inference and credential-storage guidance for the
current release behavior.
- Regenerate the user skills from the updated Fern docs.
- Tighten release-prep and docs review guidance for generated skills, PR
labels, and shared `$$nemoclaw` command placeholders.

## Verification
- `python3 scripts/docs-to-skills.py docs/ .agents/skills/ --prefix
nemoclaw-user --doc-platform fern-mdx`
- `rg "permissive mode|shields down|shields up|shields status|config
rotate-token|rotate-token" --glob '*.{md,mdx}'`
- `git diff --check`
- `npm run docs` (rerun outside sandbox after sandbox-only `tsx` IPC
permission failure)
- `npm run typecheck:cli`
- Pre-commit hooks during commit passed, including markdownlint,
docs-to-skills verification, gitleaks, commitlint, and skills YAML
tests.

## Source Summary
- #3679, #4437, #4681, #4766, #4772, #4775, #4786 ->
`docs/about/release-notes.mdx`, `docs/reference/commands.mdx`,
`docs/reference/troubleshooting.mdx`: Summarize OpenClaw 2026.5.27
compatibility, runtime path pinning, plugin registry recovery, live
gateway reconciliation, and clearer host-alias/startup diagnostics.
- #4332, #4402, #4769, #4776, #4779 -> `docs/about/release-notes.mdx`,
`docs/inference/inference-options.mdx`,
`docs/inference/use-local-inference.mdx`,
`docs/inference/switch-inference-providers.mdx`: Document the release
inference changes covering Local NIM waits, Hermes Anthropic routing,
Nemotron 3 Ultra, the current Ollama starter fallback, and Spark
managed-vLLM context length.
- #4628, #4652, #4733, #4745 -> `docs/about/release-notes.mdx`,
`docs/security/credential-storage.mdx`,
`docs/manage-sandboxes/messaging-channels.mdx`,
`docs/reference/troubleshooting.mdx`: Capture permission healing,
gateway-stored credential reuse, cross-sandbox messaging credential
conflict checks, and CDI preflight diagnostics.
- #4728, #4737, #4743, #4744, #4782 -> `.agents/skills/nemoclaw-user-*`:
Regenerate the user skill references from the updated source docs.
- Follow-up maintenance ->
`.agents/skills/nemoclaw-contributor-update-docs/SKILL.md`,
`.coderabbit.yaml`: Add release-prep area labels for docs and skills
PRs, and teach docs review guidance that `$$nemoclaw` is the correct
shared command placeholder for examples that work across agent aliases.

Note: the `documentation` label was not present in the repository, so
this PR is labeled with `v0.0.59` only.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
  * Updated default model for local Ollama inference setup to qwen3.5:9b
  * Added Nemotron 3 Ultra 550B as an NVIDIA Endpoints model option
* Clarified credential storage and reuse behavior for post-deployment
(day-two) operations
* Added v0.0.59 release notes covering OpenClaw compatibility, inference
options, Hermes messaging sync, and troubleshooting
* Clarified CLI selection guidance and updated OpenClaw version example
in status output
* Revised release-prep instructions and docs review guidance for CLI
alias usage
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
cv added a commit that referenced this pull request Jun 5, 2026
…ng onboard (#4598)

## Summary

Two preflight cleanup paths assumed the OpenShell gateway and dashboard
forward were process-wide singletons. When a second NemoClaw onboard ran
with `NEMOCLAW_GATEWAY_PORT=N`, the preflight retired the existing
per-port gateway as "legacy" and killed the first sandbox's dashboard
SSH forward — leaving the first sandbox unreachable. This PR scopes both
cleanups so the second instance starts its own gateway alongside the
first instead of replacing it.

## Related Issue

Fixes #4422 · Refs #3053

#4422 is the specific SIGKILL-on-second-onboard symptom: a second
onboard with `NEMOCLAW_GATEWAY_PORT=N` destroyed the previous instance's
per-port gateway and dashboard forward. This PR fixes both preflight
cleanups so concurrent onboards no longer step on each other.

#3053 is the broader ask — full multi-instance segregation of registry,
credentials, snapshots, messaging, and lifecycle behind a configurable
`NEMOCLAW_INSTANCE` identity. That work is out of scope here and tracked
separately; this PR removes the destructive cross-talk that previously
prevented two NemoClaw-managed sandboxes from coexisting at all, but
does not yet introduce the instance identity primitive.

## Changes

- `src/lib/onboard/machine/handlers/gateway.ts`: skip
`retireLegacyGatewayForDockerDriverUpgrade` when `gatewayReuseState ===
"foreign-active"`. A foreign-active gateway is another sandbox's
per-port `nemoclaw-<port>` — not legacy state to retire. Normalises to
`"missing"` so the current onboard proceeds with its own per-port
gateway alongside.
- `src/lib/onboard.ts`: dashboard-port preflight no longer kills an
"orphaned SSH port-forward" when `openshell forward list` shows the port
is held by another live sandbox. The runtime allocator picks a different
dashboard port for this sandbox at create time instead.
- `src/lib/onboard/machine/handlers/gateway.test.ts`: unit test for the
foreign-active no-retire branch.
- `test/e2e/test-concurrent-gateway-ports.sh`: new E2E that onboards two
sandboxes (default + `NEMOCLAW_GATEWAY_PORT=18080`), asserts both reach
`Ready`, distinct gateway ports (8080 + 18080), distinct dashboard ports
(18789 + 18790), and that destroying one leaves the other intact. Each
sandbox is queried via its own gateway with `openshell sandbox list -g
<gateway-name>` so the global active-gateway pointer does not flip the
read.
- `.github/workflows/nightly-e2e.yaml`: registers
`concurrent-gateway-ports-e2e` in the dispatchable-jobs catalog, `needs`
lists, and the advisor comment block. Also documents existing
`openclaw-skill-cli-e2e` and `channels-add-remove-e2e` in the catalog so
the PR-review E2E advisor surfaces them when relevant changes land —
catches up leftover automation from PRs #4766 (#4709 OpenClaw skill CLI)
and #4745 (#3895 channels add/remove) where the tests shipped but were
never advertised to the advisor.

## Type of Change

- [x] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Verification

- [x] `npx prek run --all-files` passes
- [x] `npm test` passes
- [x] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [ ] Docs updated for user-facing behavior changes
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Manage concurrent gateway ports safely across multiple sandboxes on
the same host.

* **Bug Fixes**
* Improved cleanup for orphaned SSH port-forwards that block dashboard
ports.

* **Tests**
  * Added E2E test validating concurrent gateway-port scenarios.
* Added/updated unit tests for gateway-state and orphaned-forward
handling.

* **Chores**
* Added nightly E2E workflow job for concurrent gateway port testing and
integrated it into reporting.

* **Documentation**
  * Expanded nightly E2E job documentation for related tests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: e2e End-to-end tests, nightly failures, or validation infrastructure bug-fix PR fixes a bug or regression integration: openclaw OpenClaw integration behavior v0.0.59 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Ubuntu 26.04][Agent&Skills] openclaw skills list does not show workspace-installed skills after openclaw skills install

4 participants