Skip to content

docs(network-policy): clarify Homebrew is preinstalled after #3916#3946

Merged
ericksoa merged 3 commits into
NVIDIA:mainfrom
latenighthackathon:docs/clarify-brew-baked-in-3916
May 21, 2026
Merged

docs(network-policy): clarify Homebrew is preinstalled after #3916#3946
ericksoa merged 3 commits into
NVIDIA:mainfrom
latenighthackathon:docs/clarify-brew-baked-in-3916

Conversation

@latenighthackathon

@latenighthackathon latenighthackathon commented May 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates the network-policy docs and the brew preset description so users know that the brew binary already ships in the sandbox base image after #3916, and the brew preset is the only step needed before installing a formula.

Problem

Before #3916 landed, the brew preset only granted network egress and assumed Homebrew was already on PATH. Several pages still describe brew as a generic package-manager preset without mentioning that the binary is now baked into the image, so a new user following the integration policy examples can be left looking for a separate bootstrap step that no longer applies. This PR brings those pages and the preset description in line with the post-#3916 flow.

Changes

  • docs/network-policy/integration-policy-examples.mdx: add a short "Homebrew Specifics" subsection under Package and Model Tooling that explains the post-feat(sandbox): bake Homebrew core into the sandbox base image (#3913) #3916 flow with a concrete policy-add brew + exec -- brew install example, and notes that no separate Homebrew bootstrap, build dependency install, or brew shellenv step is required.
  • docs/security/best-practices.mdx: expand the brew preset row in the policy preset table to note that the binary is preinstalled and the preset only opens network egress to GitHub and the Homebrew formulae index.
  • nemoclaw-blueprint/policies/presets/brew.yaml: clarify in the preset description and a YAML comment that the brew binary is preinstalled (referencing [Sandbox] brew policy preset cannot bootstrap Homebrew: sandbox lacks filesystem write to /home/linuxbrew #3913).
  • .agents/skills/nemoclaw-user-{configure-security,manage-policy}/references/*.md: regenerated via the canonical docs-to-skills invocation so the agent skill mirrors stay in sync with the source pages.

Test plan

  • python3 scripts/docs-to-skills.py docs/ .agents/skills/ --prefix nemoclaw-user --doc-platform fern-mdx: skill regen runs to completion and only touches the two expected reference mirrors.
  • Pre-commit + pre-push hooks (markdownlint-cli2, Verify docs-to-skills output, Test (skills YAML), Source-shape test budget, TypeScript (CLI), gitleaks, NEMOCLAW_* env-var doc gate, etc.) all pass on the docs-only diff.

Signed-off-by: latenighthackathon latenighthackathon@users.noreply.github.com

Summary by CodeRabbit

  • Documentation
    • Expanded security best-practices entry for the Homebrew preset to explain what the preset enables and the risk of installing arbitrary packages.
    • Added a “Homebrew Specifics” integration guide with usage examples showing how to apply the preset and run brew installs in the sandbox.
    • Clarified that Homebrew is preinstalled in the sandbox base image and that the preset grants outbound access to fetch formulae/bottles.

Review Change Stack

@copy-pr-bot

copy-pr-bot Bot commented May 21, 2026

Copy link
Copy Markdown

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

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

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: 5ceac853-2cd6-468d-aeff-f2ff892ec11f

📥 Commits

Reviewing files that changed from the base of the PR and between 90714bb and 78d69a6.

📒 Files selected for processing (5)
  • .agents/skills/nemoclaw-user-configure-security/references/best-practices.md
  • .agents/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md
  • docs/network-policy/integration-policy-examples.mdx
  • docs/security/best-practices.mdx
  • nemoclaw-blueprint/policies/presets/brew.yaml
✅ Files skipped from review due to trivial changes (4)
  • .agents/skills/nemoclaw-user-configure-security/references/best-practices.md
  • .agents/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md
  • docs/network-policy/integration-policy-examples.mdx
  • nemoclaw-blueprint/policies/presets/brew.yaml

📝 Walkthrough

Walkthrough

This PR clarifies that Homebrew is preinstalled in the NemoClaw sandbox, expands the brew preset description to note outbound access for brew install, and adds “Homebrew Specifics” integration examples showing preset application and brew install usage.

Changes

Homebrew preset documentation clarification

Layer / File(s) Summary
Brew preset configuration
nemoclaw-blueprint/policies/presets/brew.yaml
The brew preset description comment expanded to clarify that the brew binary is preinstalled in the sandbox base image and that the preset grants only the network egress needed for brew install bottle downloads.
Security best-practices documentation
.agents/skills/nemoclaw-user-configure-security/references/best-practices.md, docs/security/best-practices.mdx
Updated the brew preset row in the "Policy Presets" table to detail what the preset enables (preinstalled brew binary and outbound access to GitHub/Homebrew bottles) while preserving the existing risk statement about installing arbitrary Homebrew packages.
Integration usage examples
.agents/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md, docs/network-policy/integration-policy-examples.mdx
Added "Homebrew Specifics" sections explaining Homebrew is preinstalled in the sandbox base image, that applying the brew preset is sufficient before installing formulas, that /usr/local/bin/brew is on PATH, and providing example nemoclaw commands for preset application and brew install.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested labels

documentation

Suggested reviewers

  • miyoungc
  • ericksoa

Poem

🐰 A rabbit found brew waiting in the den,
No bootstrap, no fuss, just a symlink then.
Docs now whisper paths and network gates,
Preset applied, the sandbox happily updates.
Hopping off, clarity in tiny paws.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: documentation clarification that Homebrew is preinstalled after PR #3916, which matches all five files updated in this changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

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

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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

@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: 2

🤖 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
@.agents/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md:
- Around line 216-217: Rewrite the two passive sentences into active voice:
change "Homebrew (Linuxbrew) is preinstalled in the sandbox base image" to an
active construction that names the actor (e.g., "The sandbox base image includes
Homebrew (Linuxbrew)") and change "The `brew` entry point is symlinked into
`/usr/local/bin`, which is already on the sandbox `PATH`" to an active form that
names who performed the action or states the fact directly (e.g., "We/The image
symlinked the `brew` entry point into `/usr/local/bin`, which is already on the
sandbox `PATH`"), keeping the rest of the explanation about running `brew
install <formula>` unchanged and preserving references to `brew`,
`/usr/local/bin`, and `PATH`.

In `@docs/network-policy/integration-policy-examples.mdx`:
- Around line 231-232: Rewrite the two passive sentences into active voice:
replace "Homebrew (Linuxbrew) is preinstalled in the sandbox base image" with an
active construction like "The sandbox base image includes Homebrew (Linuxbrew)"
and replace "The `brew` entry point is symlinked into `/usr/local/bin`, which is
already on the sandbox `PATH`" with an active construction like "We symlink the
`brew` entry point into `/usr/local/bin`, which is already on the sandbox
`PATH`" (or similar active phrasing) so the paragraph reads actively and still
conveys that applying the `brew` preset is the only step and that the agent can
run `brew install <formula>` directly.
🪄 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: 54d209a4-f8f5-4739-a155-daf69fcad8ac

📥 Commits

Reviewing files that changed from the base of the PR and between 36d8e2d and 5fd5a8b.

📒 Files selected for processing (5)
  • .agents/skills/nemoclaw-user-configure-security/references/best-practices.md
  • .agents/skills/nemoclaw-user-manage-policy/references/integration-policy-examples.md
  • docs/network-policy/integration-policy-examples.mdx
  • docs/security/best-practices.mdx
  • nemoclaw-blueprint/policies/presets/brew.yaml

Comment thread docs/network-policy/integration-policy-examples.mdx Outdated


After NVIDIA#3916 baked Homebrew (Linuxbrew) into the sandbox base image,
the brew preset is the only step needed before installing a formula.
Update the integration policy examples, the security best-practices
preset table, and the brew preset description to reflect the new
flow so users no longer expect a separate Homebrew bootstrap.

Signed-off-by: latenighthackathon <latenighthackathon@users.noreply.github.com>
Rewrites the two passive sentences flagged by review in the new
Homebrew Specifics subsection and the brew preset row of the
security best-practices table, and regenerates the matching agent
skill mirrors. No content change beyond voice; the post-NVIDIA#3916
flow (apply preset, then brew install) is unchanged.

Signed-off-by: latenighthackathon <latenighthackathon@users.noreply.github.com>
@latenighthackathon latenighthackathon force-pushed the docs/clarify-brew-baked-in-3916 branch from dcd5a82 to 78d69a6 Compare May 21, 2026 03:59
@ericksoa ericksoa self-assigned this May 21, 2026

@ericksoa ericksoa 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.

Reviewed against current main. No blockers found: the Homebrew docs match the post-#3916 base-image state, the /usr/local/bin/brew shim is present in Dockerfile.base, the brew preset allows that entry point, the changed skill mirrors match the source docs, and the visible CI checks are green.

@ericksoa ericksoa merged commit cfa817b into NVIDIA:main May 21, 2026
17 checks passed
miyoungc added a commit that referenced this pull request May 21, 2026
## Summary
Refreshes NemoClaw release notes for v0.0.47 and v0.0.48, then
regenerates the corresponding user-skill references so agent-facing docs
match the source pages.

Preview:
https://nvidia-preview-docs-release-notes-47-48.docs.buildwithfern.com/nemoclaw/about/release-notes

## Changes
- Adds explicit v0.0.47 and v0.0.48 sections to
`docs/about/release-notes.mdx`.
- Documents follow-up WSL Ollama, sandbox image, share mount, and
troubleshooting updates from recent release changes.
- Regenerates `nemoclaw-user-*` skill references from the Fern MDX
source docs.

## Source Summary
- #4003 -> `docs/about/release-notes.mdx`: Notes the messaging manifest
registry work as part of v0.0.48 release coverage.
- #3984 -> `docs/about/release-notes.mdx`: Captures Hermes messaging
policy scoping in the v0.0.48 release notes.
- #3963 -> `docs/about/release-notes.mdx`: Captures DGX Spark Hermes GPU
recreation startup recovery in the v0.0.48 release notes.
- #3961 -> `docs/about/release-notes.mdx`: Captures Discord loopback
proxy routing in the v0.0.48 release notes.
- #3940 -> `docs/about/release-notes.mdx`: Captures installer prompt
clarification and express-install behavior in the v0.0.48 release notes.
- #3946 -> `docs/about/release-notes.mdx`: Carries forward the Homebrew
preinstall clarification in release coverage.
- #3937 -> `docs/about/release-notes.mdx`: Carries forward the dashboard
URL command and post-install next steps coverage.
- #3921 -> `docs/about/release-notes.mdx`: Carries forward managed vLLM
default behavior for DGX Spark and DGX Station.
- #3931 -> `docs/about/release-notes.mdx`,
`docs/reference/architecture.mdx`: Documents the sandbox `python` to
`python3` compatibility symlink.
- #1485 -> `docs/about/release-notes.mdx`,
`docs/reference/architecture.mdx`: Documents the sandbox image Docker
health check.
- #3784 -> `docs/about/release-notes.mdx`: Captures VM-driver snapshot
health-check reliability in release notes.
- #3917 -> `docs/about/release-notes.mdx`: Captures package-based
workspace template resolution in release notes.
- #3170 -> `docs/about/release-notes.mdx`: Captures installer checksum
compatibility from preferring `sha256sum`.
- #3898 -> `docs/about/release-notes.mdx`: Adds v0.0.47 release coverage
for messaging provider scenario validation.
- #3897 -> `docs/about/release-notes.mdx`: Adds v0.0.47 release coverage
for baseline onboarding scenario validation.
- #3834 -> `docs/about/release-notes.mdx`: Adds v0.0.47 release coverage
for PR review advisor automation.
- #3838 -> `docs/about/release-notes.mdx`: Adds v0.0.47 release coverage
for CLI display registry refactoring.

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

## Verification
- [x] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [x] 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)

`make docs` was attempted but could not complete because `npx fern-api`
failed with `403 Forbidden` from `https://registry.npmjs.org/fern-api`
in this environment. Pre-commit and pre-push hooks passed after
refreshing the local CLI build output with `npm run build:cli`; no build
artifacts were committed.

---
Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

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

* **Documentation**
* Added WSL onboarding notes for Windows-host Ollama detection, restart
guidance, and PowerShell checks.
* Clarified express-install behavior (non-interactive, sudo prompts) and
default sandbox policy selection.
* Added Windows preparation guidance when installer tooling is missing
(winget/App Installer or Docker Desktop).
* Expanded sandbox docs with Docker health checks, Homebrew/python
compatibility helpers, share-mount path validation, Discord
troubleshooting, and new v0.0.48/v0.0.47 release notes.
* **Chores**
  * Improved docs preview workflow error handling.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/4007?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@wscurran wscurran added bug-fix PR fixes a bug or regression area: docs Documentation, examples, guides, or docs build and removed fix labels Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: docs Documentation, examples, guides, or docs build bug-fix PR fixes a bug or regression v0.0.49 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants