Homebrew formulas for the Dicklesworthstone Stack - a collection of powerful tools designed for AI coding agents and developer productivity.
# Add the tap
brew tap dicklesworthstone/tap
# Install a tool
brew install dicklesworthstone/tap/cass| Tool | Description | Install |
|---|---|---|
| cass | Cross-agent session search - Index and search AI coding agent conversations from Claude Code, Cursor, Codex, and more | brew install dicklesworthstone/tap/cass |
| cm | CASS Memory System - Persistent vector-based procedural memory for AI agents | brew install dicklesworthstone/tap/cm |
| xf | X-Former - Search and analyze your Twitter/X archive data locally | brew install dicklesworthstone/tap/xf |
| Tool | Description | Install |
|---|---|---|
| bv | Beads Viewer - Graph-aware task management TUI | brew install dicklesworthstone/tap/bv |
| caam | Coding Agent Account Manager - Switch between AI agent accounts | brew install dicklesworthstone/tap/caam |
| slb | Simultaneous Launch Button - Two-person rule for dangerous commands | brew install dicklesworthstone/tap/slb |
| Tool | Description | Install |
|---|---|---|
| ru | Repo Updater - Robust CLI for synchronizing GitHub repositories to local projects directory | brew install dicklesworthstone/tap/ru |
| ubs | Ultimate Bug Scanner - Comprehensive code analysis for bugs and security issues | brew install dicklesworthstone/tap/ubs |
| Tool | Description | Install |
|---|---|---|
| dcg | Destructive Command Guard - Safety rails for AI coding agents | brew install dicklesworthstone/tap/dcg |
| tru | TOON encoder/decoder - Token-Optimized Object Notation | brew install dicklesworthstone/tap/tru |
| Tool | macOS Intel | macOS ARM | Linux x86 | Linux ARM |
|---|---|---|---|---|
| cass | ✅ | ✅ | ✅ | ✅ |
| xf | ✅ | ✅ | ✅ | - |
| cm | ✅ | ✅ | ✅ | - |
| ru | ✅ | ✅ | ✅ | ✅ |
| ubs | ✅ | ✅ | ✅ | ✅ |
| bv | ✅ | ✅ | ✅ | ✅ |
| caam | ✅ | ✅ | ✅ | ✅ |
| slb | ✅ | ✅ | ✅ | ✅ |
| dcg | - | ✅ | ✅ | - |
| tru | ✅ | ✅ | ✅ | ✅ |
Note: ru and ubs are Bash scripts that work on any Unix-like system. bv, caam, and slb are managed by GoReleaser. dcg v0.3.0 currently only has macOS ARM and Linux x86 builds.
Index and search your AI coding agent conversation histories across multiple tools:
# Check setup and indexing status
cass health
# Search across all sessions
cass search "authentication bug"
# For AI agents, use robot mode
cass search "error handling" --robot --limit 10
# JSON output for programmatic use
cass search "database" --jsonSupported agents: Claude Code, Cursor, Codex CLI, Gemini CLI, ChatGPT, Aider, and more.
Persistent vector-based memory system that helps AI agents remember context across sessions:
# Check system status
cm status
# Store a memory
cm store "The user prefers tabs over spaces"
# Recall relevant memories
cm recall "code formatting preferences"Search and analyze your personal Twitter/X data archive locally:
# Setup: Download your Twitter data from Twitter settings, then:
xf --data-dir /path/to/twitter-archive
# Search your tweets
xf search "machine learning"
# Show archive statistics
xf stats
# Limit results
xf search "project" --limit 20Synchronize GitHub repositories to your local projects directory:
# Initialize configuration
ru init
# Sync all configured repositories
ru sync
# Check status of all repos
ru status
# Run diagnostics
ru doctor
# Review GitHub issues/PRs across repos
ru review --planRequires: git, gh (GitHub CLI) for private repos, optionally gum for beautiful TUI.
Comprehensive code analysis tool for finding bugs and security issues:
# Scan current directory
ubs .
# Scan with JSON output (for AI agents)
ubs --json ./src
# Show all options
ubs --helpSupports: Python, JavaScript, TypeScript, Rust, Go, and more.
# Update a specific tool
brew upgrade dicklesworthstone/tap/cass
# Update all tools from this tap
brew upgrade $(brew list --formula | grep dicklesworthstone)
# Update everything (including Homebrew itself)
brew update && brew upgradeThis tap uses multiple mechanisms to stay up-to-date:
When a source repository publishes a new release, it can trigger an immediate update via GitHub's repository_dispatch API.
A GitHub Actions workflow checks all source repositories for new releases and automatically updates formulas.
Maintainers can manually trigger formula updates via the GitHub Actions workflow_dispatch interface.
# Force refresh the tap
brew update --force
brew tap-info dicklesworthstone/tapThis usually means a new release was published. Update and reinstall:
brew update
brew reinstall dicklesworthstone/tap/<tool-name>Check if the tool supports your platform:
# Show formula info including supported platforms
brew info dicklesworthstone/tap/<tool-name># Verify installation
which <tool-name>
<tool-name> --version
# Check for conflicts
brew doctor
# View installation logs
brew install --verbose dicklesworthstone/tap/<tool-name># Remove a specific tool
brew uninstall <tool-name>
# Remove the tap entirely
brew untap dicklesworthstone/tap- Check GitHub Actions: Look at the source repo's release workflow for errors
- Verify PAT secrets: Ensure
HOMEBREW_TAP_TOKENis configured in source repo - Check tap's auto-update workflow: Look for failed
formula-updateevents - Manual fallback: Use
./scripts/update-formula.sh <tool> <version>
# Validate formula locally
brew audit --strict Formula/<tool>.rb
# Check Ruby syntax
ruby -c Formula/<tool>.rb
# Run full CI validation
./scripts/validate-formulas.sh <tool>For GoReleaser tools (bv, caam, slb), check:
.goreleaser.yaml: Ensure Homebrew/Scoop configuration is correct- GitHub token permissions: GoReleaser needs
contents:writeandpackages:write - Build errors: Check the GoReleaser logs in GitHub Actions
Symptoms: Auto-updates stop working silently.
- Check if token is expired in source repo's secrets
- Regenerate fine-grained PAT with
contents:writeon this repo - Update the
HOMEBREW_TAP_TOKENsecret in source repos
To manually update a formula when a new version is released:
cd /path/to/homebrew-tap
./scripts/update-formula.sh <tool> <version>
# Examples:
./scripts/update-formula.sh ru 1.2.3
./scripts/update-formula.sh cass 0.1.56
./scripts/update-formula.sh xf 0.2.1The script will:
- Fetch the new checksum(s) from GitHub releases
- Update the version and sha256 in the formula
- Show the git diff for review
# Validate all formulas
./scripts/validate-formulas.sh
# Validate a specific formula
./scripts/validate-formulas.sh cass
# Full validation with brew audit (slower)
./scripts/validate-formulas.sh --ci# Test all installed tools
./scripts/e2e-test-suite.sh
# Test a specific tool
./scripts/e2e-test-suite.sh cass
# Verbose output
VERBOSE=1 ./scripts/e2e-test-suite.shUse the existing formulas as templates. Key requirements:
- desc: Clear, concise description (10+ characters)
- homepage: Link to source repository
- license: Declare the license (usually MIT)
- Multi-arch support: For binary releases, include
on_macos/on_linuxandon_intel/on_armblocks - test block: At minimum, verify
--versionworks
Example structure for multi-arch binary:
class MyTool < Formula
desc "Description of the tool"
homepage "https://github.com/Dicklesworthstone/my_tool"
version "1.0.0"
license "MIT"
on_macos do
on_intel do
url "https://github.com/.../my-tool-x86_64-apple-darwin.tar.gz"
sha256 "..."
end
on_arm do
url "https://github.com/.../my-tool-aarch64-apple-darwin.tar.gz"
sha256 "..."
end
end
on_linux do
on_intel do
url "https://github.com/.../my-tool-x86_64-unknown-linux-gnu.tar.gz"
sha256 "..."
end
end
def install
bin.install "my-tool"
# Optional: shell completions
generate_completions_from_executable(bin/"my-tool", "completions")
end
test do
assert_match version.to_s, shell_output("#{bin}/my-tool --version")
end
endThese tools use GoReleaser which automatically handles the entire release process including Homebrew/Scoop updates.
# 1. Update version in code (if applicable)
# 2. Commit changes
git add -A && git commit -m "Prepare release vX.Y.Z"
# 3. Create and push tag
git tag vX.Y.Z
git push origin main --tags
# 4. GoReleaser runs automatically via GitHub Actions
# 5. Verify: Check that homebrew-tap and scoop-bucket were updated
brew update && brew info dicklesworthstone/tap/<tool>What happens automatically:
- GoReleaser builds binaries for all platforms
- Creates GitHub release with assets
- Updates homebrew-tap formula via
goreleaser-action - Updates scoop-bucket manifest via
goreleaser-action
# 1. Update version in Cargo.toml
# 2. Update CHANGELOG.md (if applicable)
# 3. Commit changes
git add -A && git commit -m "Prepare release vX.Y.Z"
# 4. Create and push tag
git tag vX.Y.Z
git push origin main --tags
# 5. CI builds and creates GitHub release automatically
# 6. CI triggers repository_dispatch to homebrew-tap and scoop-bucket
# 7. Verify updates (may take a few minutes)
brew update && brew info dicklesworthstone/tap/<tool>
scoop update && scoop info <tool>What happens automatically:
- GitHub Actions builds binaries for all platforms (Linux, macOS Intel/ARM, Windows)
- Creates GitHub release with tarballs/zips
- Triggers
formula-updateevent to homebrew-tap - Triggers
manifest-updateevent to scoop-bucket - Tap/bucket workflows update formulas/manifests automatically
# 1. Update version in package.json
# 2. Commit changes
git add -A && git commit -m "Prepare release vX.Y.Z"
# 3. Create and push tag
git tag vX.Y.Z
git push origin main --tags
# 4. CI cross-compiles for all platforms and creates release
# 5. CI triggers repository_dispatch to homebrew-tap and scoop-bucket
# 6. Verify updates
brew update && brew info dicklesworthstone/tap/cm
scoop update && scoop info cm# 1. Update VERSION file
echo "X.Y.Z" > VERSION
# 2. Commit changes
git add -A && git commit -m "Prepare release vX.Y.Z"
# 3. Create and push tag
git tag vX.Y.Z
git push origin main --tags
# 4. CI creates release and triggers homebrew-tap update
# 5. Verify formula update
brew update && brew info dicklesworthstone/tap/<tool>Note: Bash scripts are macOS/Linux only. No Scoop manifest updates needed.
If automatic updates fail:
# In the homebrew-tap repository
./scripts/update-formula.sh <tool> <version>
# Review and commit
git diff
git add -A && git commit -m "Update <tool> to vX.Y.Z"
git push origin mainFor source repositories to trigger automatic formula updates via repository_dispatch, they need a Personal Access Token (PAT) with permission to trigger workflows on this repository.
Each source repository needs these secrets configured:
| Secret Name | Purpose | Required Scope |
|---|---|---|
HOMEBREW_TAP_TOKEN |
Trigger formula-update event |
contents:write on Dicklesworthstone/homebrew-tap |
SCOOP_BUCKET_TOKEN |
Trigger manifest-update event |
contents:write on Dicklesworthstone/scoop-bucket |
| Repository | Secrets Needed |
|---|---|
repo_updater (ru) |
HOMEBREW_TAP_TOKEN |
coding_agent_session_search (cass) |
HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN |
xf |
HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN |
cass_memory_system (cm) |
HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN |
ultimate_bug_scanner (ubs) |
HOMEBREW_TAP_TOKEN |
destructive_command_guard (dcg) |
HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN |
toon_rust (tru) |
HOMEBREW_TAP_TOKEN, SCOOP_BUCKET_TOKEN |
- Go to GitHub Settings → Developer settings → Personal access tokens → Fine-grained tokens
- Create a new token with:
- Token name:
homebrew-tap-dispatch(or similar) - Expiration: Set as needed (1 year recommended)
- Repository access: "Only select repositories" → select
Dicklesworthstone/homebrew-tap - Permissions: Repository permissions → Contents → Read and write
- Token name:
- Repeat for
scoop-bucketif needed - Add the token as a secret in each source repository
Security Note: Use fine-grained PATs with minimal scope. Consider creating separate tokens for each purpose rather than one token with access to multiple repositories.
Every push to Formula/ triggers:
| Stage | Description | Runners |
|---|---|---|
| Validate | Ruby syntax, required fields | ubuntu-latest |
| Audit | brew audit --strict --online |
ubuntu-latest |
| Install Test | Full install/test/uninstall cycle | macOS-13, macOS-14, ubuntu-22.04 |
Weekly E2E tests run comprehensive functional tests on all installed tools.
homebrew-tap/
├── Formula/ # Homebrew formulas (.rb files)
│ ├── bv.rb # GoReleaser-managed
│ ├── caam.rb # GoReleaser-managed
│ ├── cass.rb
│ ├── cm.rb
│ ├── dcg.rb
│ ├── ru.rb
│ ├── slb.rb # GoReleaser-managed
│ ├── tru.rb
│ ├── ubs.rb
│ └── xf.rb
├── Casks/ # Homebrew casks (GUI apps)
├── scripts/
│ ├── update-formula.sh # Update formula version/checksums
│ ├── validate-formulas.sh # Validate formula quality
│ └── e2e-test-suite.sh # End-to-end functional tests
└── .github/workflows/
├── test-formulas.yml # CI: audit and install tests
├── e2e-tests.yml # Weekly E2E functional tests
└── auto-update.yml # Automatic formula updates
- Scoop Bucket (Windows): Dicklesworthstone/scoop-bucket
- Source Repositories: See individual tool links in the tables above
Each tool has its own license. Check the individual repositories for details. This tap repository itself is MIT licensed (with OpenAI/Anthropic Rider).
This tap is primarily auto-maintained. For issues:
- Tool bugs: File issues in the respective tool's repository
- Formula bugs: File issues in this repository
- Feature requests: File issues in the respective tool's repository
We don't accept external PRs for formulas as they are auto-generated, but issue reports are welcome.