Skip to content

docs: add Brev troubleshooting guide#2722

Merged
miyoungc merged 14 commits into
NVIDIA:mainfrom
hemachandra666:docs/troubleshoot-brev
May 9, 2026
Merged

docs: add Brev troubleshooting guide#2722
miyoungc merged 14 commits into
NVIDIA:mainfrom
hemachandra666:docs/troubleshoot-brev

Conversation

@hemachandra666
Copy link
Copy Markdown
Contributor

@hemachandra666 hemachandra666 commented Apr 29, 2026

docs(get-started): add Brev troubleshooting guide

Summary

Adds a troubleshooting guide for common issues when running NemoClaw
on Brev. Covers blocked skills, read-only openclaw.json, dashboard
connectivity loss, and skill install failures. Based on real first-hand
experience deploying NemoClaw via the Brev web UI on April 29, 2026.

Related Issue

None

Changes

  • Added docs/get-started/troubleshoot-brev.md
  • Covers 4 common Brev deployment issues with workarounds
  • Documents which skills work by default on Brev (3 of 51)
  • Documents openclaw.json read-only workaround
  • Documents dashboard connectivity fix after extended uptime

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
  • make 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)

AI Disclosure

  • AI-assisted — tool: Claude (claude.ai)

Signed-off-by: Kunchala Hema Sai Venkat Chandra Kumar kumarchanduk@gmail.com

Summary by CodeRabbit

  • Documentation
    • Added a Brev troubleshooting guide with four user-focused remediation flows: enable bundled skills by ensuring required platform binaries and credentials are present and rebuilding the environment; work around sandbox file-permission issues by applying config changes from the host or restarting the environment; recover dashboard access after long uptimes by creating a snapshot and re-onboarding; and fix unresponsive install buttons by adding needed dependencies to the sandbox image and rebuilding.

docs(get-started): add Brev troubleshooting guide

Signed-off-by: Kunchala Hema Sai Venkat Chandra Kumar <kumarchanduk@gmail.com>
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented Apr 29, 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
Contributor

coderabbitai Bot commented Apr 29, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new "Brev" troubleshooting section to the docs describing remediation steps for OpenClaw on Brev: blocked skills, permission errors when setting config, restoring an unreachable dashboard, and fixes for non-functional skill install buttons.

Changes

Brev Troubleshooting Guide

Layer / File(s) Summary
Overview / Entry
docs/reference/troubleshooting.md
Adds a new Brev-specific troubleshooting subsection and links to Brev Web UI get-started guide.
Blocked Skills Causes & Fix
docs/reference/troubleshooting.md
Documents three causes for OpenClaw skills showing blocked on Brev (macOS-only binaries, missing CLI binaries in sandbox image, missing external API credentials) and instructs updating Dockerfile.base and running nemoclaw <name> rebuild.
Config Permission Workaround
docs/reference/troubleshooting.md
Explains openclaw config set failures after nemoclaw <name> shields up due to root-owned, read-only /sandbox/.openclaw/openclaw.json and prescribes host-side nemoclaw <name> config set ... --restart.
Dashboard Connectivity Restore
docs/reference/troubleshooting.md
Describes snapshot-first (nemoclaw <name> snapshot create) flow and re-running nemoclaw onboard to restore an OpenClaw dashboard that becomes unreachable after extended uptime.
Skill Install Button Fix
docs/reference/troubleshooting.md
Explains that installs must occur inside the sandbox; instructs adding required dependency binaries to the sandbox image and rebuilding (nemoclaw <name> rebuild) when install buttons do not work.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 I hopped through docs with nimble feet,
Brev's quirks I catalogued, neat and sweet,
Blocked skills, configs, dashboard sigh—
Rebuild, snapshot, restart to retry,
A sandbox fixed, my tail a happy beat.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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.
Title check ✅ Passed The title accurately summarizes the main change: adding a Brev troubleshooting guide to the documentation.

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

✨ 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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
docs/get-started/troubleshoot-brev.md (2)

39-42: ⚡ Quick win

Convert passive phrasing to active voice.

Examples include “are blocked,” “cannot be enabled,” and “is owned… and mounted…”. Rewriting these in active voice will align with doc style.

As per coding guidelines, “Active voice required. Flag passive constructions.”

Also applies to: 63-63, 87-88

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/troubleshoot-brev.md` around lines 39 - 42, Rewrite the
passive sentences in the shown lines into active voice: change "are blocked" to
an active subject (e.g., "The sandbox blocks skills that require macOS-only
binaries such as `memo`, `remindctl`, or `grizzly`"), change "are blocked" for
CLI and credential lines similarly (e.g., "The sandbox blocks skills that
require additional CLIs..." and "Skills that require API credentials remain
blocked until you configure those credentials"), and apply the same active-voice
rewrite to the other flagged locations (lines noted as 63 and 87-88) so each
sentence uses a clear subject performing the action rather than passive
constructions like "cannot be enabled" or "is owned… and mounted…".

32-43: ⚡ Quick win

Replace bold pseudo-headings with real section structure (LLM pattern detected).

The repeated **Symptom.**, **Cause.**, **Fix.**, and **Workaround.** pattern reads like generated formatting and is better expressed as H3 subheadings under each H2.

As per coding guidelines, unnecessary bold on routine instructions should be flagged (“LLM pattern detected”), and sections should use H2/H3 structure.

Also applies to: 79-90, 136-144, 160-168

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/get-started/troubleshoot-brev.md` around lines 32 - 43, Replace the bold
pseudo-headings like "**Symptom.**", "**Cause.**", "**Fix.**", and
"**Workaround.**" with proper Markdown heading structure: make the section title
(e.g., "Troubleshooting Brev" or existing H2) an H2 and convert each
pseudo-heading into an H3 (e.g., "### Symptom", "### Cause", "### Fix", "###
Workaround"); remove unnecessary bolding on routine instructions and ensure
consistency across the document (apply the same replacement for the other
occurrences noted around lines 79-90, 136-144, and 160-168) so headings are
semantic and not LLM-style bold fragments.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/get-started/troubleshoot-brev.md`:
- Line 99: The ordered list in the markdown (starting at the item "Copy the
config file to a writable location.") uses mixed numeric markers; update each
ordered-list marker for that entire list so every item uses "1." (normalize
markers to "1." per MD029) — apply the same change to the other listed locations
(the items at the equivalents of lines 107, 113, and 121) so the whole ordered
list(s) consistently use "1." for each entry.
- Around line 18-21: The SPDX header in the Markdown HTML comment block uses the
year range "2025-2026" but our repo requires the exact 2026 format string;
update the SPDX comment (the block containing SPDX-FileCopyrightText and
SPDX-License-Identifier) by replacing "2025-2026" with "2026" so the header
matches the required SPDX-FileCopyrightText format for Markdown files.

---

Nitpick comments:
In `@docs/get-started/troubleshoot-brev.md`:
- Around line 39-42: Rewrite the passive sentences in the shown lines into
active voice: change "are blocked" to an active subject (e.g., "The sandbox
blocks skills that require macOS-only binaries such as `memo`, `remindctl`, or
`grizzly`"), change "are blocked" for CLI and credential lines similarly (e.g.,
"The sandbox blocks skills that require additional CLIs..." and "Skills that
require API credentials remain blocked until you configure those credentials"),
and apply the same active-voice rewrite to the other flagged locations (lines
noted as 63 and 87-88) so each sentence uses a clear subject performing the
action rather than passive constructions like "cannot be enabled" or "is owned…
and mounted…".
- Around line 32-43: Replace the bold pseudo-headings like "**Symptom.**",
"**Cause.**", "**Fix.**", and "**Workaround.**" with proper Markdown heading
structure: make the section title (e.g., "Troubleshooting Brev" or existing H2)
an H2 and convert each pseudo-heading into an H3 (e.g., "### Symptom", "###
Cause", "### Fix", "### Workaround"); remove unnecessary bolding on routine
instructions and ensure consistency across the document (apply the same
replacement for the other occurrences noted around lines 79-90, 136-144, and
160-168) so headings are semantic and not LLM-style bold fragments.
🪄 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: 33983fbd-e760-4d7d-9637-b66b39a5f9ff

📥 Commits

Reviewing files that changed from the base of the PR and between 8591a2f and 7a68311.

📒 Files selected for processing (1)
  • docs/get-started/troubleshoot-brev.md

Comment thread docs/get-started/troubleshoot-brev.md Outdated
Comment thread docs/get-started/troubleshoot-brev.md Outdated
@miyoungc
Copy link
Copy Markdown
Collaborator

Thank you for the contribution. Please migrate the content to the existing troubleshooting page. And please make sure the content you have created follows the existing formatting in the central troubleshooting page.

@miyoungc miyoungc added the documentation Improvements or additions to documentation label Apr 30, 2026
@hemachandra666
Copy link
Copy Markdown
Contributor Author

Thank you for the guidance, @miyoungc. I will migrate the content to the existing troubleshooting page and match the existing formatting. Will push the update shortly.

Signed-off-by: Kunchala Hema Sai Venkat Chandra Kumar <kumarchanduk@gmail.com>
Content migrated to docs/reference/troubleshooting.md Brev section.

Signed-off-by: Kunchala Hema Sai Venkat Chandra Kumar <kumarchanduk@gmail.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
docs/reference/troubleshooting.md (1)

903-911: ⚡ Quick win

Rewrite these lines to active voice and direct second-person guidance.

This block uses passive constructions (“Skills are blocked…”, “can be enabled/unblocked…”). Prefer direct active phrasing with “you” to match docs voice rules.

As per coding guidelines, “Active voice required.” and “Second person (‘you’) when addressing the reader.”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/troubleshooting.md` around lines 903 - 911, Rewrite the
paragraph to use active voice and address the reader as "you": replace passive
sentences like "Skills are blocked for one of three reasons" with "A skill is
blocked for one of three reasons" or "You may find a skill blocked for one of
three reasons," and convert "Skills that require macOS-only binaries cannot be
enabled on Brev" to "You cannot enable skills that require macOS-only binaries
on Brev." Also change "can be unblocked by installing" to "You can unblock
skills that require Linux-compatible CLIs by installing the required binary on
the Brev host." Ensure examples remain (memo, remindctl, grizzly, gh, Notion API
key, Discord bot token) and keep the three bullet causes but phrased directly to
the reader.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/reference/troubleshooting.md`:
- Around line 955-957: Update the CLI example to use the correct command order:
replace the incorrect "nemoclaw <name> onboard" instance with "nemoclaw onboard"
in the docs so the onboarding example matches the actual CLI flow and will not
confuse readers; ensure any surrounding text or examples that reference the
wrong form are updated to the canonical "nemoclaw onboard" usage.
- Line 959: The sentence "This restores the gateway connection without deleting
the sandbox or losing workspace files." makes an absolute guarantee; reword it
to remove the hard safety claim by qualifying the outcome and noting possible
exceptions (e.g., onboarding may recreate resources depending on state or
prompts). Replace the sentence with a cautious alternative such as: "This
typically restores the gateway connection and does not usually delete the
sandbox or cause workspace file loss, but depending on system state or
onboarding prompts resources may be recreated." Ensure the new text replaces the
original sentence in the troubleshooting entry.

---

Nitpick comments:
In `@docs/reference/troubleshooting.md`:
- Around line 903-911: Rewrite the paragraph to use active voice and address the
reader as "you": replace passive sentences like "Skills are blocked for one of
three reasons" with "A skill is blocked for one of three reasons" or "You may
find a skill blocked for one of three reasons," and convert "Skills that require
macOS-only binaries cannot be enabled on Brev" to "You cannot enable skills that
require macOS-only binaries on Brev." Also change "can be unblocked by
installing" to "You can unblock skills that require Linux-compatible CLIs by
installing the required binary on the Brev host." Ensure examples remain (memo,
remindctl, grizzly, gh, Notion API key, Discord bot token) and keep the three
bullet causes but phrased directly to the reader.
🪄 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: 7d95d754-c273-45a4-be18-076fda66e830

📥 Commits

Reviewing files that changed from the base of the PR and between 7a68311 and 46874fe.

📒 Files selected for processing (1)
  • docs/reference/troubleshooting.md

Comment thread docs/reference/troubleshooting.md
Comment thread docs/reference/troubleshooting.md Outdated
@hemachandra666
Copy link
Copy Markdown
Contributor Author

@miyoungc Done. I have migrated the content to the existing troubleshooting page at docs/reference/troubleshooting.md as a new Brev section. The standalone file has been removed. Please let me know if any further changes are needed.

Copy link
Copy Markdown
Collaborator

@miyoungc miyoungc left a comment

Choose a reason for hiding this comment

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

I checked the Brev troubleshooting additions against the current NemoClaw CLI and sandbox docs. A few items below need accuracy fixes before this merges.

Comment thread docs/reference/troubleshooting.md
Comment thread docs/reference/troubleshooting.md Outdated
Comment thread docs/reference/troubleshooting.md Outdated
Comment thread docs/reference/troubleshooting.md
Comment thread docs/reference/troubleshooting.md
Comment thread docs/reference/troubleshooting.md
Comment thread docs/reference/troubleshooting.md Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
docs/reference/troubleshooting.md (2)

1044-1044: ⚡ Quick win

Use active voice.

"has been run" is passive. Rewrite to active voice.

Suggested revision:

-When `nemoclaw <name> shields up` has been run, `openclaw.json` is owned by root and mounted read-only inside the sandbox.
+After you run `nemoclaw <name> shields up`, `openclaw.json` becomes owned by root and is mounted read-only inside the sandbox.

As per coding guidelines: "Active voice required. Flag passive constructions."

🤖 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 `@docs/reference/troubleshooting.md` at line 1044, Rewrite the passive sentence
into active voice: replace "When `nemoclaw <name> shields up` has been run,
`openclaw.json` is owned by root and mounted read-only inside the sandbox." with
an active formulation, e.g. "When you run `nemoclaw <name> shields up`, the
sandbox mounts `openclaw.json` as a read-only file owned by root." Use the
command `nemoclaw <name> shields up`, the filename `openclaw.json`, and
"sandbox" to locate the sentence to update.

1051-1051: ⚡ Quick win

Use active voice.

"is writable by the sandbox user" is passive. Rewrite to active voice.

Suggested revision:

-In the default sandbox state (before `shields up`), `openclaw.json` is writable by the sandbox user.
+In the default sandbox state (before `shields up`), the sandbox user can write to `openclaw.json`.

As per coding guidelines: "Active voice required. Flag passive constructions."

🤖 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 `@docs/reference/troubleshooting.md` at line 1051, Rewrite the passive sentence
"In the default sandbox state (before `shields up`), `openclaw.json` is writable
by the sandbox user." into active voice so the subject performs the action; for
example, make it "In the default sandbox state (before `shields up`), the
sandbox user can write to `openclaw.json`." Ensure `openclaw.json` and the
parenthetical `shields up` remain intact.
🤖 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.

Nitpick comments:
In `@docs/reference/troubleshooting.md`:
- Line 1044: Rewrite the passive sentence into active voice: replace "When
`nemoclaw <name> shields up` has been run, `openclaw.json` is owned by root and
mounted read-only inside the sandbox." with an active formulation, e.g. "When
you run `nemoclaw <name> shields up`, the sandbox mounts `openclaw.json` as a
read-only file owned by root." Use the command `nemoclaw <name> shields up`, the
filename `openclaw.json`, and "sandbox" to locate the sentence to update.
- Line 1051: Rewrite the passive sentence "In the default sandbox state (before
`shields up`), `openclaw.json` is writable by the sandbox user." into active
voice so the subject performs the action; for example, make it "In the default
sandbox state (before `shields up`), the sandbox user can write to
`openclaw.json`." Ensure `openclaw.json` and the parenthetical `shields up`
remain intact.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 11c2fca9-bdbe-4f63-b6ec-c14b6b310110

📥 Commits

Reviewing files that changed from the base of the PR and between 3eec345 and ed47194.

📒 Files selected for processing (1)
  • docs/reference/troubleshooting.md

Comment thread docs/reference/troubleshooting.md Outdated
Copy link
Copy Markdown
Collaborator

@miyoungc miyoungc left a comment

Choose a reason for hiding this comment

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

Accuracy note on the Brev troubleshooting fixes.

Comment thread docs/reference/troubleshooting.md Outdated
@miyoungc miyoungc enabled auto-merge (squash) May 8, 2026 23:58
@miyoungc miyoungc disabled auto-merge May 9, 2026 00:09
@miyoungc miyoungc changed the title docs(get-started): add Brev troubleshooting guide docs: add Brev troubleshooting guide May 9, 2026
Copy link
Copy Markdown
Collaborator

@miyoungc miyoungc left a comment

Choose a reason for hiding this comment

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

Lint fix suggestion for markdownlint MD031.

Comment thread docs/reference/troubleshooting.md
@hemachandra666
Copy link
Copy Markdown
Contributor Author

Thank you for the thorough review and all the direct fixes, @miyoungc . The PR looks ready from my side. Please let me know if there is anything else needed to get the workflows approved for merge.

@miyoungc miyoungc merged commit 34d9f61 into NVIDIA:main May 9, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants