Skip to content

feat: add openclaw integration to harbor, run smoke tests#1945

Draft
soluwalana wants to merge 2 commits into
NVIDIA:topic/harborfrom
soluwalana:nat-176/solu
Draft

feat: add openclaw integration to harbor, run smoke tests#1945
soluwalana wants to merge 2 commits into
NVIDIA:topic/harborfrom
soluwalana:nat-176/solu

Conversation

@soluwalana
Copy link
Copy Markdown

@soluwalana soluwalana commented May 15, 2026

Summary

Adds a built-in OpenClaw agent (-a openclaw) that runs openclaw agent --local --json in the trial container. Harbor/task settings are merged into openclaw.json, and we write a Harbor ATIF v1.7 trajectory.json from the CLI output and openclaw.session.jsonl.

NeMo Flow is optional and comes from the published plugin npm:nemo-flow-openclaw@0.2.0-rc.3 (ATIF under /logs/agent/nemo-flow-atif), using the current upstream openclaw.plugin.json layout.

Behavior

  • Install: Root packages (curl, CA certs); Node 22 via NVM; global OpenClaw; npm retries only on npm install -g (not on openclaw plugins install); optional NeMo plugin install with --force when NeMo is on.
  • Config: Baseline workspace + gateway; NVIDIA base URL / models aligned for nvidia/*; tools deny rules suited for headless runs; user openclaw_config merged last.
  • Run: Writes openclaw.upload.json, runs openclaw setup, copies config to ~/.openclaw/openclaw.json, optional skills sync, runs the agent with logs to /logs/agent/openclaw.txt, best-effort copy of session JSONL into logs.
  • After run: trajectory.json from parsed JSON; if session JSONL replay works and use_openclaw_session_jsonl_for_steps is true (default in this change), use multi-step ATIF from the session file; otherwise fall back to the simpler 2-step envelope mapping.

Agent options: enable_nemo_flow (default on), openclaw_config, use_openclaw_session_jsonl_for_steps.

Tests

tests/unit/agents/installed/test_openclaw.py: factory wiring, config merge (NeMo + NVIDIA + MCP), envelope vs session trajectories, setup timeout propagation.

Follow-ups / risks

  • Every image setup installs global OpenClaw + optional NeMo plugin—may want caching or pinning if CI gets slow or flaky.
  • Defaulting session JSONL to on changes trajectory shape when that file exists; confirm that matches product expectations vs. always using the envelope summary.
  • NeMo version is pinned to 0.2.0-rc.3; later we can decide constant vs. config for bumps.

Closes: NAT-174 NAT-176

By Submitting this PR I confirm:

  • I am familiar with the Contributing Guidelines.
  • We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license.
    • Any contribution which contains commits that are not Signed-Off will not be accepted.
  • When the PR is ready for review, new or existing tests cover these changes.
  • When the PR is ready for review, the documentation is up to date with these changes.

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 15, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8eeca728-15f4-4fdb-b760-5b57778f1a56

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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

Signed-off-by: Sam Oluwalana <soluwalana@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant