Command-Line Interface
The buffy CLI reads Buffy.toml and the profiles in .buffy/, builds all
configured language targets in parallel, and (with --publish) pushes them to
their respective registries or remotes.
Synopsis
buffy [OPTIONS] [COMMAND]
When invoked without a subcommand, Buffy builds every profile in .buffy/. If
the .buffy/ directory does not exist or contains no profiles, Buffy exits
with a notice and no error.
Commands
buffy— Build all configured profiles.buffy check— Verify that required tools are installed.
buffy
Build (and optionally publish) every profile.
buffy
Each profile is built independently and in parallel. If any profile fails, Buffy continues building the others and reports a combined diagnostic at the end, listing every profile that succeeded and every profile that failed with its underlying error.
With --publish, every profile that built successfully is then published to
its configured destination.
buffy check
Verify that all required external tools are installed and reachable on the
PATH for the configured profiles. No code is generated and nothing is built.
buffy check
The check is profile-aware: it only verifies the tools needed by the
configured profiles. For instance, a project with only a rust profile does
not require mvn to be installed.
If a tool is missing, Buffy emits a diagnostic with the tool name and an installation hint specific to common platforms. See the per-language profile chapter for the full list of tools each variant requires.
Options
-p, --publish
Publish every profile after a successful build.
buffy --publish
Each profile is published to the destination configured in its
.buffy/<name>.toml file:
cratefor Rust → the configured Cargo registry (defaulting to crates.io).npmfor JavaScript / TypeScript → the configured npm registry.maven_centralfor Java / Kotlin → the Sonatype Central Portal.gitfor any language → the configured Git remote, with av<version>tag.
If a required environment variable is missing, Buffy reports a diagnostic with the variable name and a description of how to obtain it. See Environment Variables.
--publish-version <VERSION>
Override the version from Buffy.toml for this run.
buffy --publish --publish-version 1.2.3
The value must be a valid SemVer version. This is intended for CI pipelines
that derive the release version from a Git tag rather than committing it into
Buffy.toml.
The override applies only to the current invocation; the file on disk is not modified.
--verbose
Print the full output (both stdout and stderr) of every external tool
Buffy invokes.
buffy --verbose
By default, Buffy streams tool output to your terminal as it arrives, prefixed
with the profile name and the program being run. With --verbose, the
unfiltered streams are shown, which is useful when debugging:
- Maven build failures, where the relevant
[ERROR]lines are mixed in with a long[INFO]log onstdout. - npm install issues that print resolution diagnostics on
stdout. - Cargo warnings about deprecated APIs.
Without --verbose, Buffy still surfaces the relevant error context when a
command fails.
-h, --help
Print a short help message.
-V, --version
Print the Buffy version.
Exit codes
0— All profiles built (and, with--publish, published) successfully.1— One or more profiles failed. The diagnostic at the end of the run lists every failure.
Examples
Build all profiles:
buffy
Verify the toolchain without building:
buffy check
Build and publish using the version from Buffy.toml:
buffy --publish
Override the version (typical CI usage):
buffy --publish --publish-version "${GITHUB_REF_NAME#v}"
Get verbose output for debugging:
buffy --publish --verbose