Skip to content

Latest commit

 

History

411 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenClaw Homebrew Tap

Homebrew Tap banner

Homebrew tap for shipping OpenClaw CLI tools.

Install

brew tap openclaw/tap

Install Packages

# formula
brew install openclaw/tap/<name>

# cask
brew install --cask openclaw/tap/<name>

Packages

Formulae

  • axorc — Inspect and automate macOS Accessibility from the shell
  • clawscan — Agent-skill security scanner harness for ClawHub
  • clawdex — Local-first address book backed by Markdown
  • crabbox — Remote Linux test boxes for dirty worktrees and CI hydration
  • crabfleet — Fleet management CLI for Crabbox workers
  • crawlbar — macOS menu bar control plane for local-first crawler CLIs
  • discrawl — Mirror Discord into SQLite and search server history locally
  • gitcrawl — Local GitHub issue and PR archive, search, and clustering
  • gogcli — Google CLI for Gmail, Calendar, Drive, Docs, Sheets, and more
  • goplaces — Go client and CLI for the Google Places API (New)
  • graincrawl — Local-first Granola crawler into SQLite and Markdown
  • notcrawl — Local-first Notion crawler into SQLite and normalized Markdown
  • ocm — Manage isolated OpenClaw environments, runtimes, and services
  • octopool — Org-authenticated GitHub read relay and gh-compatible cache shim
  • peekaboo — Capture macOS screenshots and automate the desktop
  • slacrawl — Go-based CLI for mirroring Slack workspace data into local SQLite
  • telecrawl — Telegram Desktop archive CLI with encrypted Git backups
  • wacli — WhatsApp CLI built on whatsmeow
  • wacrawl — Read-only WhatsApp Desktop archive CLI

Update / Uninstall

brew update
brew upgrade

brew uninstall <formula>
brew uninstall --cask <cask>

# casks only: remove user data
brew uninstall --cask --zap openclaw/tap/<name>

Notes

  • Run brew info openclaw/tap/<name> for per-tool caveats (permissions, setup steps, etc.).
  • OCM supports macOS Apple Silicon/Intel and Linux x86_64. Install with brew install openclaw/tap/ocm and update with brew upgrade openclaw/tap/ocm, not ocm self update, which refuses to replace Homebrew-managed binaries.

Maintainers

Local validation and code layout

The automation uses Python's standard library and Homebrew's Ruby tooling:

