CLI Commands
Commands
homeboy—
Command Arguments
ApiArgs
project_id— Project IDcommand
AuditArgs
component_id— Component ID or direct filesystem path to auditconventions— Only show discovered conventions (skip findings)fix— Generate fix stubs for outlier files (dry run by default)write— Apply fixes to disk (requires –fix)baseline— Save current audit state as baseline for future comparisonsignore_baseline— Skip baseline comparison even if a baseline exists
AuthArgs
command
BuildArgs
json— JSON input spec for bulk operations: {"componentIds": ["id1", "id2"]}target_id— Target ID: component ID or project ID (when using –all)component_ids— Additional component IDs (enables project/component order detection)all— Build all components in the projectpath— Override local_path for this build (use a workspace clone or temp checkout)
ChangelogArgs
show_self— Show Homeboy’s own changelog (release notes)command
ChangesArgs
target_id— Target ID: component ID (single mode) or project ID (if followed by component IDs)component_ids— Component IDs to filter (when target_id is a project)project— Show changes for all components in a project (alternative to positional project mode)json— JSON input spec for bulk operations: {"componentIds": ["id1", "id2"]}since— Compare against specific tag instead of latestgit_diffs— Include commit range diff in output (uncommitted diff is always included)
CleanupArgs
component_id— Component to check (omit for all components)severity— Show only issues of a specific severity: error, warning, infocategory— Show only issues in a specific category: local_path, remote_path, version_targets, extensions
CliArgs
toolidentifierargs
ComponentArgs
command
ConfigArgs
command
DbArgs
command
DeployArgs
target_id— Target ID: project ID or component ID (order is auto-detected)component_ids— Additional component IDs (enables project/component order detection)project— Explicit project ID (takes precedence over positional detection)component— Explicit component IDs (takes precedence over positional)json— JSON input spec for bulk operationsall— Deploy all configured componentsoutdated— Deploy only outdated componentsdry_run— Preview what would be deployed without executingcheck— Check component status without building or deployingforce— Deploy even with uncommitted changesprojects— Deploy to multiple projects (comma-separated or repeated)fleet— Deploy to all projects in a fleetshared— Deploy to all projects using the specified component(s)keep_deps— Keep build dependencies (skip post-deploy cleanup)
DocsArgs
commandtopic— Topic path (e.g., ‘commands/deploy’) or ‘list’ to show available topics
ExtensionArgs
command
FileArgs
command
FleetArgs
command
GitArgs
command
InitArgs
all— Show all components, extensions, projects, and serversjson— Accept –json for compatibility (output is JSON by default)
LintArgs
component— Component name to lintfix— Auto-fix formatting issues before validatingsummary— Show compact summary instead of full outputfile— Lint only a single file (path relative to component root)glob— Lint only files matching glob pattern (e.g., "inc/**/*.php")changed_only— Lint only files modified in the working tree (staged, unstaged, untracked)errors_only— Show only errors, suppress warningssniffs— Only check specific sniffs (comma-separated codes)exclude_sniffs— Exclude sniffs from checking (comma-separated codes)category— Filter by category: security, i18n, yoda, whitespacesetting— Override settings as key=value pairspath— Override local_path for this lint run (use a workspace clone or temp checkout)json— Accept –json for compatibility (output is JSON by default)
LogsArgs
command
DynamicSetArgs
id— Entity ID (optional if provided in JSON body)spec— JSON spec (positional, supports @file and – for stdin)json— Explicit JSON spec (takes precedence over positional)base64— Base64-encoded JSON spec (bypasses shell escaping issues)replace— Replace these fields instead of merging arraysextra— Dynamic key=value flags (e.g., –remote_path /var/www). When combined with –json, add ‘–‘ separator first:homeboy component set ID --json '{}' -- --key value
ProjectArgs
command
RefactorArgs
command
ReleaseArgs
component_id— Component IDbump_typedry_run— Preview what will happen without making changesjson— Accept –json for compatibility (output is JSON by default)deploy— Deploy to all projects using this component after releaserecover— Recover from an interrupted release (tag + push current version)
ServerArgs
command
KeyArgs
command
SshArgs
target— Target ID (project or server; project wins when ambiguous)command— Command to execute (omit for interactive shell). Examples: homeboy ssh my-project — ls -la homeboy ssh my-project — wp plugin list If you need shell operators (&&, |, redirects), pass a single quoted string: homeboy ssh my-project "cd /var/www && ls | head"as_server— Force interpretation as server IDsubcommand
StatusArgs
uncommitted— Show only components with uncommitted changesneeds_bump— Show only components that need a version bumpready— Show only components ready to deploydocs_only— Show only components with docs-only changesall— Show all components regardless of current directory context
TestArgs
component— Component name to testskip_lint— Skip linting before running testsfix— Auto-fix linting issues before running testssetting— Override settings as key=value pairspath— Override local_path for this test run (use a workspace clone or temp checkout)args— Additional arguments to pass to the test runner (after –)json— Accept –json for compatibility (output is JSON by default)
TransferArgs
source— Source: local path or server_id:/pathdestination— Destination: local path or server_id:/pathrecursive— Transfer directories recursivelycompress— Compress data during transferdry_run— Show what would be transferred without doing itexclude— Exclude patterns (can be specified multiple times)
UpgradeArgs
check— Check for updates without installingforce— Force upgrade even if already at latest versionno_restart— Skip automatic restart after upgrademethod— Override install method detection (homebrew|cargo|source|binary)json— Accept –json for compatibility (output is JSON by default)
VersionArgs
command
SshResolveArgs
id— Bare ID (tries project first, then server)project— Force project resolutionserver— Force server resolution
Subcommands
ApiCommand
Get— Make a GET requestendpoint— API endpoint (e.g., /wp/v2/posts)Post— Make a POST requestendpoint— API endpointbody— JSON bodyPut— Make a PUT requestendpoint— API endpointbody— JSON bodyPatch— Make a PATCH requestendpoint— API endpointbody— JSON bodyDelete— Make a DELETE requestendpoint— API endpoint
AuthCommand
Login— Authenticate with a project’s APIproject— Project IDidentifier— Username or emailpassword— Password (or read from stdin)Logout— Clear stored authentication for a projectproject— Project IDStatus— Show authentication status for a projectproject— Project ID
ChangelogCommand
Show— Show a changelog (Homeboy’s own if no component specified)component_id— Component ID to show changelog forEXAMPLES— Add changelog items to the configured "next" section Examples: homeboy changelog add my-plugin "Fixed login bug" homeboy changelog add my-plugin "Removed legacy API" –type Removed homeboy changelog add my-plugin -m "Added search" -m "Added filters"Addjson— JSON input spec for batch operations. Use "-" to read from stdin, "@file.json" to read from a file, or an inline JSON string.component_id— Component ID (non-JSON mode)positional_message— Changelog item content (positional, for backward compatibility)messages— Changelog message (repeatable: -m "first" -m "second")entry_type— Changelog subsection type (Added, Changed, Deprecated, Removed, Fixed, Security, Refactored)Init— Initialize a new changelog filepath— Path for the changelog file (relative to component)configure— Also update component config to add changelogTargetscomponent_id— Component ID
ComponentCommand
Create— Create a new component configurationjson— JSON input spec for create/update (supports single or bulk)skip_existing— Skip items that already exist (JSON mode only)local_path— Absolute path to local source directory (ID derived from directory name)remote_path— Remote path relative to project basePathbuild_artifact— Build artifact path relative to localPathversion_targets— Version targets in the form "file" or "file::pattern" (repeatable). For complex patterns, use –version-targets @file.json to avoid shell escapingversion_targets_jsonbuild_command— Build command to run in localPathextract_command— Extract command to run after upload (e.g., "unzip -o {artifact} && rm {artifact}")changelog_target— Path to changelog file relative to localPathextensions— Extension(s) this component uses (e.g., "wordpress"). Repeatable.Show— Display component configurationid— Component IDSet— Update component configuration fields Supports dedicated flags for common fields (e.g., –local-path, –build-command) as well as –json for arbitrary updates. When combining –json with dynamic trailing flags, use ‘–‘ separator.argslocal_path— Absolute path to local source directoryremote_path— Remote path relative to project basePathbuild_artifact— Build artifact path relative to localPathbuild_command— Build command to run in localPathextract_command— Extract command to run after upload (e.g., "unzip -o {artifact} && rm {artifact}")changelog_target— Path to changelog file relative to localPathversion_targets— Version targets in the form "file" or "file::pattern" (repeatable). Same format ascomponent create --version-target.extensions— Extension(s) this component uses (e.g., "wordpress"). Repeatable.Delete— Delete a component configurationid— Component IDRename— Rename a component (changes ID directly)id— Current component IDnew_id— New component ID (should match repository directory name)List— List all available componentsProjects— List projects using this componentid— Component IDShared— Show which components are shared across projectsid— Specific component ID to check (optional, shows all if omitted)AddVersionTarget— Add a version target to a componentid— Component IDfile— Target file path relative to component rootpattern— Regex pattern with capture group for version
ConfigCommand
Show— Display configuration (merged defaults + file)builtin— Show only built-in defaults (ignore homeboy.json)Set— Set a configuration value at a JSON pointer pathpointer— JSON pointer path (e.g., /defaults/deploy/scp_flags)value— Value to set (JSON)Remove— Remove a configuration value at a JSON pointer pathpointer— JSON pointer path (e.g., /defaults/deploy/scp_flags)Reset— Reset configuration to built-in defaults (deletes homeboy.json)Path— Show the path to homeboy.json
DbCommand
Tables— List database tablesproject_id— Project IDargs— Optional subtargetDescribe— Show table structureproject_id— Project IDargs— Optional subtarget and table nameQuery— Execute SELECT queryproject_id— Project IDargs— Optional subtarget and SQL querySearch— Search table by column valueproject_id— Project IDtable— Table namecolumn— Column to searchpattern— Search patternexact— Use exact match instead of LIKElimit— Maximum rows to returnsubtarget— Optional subtargetDeleteRow— Delete a row from a tableproject_id— Project IDargs— Table name and row IDDropTable— Drop a database tableproject_id— Project IDargs— Table nameTunnel— Open SSH tunnel to databaseproject_id— Project IDlocal_port— Local port to bind
DocsCommand
Scaffold— Analyze codebase and report documentation status (read-only)component_id— Component to analyzedocs_dir— Docs directory to check for existing documentation (default: docs)source_dirs— Source directories to analyze (comma-separated, or repeat flag). Overrides auto-detection.source_extensions— File extensions to detect as source code (default: php,rs,js,ts,py,go,java,rb,swift,kt)detect_by_extension— Include all directories containing source files (extension-based detection)Audit— Audit documentation for broken links and stale referencescomponent_id— Component ID or direct filesystem path to auditdocs_dir— Docs directory relative to component/project root (overrides config, default: docs)features— Include full list of all detected features in outputGenerate— Generate documentation files from JSON specspec— JSON spec (positional, supports @file and – for stdin)json— Explicit JSON spec (takes precedence over positional)from_audit— Generate docs from audit output (pipe fromdocs audit --featuresor use @file)dry_run— Show what would be generated without writing files
ExtensionCommand
List— Show available extensions with compatibility statusproject— Project ID to filter compatible extensionsShow— Show detailed information about a extensionextension_id— Extension IDRun— Execute a extensionextension_id— Extension IDproject— Project ID (defaults to active project)component— Component ID (required when ambiguous)input— Input values as key=value pairsstep— Run only specific steps (comma-separated, e.g. –step phpunit,phpcs)skip— Skip specific steps (comma-separated, e.g. –skip phpstan,lint)args— Arguments to pass to the extension (for CLI extensions)stream— Stream output directly to terminal (default: auto-detect based on TTY)no_stream— Disable streaming and capture output (default: auto-detect based on TTY)Setup— Run the extension’s setup command (if defined)extension_id— Extension IDInstall— Install a extension from a git URL or local pathsource— Git URL or local path to extension directoryid— Override extension idUpdate— Update an installed extension (git pull)extension_id— Extension ID (omit with –all to update everything)all— Update all installed extensionsforce— Force update even with uncommitted changesUninstall— Uninstall a extensionextension_id— Extension IDAction— Execute a extension action (API call or builtin)extension_id— Extension IDaction_id— Action IDproject— Project ID (required for API actions)data— JSON array of selected data rowsExec— Run a tool from a extension’s vendor directoryextension_id— Extension IDcomponent— Component ID (sets working directory to component path)args— Command and arguments to runSet— Update extension manifest fieldsextension_id— Extension ID (optional if provided in JSON body)json— JSON object to merge into manifest (supports @file and – for stdin)replace— Replace these fields instead of merging arrays
FileCommand
List— List directory contentsproject_id— Project IDpath— Remote directory pathRead— Read file contentproject_id— Project IDpath— Remote file pathraw— Output raw content only (no JSON wrapper)Write— Write content to file (from stdin)project_id— Project IDpath— Remote file pathDelete— Delete a file or directoryproject_id— Project IDpath— Remote path to deleterecursive— Delete directories recursivelyRename— Rename or move a fileproject_id— Project IDold_path— Current pathnew_path— New pathFind— Find files by name patternproject_id— Project IDpath— Directory path to searchname— Filename pattern (glob, e.g., "*.php")file_type— File type: f (file), d (directory), l (symlink)max_depth— Maximum directory depthGrep— Search file contentsproject_id— Project IDpath— Directory path to searchpattern— Search patternname— Filter files by name pattern (e.g., "*.php")max_depth— Maximum directory depthignore_case— Case insensitive searchDownload— Download a file or directory from remote serverproject_id— Project IDpath— Remote file pathlocal_path— Local destination path (defaults to current directory)recursive— Download directories recursivelyEdit— Edit file with line-based or pattern-based operations
FleetCommand
Create— Create a new fleetid— Fleet IDprojects— Project IDs to include (comma-separated or repeated)description— Description of the fleetShow— Display fleet configurationid— Fleet IDSet— Update fleet configurationargsDelete— Delete a fleetid— Fleet IDList— List all fleetsAdd— Add a project to a fleetid— Fleet IDproject— Project ID to addRemove— Remove a project from a fleetid— Fleet IDproject— Project ID to removeProjects— Show projects in a fleetid— Fleet IDComponents— Show component usage across a fleetid— Fleet IDStatus— Show component versions across a fleet (local only)id— Fleet IDCheck— Check component drift across a fleet (compares local vs remote)id— Fleet IDoutdated— Only show components that need updatesSync— [DEPRECATED] Use ‘homeboy deploy’ instead. See issue #101.id— Fleet IDcategory— Sync only specific categories (repeatable)dry_run— Show what would be synced without doing itleader— Override leader server (defaults to fleet-sync.json config)
GitCommand
LogsCommand
List— List pinned log filesproject_id— Project IDShow— Show log file content (shows all pinned logs if path omitted)project_id— Project IDpath— Log file path (optional – shows all pinned logs if omitted)lines— Number of lines to showfollow— Follow log output (like tail -f)local— Execute locally instead of via SSH (for when running on the target server)Clear— Clear log file contentsproject_id— Project IDpath— Log file pathlocal— Execute locally instead of via SSHSearch— Search log file for patternproject_id— Project IDpath— Log file pathpattern— Search patternignore_case— Case insensitive searchlines— Limit to last N lines before searchingcontext— Lines of context around matcheslocal— Execute locally instead of via SSH
ProjectCommand
List— List all configured projectsShow— Show project configurationproject_id— Project IDCreate— Create a new projectjson— JSON input spec for create/update (supports single or bulk)skip_existing— Skip items that already exist (JSON mode only)id— Project ID (CLI mode)domain— Public site domain (CLI mode)server_id— Optional server IDbase_path— Optional remote base pathtable_prefix— Optional table prefixSet— Update project configuration fieldsargsRemove— Remove items from project configuration arraysproject_id— Project ID (optional if provided in JSON body)spec— JSON spec (positional, supports @file and – for stdin)json— Explicit JSON spec (takes precedence over positional)Rename— Rename a project (changes ID)project_id— Current project IDnew_id— New project IDComponents— Manage project componentscommandPin— Manage pinned files and logscommandDelete— Delete a project configurationproject_id— Project ID
ProjectComponentsCommand
List— List associated componentsproject_id— Project IDSet— Replace project components with the provided listproject_id— Project IDcomponent_ids— Component IDsAdd— Add one or more componentsproject_id— Project IDcomponent_ids— Component IDsRemove— Remove one or more componentsproject_id— Project IDcomponent_ids— Component IDsClear— Remove all componentsproject_id— Project ID
ProjectPinCommand
List— List pinned itemsproject_id— Project IDAdd— Pin a file or logproject_id— Project IDpath— Path to pin (relative to basePath or absolute)label— Optional display labeltail— Number of lines to tail (logs only)Remove— Unpin a file or logproject_id— Project IDpath— Path to unpin
RefactorCommand
Rename— Rename a term across the codebase with case-variant awarenessfrom— Term to rename fromto— Term to rename tocomponent— Component ID (uses its local_path as the root)path— Directory path to refactor (alternative to –component)scope— Scope: code, config, all (default: all)literal— Exact string matching (no boundary detection, no case variants)write— Apply changes to disk (default is dry-run)
ServerCommand
Create— Register a new SSH serverjson— JSON input spec for create/update (supports single or bulk)skip_existing— Skip items that already exist (JSON mode only)id— Server ID (CLI mode)host— SSH hostuser— SSH usernameport— SSH port (default: 22)Show— Display server configurationserver_id— Server IDSet— Modify server settingsargsDelete— Remove a server configurationserver_id— Server IDList— List all configured serversKey— Manage SSH keys
KeyCommand
Generate— Generate a new SSH key pair and set it for this serverserver_id— Server IDShow— Display the public SSH keyserver_id— Server IDImport— Import an existing SSH private key and set it for this serverserver_id— Server IDprivate_key_path— Path to private key fileUse— Use an existing SSH private key file path for this serverserver_id— Server IDprivate_key_path— Path to private key fileUnset— Unset the server SSH identity file (use normal SSH resolution)server_id— Server ID
SshSubcommand
List— List configured SSH server targets
VersionCommand
Show— Show current version (default: homeboy binary)component_id— Component ID (optional – shows homeboy binary version when omitted)path— Override local_path for version file lookupSet— [DEPRECATED] Use ‘homeboy version bump’ or ‘homeboy release’ instead. See issue #259.component_id— Component IDnew_version— New version (e.g., 1.2.3)path— Override local_path for version file lookupBump— Bump version with semantic versioning (alias forrelease)component_id— Component IDbump_type— Version bump type (patch, minor, major)dry_run— Preview what will happen without making changespath— Override local_path for version operations
Commands
Project— Manage project configurationSsh— SSH into a project server or configured serverServer— Manage SSH server configurationsTest— Run tests for a componentLint— Lint a componentCleanup— Identify config drift, stale state, and hygiene issuesDb— Database operationsFile— Remote file operationsFleet— Manage fleets (groups of projects)Logs— Remote log viewingTransfer— Transfer files between serversDeploy— Deploy components to remote serverComponent— Manage standalone component configurationsConfig— Manage global Homeboy configurationExtension— Execute CLI-compatible extensionsInit— Get repo context (read-only, creates no state)Status— Actionable component status overviewDocs— Display CLI documentationChangelog— Changelog operationsGit— Git operations for componentsVersion— Version management for componentsBuild— Build a componentChanges— Show changes since last version tagRelease— Plan release workflowsAudit— Audit code conventions and detect architectural driftRefactor— Structural refactoring (rename terms across codebase)Auth— Authenticate with a project’s APIApi— Make API requests to a projectUpgrade— Upgrade Homeboy to the latest versionUpdate— Alias for upgradeList— List available commands (alias for –help)