Homeboy
Development automation infrastructure for software projects.
What It Does
Homeboy turns a repo, project, or fleet into a component-aware automation surface: local development, CI, releases, dev rigs, stacks, benchmarks, dependency maintenance, triage, and ops all run through one CLI.
- Component-aware quality gates — Audit, lint, test, review, and refactor code with the same commands locally and in CI.
- Release automation — Plan versions, changelogs, tags, and publish steps from commit history.
- Local development rigs — Materialize reproducible multi-component environments and combined-fixes branches.
- Performance benchmarks — Run benchmark scenarios with baselines, ratchets, regression gates, and rig-scoped comparisons.
- Dependency and attention loops — Surface dependency drift, failing checks, open issues, and structured review artifacts.
- Fleet operations — Deploy components, inspect servers, query databases, read files, tail logs, and copy artifacts.
- Agent-ready output — Write stable JSON artifacts for automation and AI agents without scraping terminal logs.
Architecture
One component model, several execution contexts:
┌─────────────────────────────┐
│ homeboy.json │
│ component id + extensions │
└──────────────┬──────────────┘
│
┌───────────────────────────────┼───────────────────────────────┐
│ │ │
v v v
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Local terminal │ │ GitHub Actions │ │ Agent/runtime │
│ audit/lint/test│ │ checks/release │ │ JSON artifacts │
└───────┬────────┘ └───────┬────────┘ └───────┬────────┘
│ │ │
v v v
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Dev substrate │ │ Release/deploy │ │ Attention loop │
│ rig/stack/bench│ │ tag/changelog │ │ triage/report │
└────────────────┘ └────────────────┘ └────────────────┘
Command Families
| Family | Commands | Purpose |
|---|---|---|
| Quality | audit, lint, test, review, refactor |
Keep codebases healthy and reviewable. |
| Release | release, version, changelog, changes |
Turn commit history into versions, tags, and release notes. |
| Dev substrate | rig, stack |
Recreate local environments and maintain combined-fixes branches. |
| Performance | bench |
Track benchmark scenarios against baselines and environments. |
| Attention | deps, triage, status, issues, report |
Find dependency drift, failing work, and review artifacts. |
| Ops | deploy, ssh, file, db, logs |
Operate projects and fleets from the same component graph. |
| Platforms | wp, cargo, extension |
Route platform-specific behavior through extensions. |
For exhaustive command docs, see docs/commands/commands-index.md or run homeboy docs list.
Quick Start
1. Add homeboy.json
Put a portable component config at the repo root:
Use the extension that matches the repo. For example, Rust projects can use rust, and WordPress projects can use wordpress.
2. Run local quality gates
Start locally before wiring CI:
The same commands can also target a component explicitly or use a checkout path:
3. Add CI when the local loop is useful
Extra-Chill/homeboy-action@v2 installs Homeboy in GitHub Actions, sets up extensions, runs commands, posts PR comments, and can apply safe autofixes.
name: Homeboy
on:
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Extra-Chill/homeboy-action@v2
with:
extension: rust
commands: audit,lint,test,review
Release automation can be manual, scheduled, or CI-driven. Use the same action when you want release jobs to run in GitHub Actions:
name: Release
on:
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: Extra-Chill/homeboy-action@v2
with:
extension: rust
component: my-project
commands: release
Core Workflows
Code Quality And Review
homeboy audit detects convention drift, duplication, dead code, test coverage gaps, stale docs, and structural risk. Baselines let existing debt stay visible while preventing new regressions.
homeboy lint delegates formatting and static analysis to the configured extension. homeboy test runs the component's test suite. homeboy review is the PR-shaped umbrella that runs scoped audit, lint, and test checks and can render a PR-comment report.
homeboy refactor handles structural mechanical edits such as naming changes. Safe rewrites can be applied automatically; higher-risk plans stay explicit.
Release And Changelog
Homeboy's release path is driven by conventional commits:
fix:commits produce patch releases.feat:commits produce minor releases.BREAKING CHANGEproduces major releases.docs:,test:,ci:, andchore:commits do not require a release by default.
The release family keeps version targets, changelogs, tags, and release artifacts tied to the same plan:
Local Dev Rigs And Stacks
homeboy rig manages reproducible local environments: components, background services, symlinks, checks, git operations, builds, and patch steps. A rig can bring up a multi-repo setup, check its health, sync stacks, and tear it down.
homeboy stack manages combined-fixes branches built from a base branch plus declared PRs. It can inspect, apply, rebase, sync, diff, and push the target branch.
Benchmarks
homeboy bench makes benchmarks a first-class quality gate. Extensions provide the benchmark runner; Homeboy owns baseline storage, regression policies, ratchets, and rig-scoped comparisons.
Dependencies And Attention
homeboy deps inspects and updates component dependencies. homeboy triage gathers read-only attention reports across components, projects, fleets, rigs, or the whole workspace.
homeboy issues reconciles findings against an issue tracker, and homeboy report renders structured output artifacts such as review results.
Fleet And Ops
Homeboy models deployed work as components attached to projects, projects attached to servers, and projects grouped into fleets.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ component │────>│ project │────>│ server │
│ plugin/CLI │ │ site/app │ │ VPS/host │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
v
┌─────────────┐
│ fleet │
│ group │
└─────────────┘
That model backs ops commands:
Command Surface Map
This is a map, not a generated reference. Use homeboy <command> --help or docs/commands/commands-index.md for exact options.
| Area | Commands |
|---|---|
| Code quality / review | audit, lint, test, review, refactor, build |
| Release / changelog | release, version, changelog, changes |
| Local dev environments | rig, stack |
| Benchmarks | bench |
| Dependencies / attention | deps, triage, status, issues, report |
| Fleet / ops | deploy, ssh, file, db, logs, server, project, component, fleet |
| Extensions / platform verbs | extension, wp, cargo |
| Meta | config, docs, daemon, self, undo, auth, api, upgrade, list |
JSON Output Contract
Most Homeboy commands can write machine-readable output with --output <path> while still printing human output to stdout.
The output file contains command-specific JSON only, without log text. That makes Homeboy suitable for CI jobs, scheduled automation, and AI agents that need stable artifacts instead of terminal scraping.
Extensions
Extensions add platform-specific behavior while keeping the Homeboy command model consistent.
| Extension | What it provides |
|---|---|
rust |
Cargo integration, Rust build/test/lint/release behavior, and crates.io artifacts. |
wordpress |
WP-CLI integration, WordPress-aware build/test/lint/release behavior. |
nodejs |
Node/PM2 process management. |
github |
GitHub release and issue/PR integration. |
homebrew |
Homebrew tap publishing. |
swift |
Swift testing for macOS/iOS projects. |
Installed extensions can expose their own top-level verbs, such as homeboy wp and homeboy cargo.
Configuration
Global config lives in ~/.config/homeboy/. Portable component config lives in homeboy.json at the repository root.
~/.config/homeboy/
├── homeboy.json # global defaults
├── components/ # registered component definitions
├── projects/ # project definitions and server bindings
├── servers/ # server connections
├── fleets/ # project groups
├── rigs/ # local dev rig specs
├── stacks/ # stack specs
├── extensions/ # installed extensions
└── keys/ # SSH keys
The portable repo-level homeboy.json is enough for local commands and CI. Global component/project/server/fleet config is for reusable local and ops workflows.
Installation
# Homebrew (macOS/Linux)
# Cargo
# From source
&&
Documentation
Command reference and deeper docs are checked into this repo and embedded in the binary.
Start with docs/commands/commands-index.md for the command index.
License
MIT License — Created by Chris Huber