Skip to content

install: add one-line bootstrap setup#22

Open
fuller-stack-dev wants to merge 1 commit intoxDarkicex:mainfrom
fuller-stack-dev:feat/one-line-install
Open

install: add one-line bootstrap setup#22
fuller-stack-dev wants to merge 1 commit intoxDarkicex:mainfrom
fuller-stack-dev:feat/one-line-install

Conversation

@fuller-stack-dev
Copy link
Copy Markdown
Collaborator

@fuller-stack-dev fuller-stack-dev commented Apr 13, 2026

Summary

  • add a root install.sh bootstrap so users can set up LibraVDB Memory with a single curl ... | bash command
  • update the README and install docs to use the new one-liner, the full Homebrew formula path, and openclaw gateway restart in the manual flow
  • clarify that openclaw plugins install @xdarkicex/openclaw-memory-libravdb now auto-selects the dual memory/context-engine slots on supported OpenClaw builds

Testing

  • bash -n install.sh
  • bash -lc 'brew(){ printf \"brew %s\\n\" \"$*\"; }; openclaw(){ case \"$1 ${2-}\" in \"health \") return 0 ;; \"gateway restart\") printf \"openclaw gateway restart\\n\" ;; \"memory status\") printf \"openclaw memory status\\n\" ;; *) printf \"openclaw %s\\n\" \"$*\" ;; esac; }; export -f brew openclaw; ./install.sh'
  • bash -lc 'brew(){ printf \"brew %s\\n\" \"$*\"; }; openclaw(){ case \"$1 ${2-}\" in \"health \") return 1 ;; \"memory status\") return 1 ;; *) printf \"openclaw %s\\n\" \"$*\" ;; esac; }; export -f brew openclaw; ./install.sh'
  • pnpm check (currently fails on the existing repo issue scripts/setup.ts(11,31): Could not find a declaration file for module './child-env.js'; unrelated to this PR)

Summary by CodeRabbit

  • New Features

    • Added automated bootstrap installation script for streamlined setup
  • Documentation

    • Updated macOS installation instructions with simplified single-command bootstrap setup
    • Plugin slots now auto-configured on supported builds; manual configuration no longer required
    • Simplified Homebrew daemon installation commands

Collapse the supported Homebrew flow into a single installer script and document that plugin install now auto-selects the dual memory/context-engine slots. This removes the stale manual config step from the primary install path.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 13, 2026

📝 Walkthrough

Walkthrough

Installation documentation and a new bootstrap script are introduced to simplify the setup process. The changes consolidate multi-step Homebrew installation flows into a single remote install.sh | bash command, update manual configuration guidance to reflect automatic slot assignment, and introduce a Bash script that orchestrates formula installation, service startup, plugin installation, and gateway restart.

Changes

Cohort / File(s) Summary
Documentation Updates
README.md, docs/install.md, docs/installation.md
Quick Start and installation guides updated to present a unified bootstrap setup path using remote install.sh script instead of separate Homebrew tap/install steps. Manual sections expanded to include openclaw gateway restart. Plugin configuration guidance simplified to reflect auto-slot selection on supported builds; explicit sidecarPath configuration noted as optional for non-default endpoints.
Installation Script
install.sh
New Bash installation script with strict error handling, colored logging helpers, and dependency checks. Orchestrates formula installation, service startup via brew services, plugin installation, conditional gateway restart, and readiness verification via openclaw memory status.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

documentation

Suggested reviewers

  • xDarkicex

Poem

🐰 Install once, install right,
A script glows in the night,
No taps, no fuss—just bash and brew,
Bootstrap magic, fresh and new!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'install: add one-line bootstrap setup' accurately summarizes the main change—adding a new install.sh script that enables one-liner setup with curl | bash.

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

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

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

Copy link
Copy Markdown

@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 (3)
install.sh (3)

33-37: Potential race condition between service start and plugin use.

brew services start returns immediately after requesting the service to start, but the daemon may not be fully ready to accept RPC connections when the plugin installation begins. If openclaw plugins install or subsequent commands attempt to communicate with the daemon before it's listening, they may fail transiently.

Consider adding a brief poll or sleep to ensure the daemon is ready:

🔧 Suggested wait-for-ready loop
 info "Starting the ${FORMULA_NAME} service..."
 brew services start "${FORMULA_NAME}"
+
+info "Waiting for ${FORMULA_NAME} to become ready..."
+for i in {1..10}; do
+  if openclaw memory status >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done

 info "Installing the OpenClaw plugin and selecting its slots..."
 openclaw plugins install "${PLUGIN_SPEC}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@install.sh` around lines 33 - 37, There is a race between calling brew
services start "${FORMULA_NAME}" and immediately invoking openclaw plugins
install "${PLUGIN_SPEC}"; add a wait-for-ready loop after the brew services
start that polls the daemon until it accepts connections (for example by
retrying a lightweight CLI check like openclaw status or attempting the daemon
TCP port) with a short sleep/backoff and an overall timeout, then proceed to run
openclaw plugins install once the check succeeds to avoid transient failures.

14-17: Consider quoting color codes to avoid interpretation issues in some shells.

The color escape sequences work in most environments, but using $'...' syntax or quoting can prevent edge-case issues with certain terminal configurations.

✨ Optional: Use $'...' syntax for robustness
-info()  { printf "${CYAN}[install]${NC} %s\n" "$*"; }
-ok()    { printf "${GREEN}[install]${NC} %s\n" "$*"; }
-warn()  { printf "${YELLOW}[install]${NC} %s\n" "$*" >&2; }
-die()   { printf "${RED}[install]${NC} %s\n" "$*" >&2; exit 1; }
+info()  { printf '%b[install]%b %s\n' "${CYAN}" "${NC}" "$*"; }
+ok()    { printf '%b[install]%b %s\n' "${GREEN}" "${NC}" "$*"; }
+warn()  { printf '%b[install]%b %s\n' "${YELLOW}" "${NC}" "$*" >&2; }
+die()   { printf '%b[install]%b %s\n' "${RED}" "${NC}" "$*" >&2; exit 1; }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@install.sh` around lines 14 - 17, The color escape variables used in the
printing helpers (info, ok, warn, die) should be quoted to avoid shell
interpretation issues; update the printf format strings to use quoted or
$'...'-style strings for the color codes (the CYAN, GREEN, YELLOW, RED and NC
usages) inside info, ok, warn, and die so escape sequences are preserved
reliably across shells, e.g., change the printf format arguments to use quoted
escape sequences rather than unquoted interpolation.

46-52: Consider distinguishing between "not ready yet" and actual failures.

The current message "Verification did not pass yet" is appropriate for timing issues, but openclaw memory status can also fail due to misconfigurations (wrong endpoint, plugin not loaded). The follow-up advice to "start or restart" the gateway may not address all failure modes.

📝 Optional: More specific failure guidance
 info "Verifying memory status..."
 if openclaw memory status; then
   ok "LibraVDB Memory is installed and ready."
 else
   warn "Verification did not pass yet."
-  warn "If the gateway was not running, start or restart it, then rerun: openclaw memory status"
+  warn "Possible causes: gateway not running, daemon still starting, or plugin not loaded."
+  warn "Try: openclaw gateway restart && sleep 2 && openclaw memory status"
 fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@install.sh` around lines 46 - 52, The "openclaw memory status" block should
distinguish transient "not ready yet" from real failures: capture the command's
exit status and stderr/stdout when running openclaw memory status, and branch on
known failure patterns (e.g., connection refused, endpoint misconfigured, plugin
not loaded) versus a non-ready state; update the messages in the else branch
(the warn calls) to show the captured error details and offer specific next
steps (e.g., check gateway endpoint, ensure plugin is loaded, inspect logs)
rather than always suggesting only "start or restart" the gateway; reference the
existing invocation openclaw memory status and the warn/ok messages to locate
where to add the output capture and conditional messaging.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@install.sh`:
- Around line 33-37: There is a race between calling brew services start
"${FORMULA_NAME}" and immediately invoking openclaw plugins install
"${PLUGIN_SPEC}"; add a wait-for-ready loop after the brew services start that
polls the daemon until it accepts connections (for example by retrying a
lightweight CLI check like openclaw status or attempting the daemon TCP port)
with a short sleep/backoff and an overall timeout, then proceed to run openclaw
plugins install once the check succeeds to avoid transient failures.
- Around line 14-17: The color escape variables used in the printing helpers
(info, ok, warn, die) should be quoted to avoid shell interpretation issues;
update the printf format strings to use quoted or $'...'-style strings for the
color codes (the CYAN, GREEN, YELLOW, RED and NC usages) inside info, ok, warn,
and die so escape sequences are preserved reliably across shells, e.g., change
the printf format arguments to use quoted escape sequences rather than unquoted
interpolation.
- Around line 46-52: The "openclaw memory status" block should distinguish
transient "not ready yet" from real failures: capture the command's exit status
and stderr/stdout when running openclaw memory status, and branch on known
failure patterns (e.g., connection refused, endpoint misconfigured, plugin not
loaded) versus a non-ready state; update the messages in the else branch (the
warn calls) to show the captured error details and offer specific next steps
(e.g., check gateway endpoint, ensure plugin is loaded, inspect logs) rather
than always suggesting only "start or restart" the gateway; reference the
existing invocation openclaw memory status and the warn/ok messages to locate
where to add the output capture and conditional messaging.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 66703d8a-bbe8-47c9-8248-58b054aaa54b

📥 Commits

Reviewing files that changed from the base of the PR and between ba33103 and 677ddf5.

📒 Files selected for processing (4)
  • README.md
  • docs/install.md
  • docs/installation.md
  • install.sh

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