python3 -B -m unittest discover -s tests -v
brew style Formula/*.rb
brew ruby tests/test_ocm_platforms.rb
brew ruby tests/test_crabbox_install.rb

update_formula.py owns command validation, downloads, source-tag verification and file writes. formula_text.py parses and renders formula text without network or filesystem access. reconcile_formulae.py discovers release drift and invokes the updater. These scripts live in .github/scripts/; formula-specific installation behavior stays in Formula/*.rb.

Release dispatch

Formula updates have two automated paths. Source-repository release workflows dispatch Update Formula for immediate updates. That workflow accepts a Homebrew formula token, a semantic release tag, and a GitHub repository in owner/repo form. Optional artifact inputs must resolve to HTTPS release assets and may use only the placeholders documented by the workflow. Downloads use a 30-second socket inactivity timeout and stream archive bytes without imposing a size limit. This timeout bounds stalled socket operations, not the total duration of a progressing download. Every redirect destination is validated before it is requested: HTTPS is required, and credentials and fragments are rejected. Relative HTTPS redirects remain supported. This does not impose a public-only host policy: private, localhost, and numeric host spellings such as 127.1, 2130706433, and 0x7f000001 remain allowed, subject to normal TLS certificate verification. DNS/IP restrictions are outside this download contract.

Crabbox uses the ordinary four-target assets handoff after publication. The Crabbox release process completes its prepublication checks, including native proof, before publishing. Publication establishes tap eligibility: the operator explicitly dispatches Update Formula with the tag and four published archive names/hashes. The updater downloads and hashes all four canonical GitHub release assets before writing, preserves maintained formula content, and succeeds when already current. Reconciliation is an independent fallback for stable published releases. Retry a failed tap handoff on its own; do not rebuild or republish to retry Homebrew.

Crabbox releases with native JJ support install the helper, its build receipt, notice text, and attribution report beside the CLI. The complete companion bundle is required when any member is present; older releases without companions retain their existing installation layout. Releases containing crabbox-runtime/ install the entire directory beside the CLI in its keg, preserving both runtime binaries and their manifest; older archives without a runtime pack remain supported.

Public native and proxy-only Go-install smokes remain required independent channel health checks, not an additional approval gate for the tap. Installed-Homebrew smoke follows the update. Crabbox's obsolete verified-hashes-v1 write mode fails with guidance to use ordinary assets; caller-supplied hashes without public downloads cannot update that formula. Its read-only --verify-source-tag-only check still accepts the complete verified-hash input set without writing.

Existing Formula/*.rb files own each tool's caveats and install instructions. The updater preserves that content while changing release metadata. In legacy multi-target mode, a supplied linux_url refreshes both the matching GitHub source-archive URL and its checksum. Maintain formula-specific content here rather than in an upstream release workflow. Newly generated formulae remain in memory until all required checksum downloads and rendering succeed, so failed creation leaves no placeholder file. Combined formula/cask updates also finish all downloads and rendering before writing either file, so a missing or invalid cask leaves the formula unchanged. For Gitcrawl, see the configuration reference and gh shim migration to Octopool.

Reconciliation

Reconcile Formulae is the self-healing fallback for formulae. Every three hours it derives each source repository from the formula's GitHub homepage, compares the formula with that repository's latest stable published release, and runs the same updater and checksum-download logic when the release is newer. Invalid formula metadata is reported and skipped so later formulae are still inspected. Resource URLs are excluded from release inference, including resources from the same source repository; their pinned versions and checksums remain unchanged. It never downgrades, skips drafts and prereleases, and makes no commit when every formula is current. Manual reconciles default to dry-run and can target one formula. The reconciler reads public release metadata and pushes with this tap's own GITHUB_TOKEN; it needs no cross-repository token or other external credential. The dispatch path remains the preferred low-latency path.

OCM uses reconciliation directly: its three Rust-target archives are discovered from the formula, without a cross-repository dispatch token or a Linux ARM64 artifact. Installation preserves the published executable bytes, including the macOS Developer ID signature. Changes to the OCM formula or its updater run installed-Homebrew tests on macOS ARM64, macOS x86_64, and Linux x86_64, using the checked-out formula rather than the public tap.

Pull requests and updates to main run the automation tests and validate Ruby syntax and Homebrew style for every formula and cask. Superseded pull-request validation runs are canceled, while main-branch checks finish independently. They also load the checked-out tap on every Homebrew OS/architecture combination, including unsupported installation targets. Formulae must always define a URL; use an architecture requirement to reject unsupported installs rather than leaving platform metadata empty.

Asset handoff contracts

Fleet release workflows use the optional assets JSON contract: exactly one name and sha256 for each Darwin/Linux amd64/arm64 target. The updater renders those names and hashes verbatim, downloads all four public release assets, and refuses to commit on any digest mismatch. Legacy multi-target updates preserve smaller target inventories and resources, but reject unrecognized primary release assets before downloading or writing. Custom target names need target_aliases. Omitting assets preserves the legacy template and filename-guessing behavior for older callers.

Other four-target binary releases can use the workflow's verified-hashes-v1 contract. Supply all four canonical target SHA-256 inputs, source_tag_object, source_tag_commit, and request_id with an explicit {target} artifact template. This mode requires an existing formula, checks that the live source ref is the supplied annotated tag object and peeled commit, renders the target URL/checksum pairs as literal release URLs directly from the supplied hashes, and never downloads release assets to recompute them. Literal URLs also let Homebrew infer the version when the formula omits a redundant explicit version line. Partial or mixed legacy/verified input sets fail closed. The source repository remains responsible for verifying the public release bytes immediately before dispatch and again after the tap update, including its clean downstream Homebrew install proof. Each source-tag git fetch and git ls-remote verification has a 60-second deadline and aborts the update on timeout.

Each successful verified dispatch creates one direct-child provenance commit, including when the formula is already current. The workflow revalidates the exact public source tag without credentials immediately before its one-shot push and again after proving that the remote tap branch equals the pushed commit.

Verified run titles are Update <formula> for <tag> (request-id=<id>; source-tag-object=<object>; source-tag-commit=<commit>). A changed formula commit records Source-Repository, Source-Tag-Object, Source-Tag-Commit, and Request-ID trailers so callers can bind the protected workflow run, resulting tap commit, and formula bytes to one handoff.

About

Homebrew tap for openclaw

Resources

Security policy

Stars

41 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages