Buddy Command Reference

On this page 307

This reference is generated from Buddy's runtime command registry and currently contains 305 commands. Run bun run docs:buddy after changing the registry; CI rejects stale output.

Command groups

GroupCommands
ai1
auth4
build15
cloud7
cms2
coming-soon1
commerce2
config1
configure1
core1
dashboard2
db3
deploy1
desktop6
dev8
dns3
docs6
domains3
email7
env7
extension13
format1
forms2
general49
generate16
inspire1
key1
link1
lint1
mail31
make18
marketing2
migrate6
monitoring2
package1
phone4
ports2
projects1
publish5
queue21
realtime2
route1
scaffold1
schedule6
search2
search-engine2
seed1
serve1
setup3
simulator2
sms6
stack3
stripe1
test4
types2
unlink1
unpublish1
upgrade5
user2

Commands

about

Display diagnostic information about Stacks

  • Usage: $ buddy about
  • Namespace: none
  • Aliases: none
  • Arguments: none

add

Pull a registered stack and merge its project files into this Stacks application

  • Usage: $ buddy add <stack>
  • Namespace: none
  • Aliases: none
  • Arguments: <stack>
OptionDescriptionContractDefault
--forceOverwrite existing filesboolean, optionalfalse
--dry-runShow which files would be installed without changing the projectboolean, optionalfalse
--conflictResolve existing files with skip, overwrite, or backupvalue, required"skip"
-p, --projectTarget a specific Stacks projectvalue, required-
--verboseShow every file copied or skippedboolean, optionalfalse

Examples:

buddy add calendar
buddy add table --dry-run
buddy add calendar --conflict backup

ai:context

Generate compact deterministic project context for coding models

  • Usage: $ buddy ai:context
  • Namespace: ai
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-J, --jsonEmit the versioned machine-readable context contractboolean, optionalfalse
-o, --outputWrite output to a file instead of stdoutvalue, optional-
--max-charsMaximum characters in the prompt context payloadvalue, optional4000
--modelModel family used for the heuristic token estimatevalue, optional"gpt-4o"

Examples:

buddy ai:context
buddy ai:context --json
buddy ai:context --json --output storage/framework/runtime/ai-context.json

auth:client

Create a new OAuth client

  • Usage: $ buddy auth:client
  • Namespace: auth
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-n, --nameClient namevalue, optional"OAuth Client"
-r, --redirectRedirect URIvalue, optional"http://localhost"
--personalCreate a personal access clientboolean, optionalfalse
--passwordCreate a password grant clientboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

auth:prune

Prune expired and revoked tokens

  • Usage: $ buddy auth:prune
  • Namespace: auth
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--expiredPrune expired tokens (default: true)boolean, optionaltrue
--revokedPrune revoked tokens (default: true)boolean, optionaltrue
-d, --daysPrune revoked tokens older than N daysvalue, optional7
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

auth:setup

Set up authentication (migrations + personal access client)

  • Usage: $ buddy auth:setup
  • Namespace: auth
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

auth:token

Create a personal access client token

  • Usage: $ buddy auth:token
  • Namespace: auth
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build

Build any of your libraries (packages) for production use

  • Usage: $ buddy build [type]
  • Namespace: none
  • Aliases: none
  • Arguments: [type]
OptionDescriptionContractDefault
-c, --componentsBuild your component libraryboolean, optional-
-w, --web-componentsBuild your framework agnostic web component libraryboolean, optional-
-e, --elementsAn alias to the -w flagboolean, optional-
-f, --functionsBuild your function libraryboolean, optional-
-k, --desktopBuild the Desktop Applicationboolean, optional-
-m, --mobileBuild the native iOS and Android applicationsboolean, optional-
--androidBuild the native Android applicationboolean, optional-
--iosBuild the native iOS applicationboolean, optional-
-p, --viewsBuild your frontendboolean, optional-
--pagesBuild your frontendboolean, optional-
-d, --docsBuild your documentationboolean, optional-
-b, --buddyBuild the Buddy binaryboolean, optionalfalse
-s, --stacksBuild Stacks frameworkboolean, optionalfalse
--projectTarget a specific projectvalue, optionalfalse
--serverBuild the Stacks cloud server (Docker image)boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:android

Build the native Android application

  • Usage: $ buddy build:android
  • Namespace: build
  • Aliases: prod:android
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:cli

Automagically build the CLI

  • Usage: $ buddy build:cli
  • Namespace: build
  • Aliases: prod:cli
  • Arguments: none
OptionDescriptionContractDefault
-b, --buddyBuild the Buddy binaryboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:components

Automagically build component libraries for production use & npm/CDN distribution

  • Usage: $ buddy build:components
  • Namespace: build
  • Aliases: prod:components
  • Arguments: none
OptionDescriptionContractDefault
-c, --componentsBuild your component libraryboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:core

Automagically build the Stacks core.

  • Usage: $ buddy build:core
  • Namespace: build
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:desktop

Build the Desktop Application

  • Usage: $ buddy build:desktop
  • Namespace: build
  • Aliases: prod:desktop
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:dmg

Package the desktop build as a macOS .app inside a .dmg

  • Usage: $ buddy build:dmg
  • Namespace: build
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:docs

Automagically build your documentation site.

  • Usage: $ buddy build:docs
  • Namespace: build
  • Aliases: prod:docs, build:documentation, prod:documentation
  • Arguments: none
OptionDescriptionContractDefault
-d, --docsBuild your documentationboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:frontend

Build your frontend

  • Usage: $ buddy build:frontend
  • Namespace: build
  • Aliases: build:pages, build:views, prod:frontend
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:frontend-static

Build the prerendered marketing/public static site (storage/framework/frontend-dist)

  • Usage: $ buddy build:frontend-static
  • Namespace: build
  • Aliases: build:public, prod:frontend-static
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:functions

Automagically build function library for npm/CDN distribution

  • Usage: $ buddy build:functions
  • Namespace: build
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-f, --functionsBuild your function libraryboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:ios

Build the native iOS application

  • Usage: $ buddy build:ios
  • Namespace: build
  • Aliases: prod:ios
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:mobile

Build the native iOS and Android applications

  • Usage: $ buddy build:mobile
  • Namespace: build
  • Aliases: prod:mobile
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:server

Build the Stacks cloud server (Docker image)

  • Usage: $ buddy build:server
  • Namespace: build
  • Aliases: prod:server, build:docker
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:stacks

Build the Stacks framework.

  • Usage: $ buddy build:stacks
  • Namespace: build
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-s, --stacksBuild Stacks frameworkboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

build:web-components

Automagically build Web Component library for npm/CDN distribution

  • Usage: $ buddy build:web-components
  • Namespace: build
  • Aliases: build:wc, prod:web-components, prod:wc
  • Arguments: none
OptionDescriptionContractDefault
-w, --web-componentsBuild your framework agnostic web component libraryboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cd

Print the absolute path of a Stacks project by name

  • Usage: $ buddy cd [name]
  • Namespace: none
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
--evalEmit cd "path" instead of just the path - pair with eval "$(buddy cd <name> --eval)" for real shell-cdboolean, optionalfalse
--rootSearch root for the project scan (overrides STACKS_PROJECTS_ROOT and the home-dir default)value, required-
--verboseEnable verbose outputboolean, optionalfalse

changelog

Create a CHANGELOG.md file

  • Usage: $ buddy changelog
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-q, --quietMinimal outputboolean, optionalfalse
-d, --dry-runDo not write the file, just output the changesboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--fromStart git revision for generated changelogvalue, required-
--toEnd git revision for generated changelogvalue, required-
--versionVersion heading to use for the generated changelog entryvalue, required-
--verboseEnable verbose outputboolean, optionalfalse

clean

Removes all node_modules & lock files

  • Usage: $ buddy clean
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-f, --forceSkip the confirmation prompt (required in CI/non-interactive shells)boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud

Interact with the Stacks Cloud

  • Usage: $ buddy cloud
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--sshSSH into the Stacks Cloudboolean, optionalfalse
--connectSSH into the Stacks Cloudboolean, optionalfalse
--invalidate-cacheInvalidate the CloudFront cacheboolean, optionalfalse
--pathsThe paths to invalidatevalue, optional-
--diffShow the diff of the current, undeployed cloud changesboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:add

Add a resource to the Stacks Cloud

  • Usage: $ buddy cloud:add
  • Namespace: cloud
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--jump-boxRemove the jump-boxboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:cleanup

Remove all resources that were retained during the cloud deletion

  • Usage: $ buddy cloud:cleanup
  • Namespace: cloud
  • Aliases: cloud:clean-up
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:dashboard

Run the local Stacks Cloud management cockpit (servers, sites, deploys)

  • Usage: $ buddy cloud:dashboard
  • Namespace: cloud
  • Aliases: cloud:cockpit
  • Arguments: none
OptionDescriptionContractDefault
--hostHost to bind the dashboard tovalue, optional"127.0.0.1"
--portPort to bind the dashboard tovalue, optional"7676"
--envEnvironment to managevalue, optional-
--verboseEnable verbose outputboolean, optionalfalse

cloud:diff

Show the diff of the current, undeployed cloud changes

  • Usage: $ buddy cloud:diff
  • Namespace: cloud
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:invalidate-cache

Invalidate the CloudFront cache

  • Usage: $ buddy cloud:invalidate-cache
  • Namespace: cloud
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--pathsThe paths to invalidatevalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:optimize-cost

Remove certain resources that may be re-applied at a later time

  • Usage: $ buddy cloud:optimize-cost
  • Namespace: cloud
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--jump-boxRemove the jump-boxboolean, optionaltrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cloud:remove

Remove the Stacks Cloud. In case it fails, try again

  • Usage: $ buddy cloud:remove
  • Namespace: cloud
  • Aliases: cloud:destroy, cloud:rm, undeploy
  • Arguments: none
OptionDescriptionContractDefault
--jump-boxRemove the jump-boxboolean, optionalfalse
--forceForce deletion of stack in bad stateboolean, optionalfalse
--yesSkip confirmation promptsboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

cms:install

Activate the cms feature bundle. Post/Page/Author/Comment/Tag models + content edit dashboards.

  • Usage: $ buddy cms:install
  • Namespace: cms
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing cms files in the project (default skips existing paths so the install is idempotent).boolean, optional-

cms:uninstall

Deactivate the cms feature bundle.

  • Usage: $ buddy cms:uninstall
  • Namespace: cms
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the cms scaffolding (action/model/view files). Flip the flag only.boolean, optional-

coming-soon

Put the application into coming soon mode

  • Usage: $ buddy coming-soon
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--messageThe message to displayvalue, optionalfalse
--secretThe secret phrase to bypass coming soon modevalue, optionalfalse
--allowIP addresses allowed to access the applicationvalue, optionalfalse
--statusThe HTTP status code to returnvalue, optional"200"
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy coming-soon
buddy coming-soon --secret=trailhead
buddy coming-soon --message="Opening soon"

coming-soon:status

Check if the application is in coming soon mode

  • Usage: $ buddy coming-soon:status
  • Namespace: coming-soon
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

commerce:install

Activate the commerce feature bundle. Order/Cart/Product/Customer/Coupon/GiftCard/Shipping + storefront API.

  • Usage: $ buddy commerce:install
  • Namespace: commerce
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing commerce files in the project (default skips existing paths so the install is idempotent).boolean, optional-

commerce:uninstall

Deactivate the commerce feature bundle.

  • Usage: $ buddy commerce:uninstall
  • Namespace: commerce
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the commerce scaffolding (action/model/view files). Flip the flag only.boolean, optional-

commit

Commit your staged changes

  • Usage: $ buddy commit
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

completion

Generate shell completion scripts

  • Usage: $ buddy completion [shell]
  • Namespace: none
  • Aliases: none
  • Arguments: [shell]
OptionDescriptionContractDefault
-s, --shellShell type (bash, zsh, fish)value, optional-

Examples:

buddy completion bash
buddy completion zsh
buddy completion fish
buddy completion bash > /usr/local/etc/bash_completion.d/buddy

config:migrate

Apply config-shape codemods for the latest Stacks version

  • Usage: $ buddy config:migrate
  • Namespace: config
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--dry-runPreview changes without writingboolean, optionalfalse
--onlyRun a single codemod by idvalue, optional""

configure

Configure options

  • Usage: $ buddy configure
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--awsConfigure the AWS connectionboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

configure:aws

Configure the AWS connection

  • Usage: $ buddy configure:aws
  • Namespace: configure
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--profileThe AWS profile to useboolean, optional"stacks"
--verboseEnable verbose outputboolean, optionalfalse
--access-key-idThe AWS access keyboolean, optional-
--secret-access-keyThe AWS secret access keyboolean, optional-
--regionThe AWS regionboolean, optional-
--outputThe AWS output formatboolean, optional-
--quietSuppress outputboolean, optional-

core:status

Report whether this project runs on a vendored storage/framework/core or on the published packages

  • Usage: $ buddy core:status
  • Namespace: core
  • Aliases: publish:core:status
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy core:status

dashboard:install

Activate the dashboard feature bundle. Admin SPA shell + Activity/Log/Request/Deployment/Notification dashboards.

  • Usage: $ buddy dashboard:install
  • Namespace: dashboard
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing dashboard files in the project (default skips existing paths so the install is idempotent).boolean, optional-

dashboard:uninstall

Deactivate the dashboard feature bundle.

  • Usage: $ buddy dashboard:uninstall
  • Namespace: dashboard
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the dashboard scaffolding (action/model/view files). Flip the flag only.boolean, optional-

db:backup

Dump the application database to a file

  • Usage: $ buddy db:backup
  • Namespace: db
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--outWhere to write the dump (default: storage/backups/database)value, optional-
--retainHow many dumps to keepvalue, optional"7"
--before-migrationsDeploy mode: succeed quietly when there is no database yetboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy db:backup
buddy db:backup --out /var/backups/app --retain 30

db:backups

List the database dumps that have been taken

  • Usage: $ buddy db:backups
  • Namespace: db
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--outWhere dumps are kept (default: storage/backups/database)value, optional-

Examples:

buddy db:backups

db:restore

Restore the application database from a dump

  • Usage: $ buddy db:restore [file]
  • Namespace: db
  • Aliases: none
  • Arguments: [file]
OptionDescriptionContractDefault
--outWhere dumps are kept (default: storage/backups/database)value, optional-
--forceSkip the confirmation promptboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy db:restore
buddy db:restore 2026-08-13T09-00-00-000.sqlite.sqlite --force

deploy

Deploy your project

  • Usage: $ buddy deploy [env]
  • Namespace: none
  • Aliases: none
  • Arguments: [env]
OptionDescriptionContractDefault
--domainSpecify a domain to deploy tovalue, required-
-p, --projectTarget a specific projectvalue, optionalfalse
--prodDeploy to productionboolean, optionalfalse
--devDeploy to developmentboolean, optionalfalse
--yesConfirm all prompts by defaultboolean, optionalfalse
--siteDeploy only this one site to the existing server (multi-tenant surgical add)value, required-
--stagingDeploy to stagingboolean, optionalfalse
--dockerAlso build an OCI image with pantry (native, no Docker daemon) and push it to the pantry registryboolean, optionalfalse
-J, --jsonEmit a machine-readable deployment previewboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

deploy:rollback

Roll back a deployment to a preserved release

  • Usage: $ buddy deploy:rollback [site]
  • Namespace: deploy
  • Aliases: none
  • Arguments: [site]
OptionDescriptionContractDefault
--envEnvironment to roll backvalue, required"production"
--toPreserved release id to activatevalue, required-
--dry-runPreview the rollback without changing the active releaseboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

desktop:apple:csr

Generate local private keys and CSRs for Mac App Store distribution certificates

  • Usage: $ buddy desktop:apple:csr
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--common-nameCertificate request common namevalue, required-
--outputDirectory for private keys and certificate requestsvalue, required-

desktop:apple:doctor

Validate Mac App Store tooling, credentials, certificates, and project metadata

  • Usage: $ buddy desktop:apple:doctor
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--app-nameMac App Store display namevalue, required-
--bundle-idReverse-DNS bundle identifiervalue, required-
--team-idApple Developer team IDvalue, required-
--app-signing-identityMac App Distribution signing identityvalue, required-
--installer-signing-identityMac Installer Distribution signing identityvalue, required-
--provisioning-profileMac App Store provisioning profilevalue, required-
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathApp Store Connect AuthKey .p8 filevalue, required-

desktop:apple:init

Create a GitHub Actions caller for the reusable Stacks Mac App Store workflow

  • Usage: $ buddy desktop:apple:init
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceReplace an existing workflowboolean, optional-

desktop:apple:package

Build, sandbox, sign, and package a Mac App Store desktop app

  • Usage: $ buddy desktop:apple:package
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--app-nameMac App Store display namevalue, required-
--bundle-idReverse-DNS bundle identifiervalue, required-
--team-idApple Developer team IDvalue, required-
--app-versionMarketing versionvalue, required-
--build-numberUnique App Store build numbervalue, required-
--minimum-macosMinimum supported macOS versionvalue, required-
--categoryLSApplicationCategoryType valuevalue, required-
--app-signing-identityMac App Distribution signing identityvalue, required-
--installer-signing-identityMac Installer Distribution signing identityvalue, required-
--provisioning-profileMac App Store provisioning profilevalue, required-
--iconOptional .icns app iconvalue, required-
--skip-buildPackage existing storage/framework/desktop-dist artifactsboolean, optional-

desktop:apple:provision

Plan or reconcile Apple Bundle ID, capabilities, certificates, and profile

  • Usage: $ buddy desktop:apple:provision
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--app-nameMac App Store display namevalue, required-
--bundle-idReverse-DNS bundle identifiervalue, required-
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathApp Store Connect AuthKey .p8 filevalue, required-
--capabilitiesComma-separated Apple capability typesvalue, required-
--app-certificate-csrCSR for a missing Mac App Distribution certificatevalue, required-
--installer-certificate-csrCSR for a missing Mac Installer Distribution certificatevalue, required-
--profile-nameProvisioning profile namevalue, required-
--outputDirectory for the plan and downloaded Apple assetsvalue, required-
--planReport the idempotent Apple resource diff without mutating itboolean, optional-
--applyApply the Apple resource diff without revoking existing certificatesboolean, optional-

desktop:apple:publish

Build and validate or upload a signed Mac App Store package

  • Usage: $ buddy desktop:apple:publish
  • Namespace: desktop
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--app-nameMac App Store display namevalue, required-
--bundle-idReverse-DNS bundle identifiervalue, required-
--team-idApple Developer team IDvalue, required-
--app-versionMarketing versionvalue, required-
--build-numberUnique App Store build numbervalue, required-
--minimum-macosMinimum supported macOS versionvalue, required-
--categoryLSApplicationCategoryType valuevalue, required-
--app-signing-identityMac App Distribution signing identityvalue, required-
--installer-signing-identityMac Installer Distribution signing identityvalue, required-
--provisioning-profileMac App Store provisioning profilevalue, required-
--iconOptional .icns app iconvalue, required-
--skip-buildPackage existing storage/framework/desktop-dist artifactsboolean, optional-
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathApp Store Connect AuthKey .p8 filevalue, required-
--validate-onlyValidate with App Store Connect without uploadingboolean, optional-
--package-onlyCreate the signed package without contacting App Store Connectboolean, optional-

dev

Start development server

  • Usage: $ buddy dev [server]
  • Namespace: none
  • Aliases: none
  • Arguments: [server]
OptionDescriptionContractDefault
-f, --frontendStart the frontend development serverboolean, optional-
-a, --apiStart the local API development serverboolean, optional-
-c, --componentsStart the Components development serverboolean, optional-
-d, --dashboardStart the Dashboard development serverboolean, optional-
-k, --desktopStart the Desktop App development serverboolean, optional-
-n, --nativeStart the app in a native Craft windowboolean, optional-
-o, --docsStart the Documentation development serverboolean, optional-
-s, --system-trayStart the System Tray development serverboolean, optional-
-i, --interactiveGet asked which development server to startboolean, optionalfalse
-l, --with-localhostInclude the localhost URL in the outputboolean, optionalfalse
--browserOpen the application in a browser instead of its configured native windowboolean, optionalfalse
--siteOpen the marketing site instead of the applicationboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:api

Start the local API development server

  • Usage: $ buddy dev:api
  • Namespace: dev
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--no-watch-typesSkip the model/config type-regeneration watcherboolean, optional, negatedfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:components

Start the Components development server

  • Usage: $ buddy dev:components
  • Namespace: dev
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:dashboard

Start the Dashboard development server

  • Usage: $ buddy dev:dashboard
  • Namespace: dev
  • Aliases: dev:admin
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:desktop

Start the Desktop App development server

  • Usage: $ buddy dev:desktop
  • Namespace: dev
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:docs

Start the Documentation development server

  • Usage: $ buddy dev:docs
  • Namespace: dev
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:frontend

Start the frontend development server

  • Usage: $ buddy dev:frontend
  • Namespace: dev
  • Aliases: dev:pages, dev:views
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--siteOpen the marketing site instead of the applicationboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:native

Start the app in a native Craft window

  • Usage: $ buddy dev:native
  • Namespace: dev
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dev:system-tray

Start the System Tray development server

  • Usage: $ buddy dev:system-tray
  • Namespace: dev
  • Aliases: dev:tray
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dns

Lists the DNS records for a domain

  • Usage: $ buddy dns [domain]
  • Namespace: none
  • Aliases: none
  • Arguments: [domain]
OptionDescriptionContractDefault
-q, --queryHost name or IP address to queryvalue, required-
-t, --typeType of the DNS record being queried (A, MX, NS…)value, required"A"
-n, --nameserverAddress of the nameserver to send packets tovalue, required-
--classNetwork class of the DNS record being queried (IN, CH, HS)value, required-
-U, --udpUse the DNS protocol over UDPboolean, optional-
-T, --tcpUse the DNS protocol over TCPboolean, optional-
-S, --tlsUse the DNS-over-TLS protocolboolean, optional-
-H, --httpsUse the DNS-over-HTTPS protocolboolean, optional-
-1, --shortShort mode: display nothing but the first resultboolean, optionalfalse
-J, --jsonDisplay the output as JSONboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

dns:diff

Show which config/dns.ts records are missing from the live zone

  • Usage: $ buddy dns:diff [domain]
  • Namespace: dns
  • Aliases: none
  • Arguments: [domain]
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

dns:pull

Print a domain's live DNS records as a config/dns.ts block

  • Usage: $ buddy dns:pull [domain]
  • Namespace: dns
  • Aliases: none
  • Arguments: [domain]
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

dns:sync

Additively sync config/dns.ts to the registrar (creates missing records; never deletes or overwrites)

  • Usage: $ buddy dns:sync [domain]
  • Namespace: dns
  • Aliases: none
  • Arguments: [domain]
OptionDescriptionContractDefault
--dry-runShow the plan without writing any recordsboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

docs:artifacts

Regenerate the generated API artifacts (OpenAPI + types)

  • Usage: $ buddy docs:artifacts
  • Namespace: docs
  • Aliases: none
  • Arguments: none

docs:artifacts:check

Verify the generated API artifacts are current

  • Usage: $ buddy docs:artifacts:check
  • Namespace: docs
  • Aliases: none
  • Arguments: none

docs:buddy

Regenerate the buddy command reference doc

  • Usage: $ buddy docs:buddy
  • Namespace: docs
  • Aliases: none
  • Arguments: none

docs:buddy:check

Verify the buddy command reference doc is current

  • Usage: $ buddy docs:buddy:check
  • Namespace: docs
  • Aliases: none
  • Arguments: none

Report internal documentation links

  • Usage: $ buddy docs:links
  • Namespace: docs
  • Aliases: none
  • Arguments: none

docs:links:check

Verify internal documentation links resolve

  • Usage: $ buddy docs:links:check
  • Namespace: docs
  • Aliases: none
  • Arguments: none

doctor

Run health checks on your Stacks installation

  • Usage: $ buddy doctor
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--no-failPrint results but always exit 0 (CI ramp-up)boolean, optional, negatedtrue

domains:add

Add a domain to your cloud

  • Usage: $ buddy domains:add <domain>
  • Namespace: domains
  • Aliases: none
  • Arguments: <domain>
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

domains:purchase

Purchase a domain

  • Usage: $ buddy domains:purchase <domain>
  • Namespace: domains
  • Aliases: none
  • Arguments: <domain>
OptionDescriptionContractDefault
--yearsNumber of years to purchase the domain forvalue, required1
--privacyEnable privacy protectionboolean, optionaltrue
--auto-renewEnable auto-renewboolean, optionaltrue
--first-nameRegistrant first namevalue, required-
--last-nameRegistrant last namevalue, required-
--organizationRegistrant organization namevalue, required-
--address-line1Registrant address line 1value, required-
--address-line2Registrant address line 2value, required-
--cityRegistrant cityvalue, required-
--stateRegistrant statevalue, required-
--countryRegistrant country codevalue, required-
--zipRegistrant zipvalue, required-
--phoneRegistrant phonevalue, required-
--emailRegistrant emailvalue, required-
--admin-first-nameAdmin first namevalue, required-
--admin-last-nameAdmin last namevalue, required-
--admin-organizationAdmin organizationvalue, required-
--admin-address-line1Admin address line 1value, required-
--admin-address-line2Admin address line 2value, required-
--admin-cityAdmin cityvalue, required-
--admin-stateAdmin statevalue, required-
--admin-countryAdmin country codevalue, required-
--admin-zipAdmin zipvalue, required-
--admin-phoneAdmin phone numbervalue, required-
--admin-emailAdmin emailvalue, required-
--tech-first-nameTech first namevalue, required-
--tech-last-nameTech last namevalue, required-
--tech-organizationTech organization namevalue, required-
--tech-address-line1Tech address line 1value, required-
--tech-address-line2Tech address line 2value, required-
--tech-cityTech cityvalue, required-
--tech-stateTech statevalue, required-
--tech-countryTech countryvalue, required-
--tech-zipTech zipvalue, required-
--tech-phoneTech phonevalue, required-
--tech-emailTech emailvalue, required-
--privacy-adminEnable privacy protection for adminboolean, optionaltrue
--privacy-techEnable privacy protection for techboolean, optionaltrue
--privacy-registrantEnable privacy protection for registrantboolean, optionaltrue
--contact-typeContact typevalue, required"person"
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

domains:remove

Remove a domain from your cloud

  • Usage: $ buddy domains:remove <domain>
  • Namespace: domains
  • Aliases: none
  • Arguments: <domain>
OptionDescriptionContractDefault
--yesSkip the confirmation promptboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

down

Put the application into maintenance mode

  • Usage: $ buddy down
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--messageThe message to displayvalue, optionalfalse
--retryThe number of seconds after which the request may be retriedvalue, optionalfalse
--secretThe secret phrase to bypass maintenance modevalue, optionalfalse
--allowIP addresses allowed to access the applicationvalue, optionalfalse
--redirectRedirect all requests to a given URLvalue, optionalfalse
--statusThe HTTP status code to returnvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy down
buddy down --message="Upgrading database"
buddy down --secret=my-secret-token
buddy down --retry=60
buddy down --allow=192.168.1.1 --allow=192.168.1.2

email

Email server management commands

  • Usage: $ buddy email
  • Namespace: none
  • Aliases: mail
  • Arguments: none

email:inbox

View inbox emails from S3

  • Usage: $ buddy email:inbox [mailbox]
  • Namespace: email
  • Aliases: none
  • Arguments: [mailbox]
OptionDescriptionContractDefault
-n, --limitNumber of emails to showvalue, required"20"
--rawShow raw email content for a specific message IDvalue, required-
--bucketS3 bucket name overridevalue, required-

email:list

List configured mailboxes

  • Usage: $ buddy email:list
  • Namespace: email
  • Aliases: none
  • Arguments: none

email:logs

View email processing logs

  • Usage: $ buddy email:logs
  • Namespace: email
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-n, --linesNumber of log lines to showvalue, required"20"

email:reprocess

Reprocess raw emails from S3 into mailbox structure

  • Usage: $ buddy email:reprocess
  • Namespace: email
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--bucketS3 bucket name overridevalue, required-
--prefixS3 prefix to scanvalue, required"inbox/"
--domainEmail domainvalue, required"stacksjs.com"

email:status

Show email server status

  • Usage: $ buddy email:status
  • Namespace: email
  • Aliases: none
  • Arguments: none

email:test

Send a test email

  • Usage: $ buddy email:test [recipient]
  • Namespace: email
  • Aliases: none
  • Arguments: [recipient]

email:verify

Check domain verification status

  • Usage: $ buddy email:verify
  • Namespace: email
  • Aliases: none
  • Arguments: none

env:check

Check environment configuration and validate setup

  • Usage: $ buddy env:check
  • Namespace: env
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--strictRequire every value in a committed env file to be encrypted, not just secret-shaped onesboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy env:check
buddy env:check --file .env.production
buddy env:check --file .env.production --strict

env:decrypt

Decrypt a value

  • Usage: $ buddy env:decrypt [key]
  • Namespace: env
  • Aliases: none
  • Arguments: [key]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--fk, --file-keysThe path to the file containing the keysvalue, optional""
-o, --stdoutOutput the result to stdoutboolean, optionalfalse

Examples:

buddy env:decrypt
buddy env:decrypt --file .env.production
buddy env:decrypt -k "SECRET_*"

env:encrypt

Encrypt a value

  • Usage: $ buddy env:encrypt [key]
  • Namespace: env
  • Aliases: none
  • Arguments: [key]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--fk, --file-keysThe path to the file containing the keysvalue, optional""
-o, --stdoutOutput the result to stdoutboolean, optionalfalse
--ek, --exclude-keyThe key to exclude from encryptionvalue, optional""

Examples:

buddy env:encrypt
buddy env:encrypt --file .env.production
buddy env:encrypt -k "SECRET_*"

env:get

Get an environment variable

  • Usage: $ buddy env:get [key]
  • Namespace: env
  • Aliases: none
  • Arguments: [key]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--formatThe format to output the result (json, shell, eval)value, optional"json"
-a, --allGet all environment variablesboolean, optionalfalse
-p, --prettyPretty print the resultboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy env:get SECRET
buddy env:get SECRET --file .env.production
buddy env:get --all --pretty
buddy env:get --format shell
buddy env:get --format eval
buddy env:get --format json

env:keypair

Generate a keypair

  • Usage: $ buddy env:keypair [key]
  • Namespace: env
  • Aliases: none
  • Arguments: [key]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--fk, --file-keysThe path to the file containing the keysvalue, optional""
--formatThe format to output the result (json, shell, eval)value, optional"json"

Examples:

buddy env:keypair
buddy env:keypair --file .env.production
buddy env:keypair DOTENV_PRIVATE_KEY

env:rotate

Rotate a keypair

  • Usage: $ buddy env:rotate [key]
  • Namespace: env
  • Aliases: none
  • Arguments: [key]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--fk, --file-keysThe path to the file containing the keysvalue, optional""
-o, --stdoutOutput the result to stdoutboolean, optionalfalse
--ek, --exclude-keyThe key to exclude from encryptionvalue, optional""

Examples:

buddy env:rotate
buddy env:rotate --file .env.production

env:set

Set an environment variable

  • Usage: $ buddy env:set [key] [value]
  • Namespace: env
  • Aliases: none
  • Arguments: [key], [value]
OptionDescriptionContractDefault
-f, --fileThe environment file to usevalue, optional""
--fk, --file-keysThe path to the file containing the keysvalue, optional""
--plainDon't encrypt the valueboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy env:set SECRET=value
buddy env:set SECRET value
buddy env:set SECRET value --file .env.production
buddy env:set SECRET value --plain

extension:build

Build the browser extension (Chrome + Firefox + Safari) from config/extension.ts

  • Usage: $ buddy extension:build
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--targetBuild a single target (chrome | firefox | safari); omit to build allvalue, required-
--versionOverride the extension version (defaults to package.json)value, required-

extension:chrome:publish

Build, upload, and submit the Chrome extension through Web Store API v2

  • Usage: $ buddy extension:chrome:publish
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--versionOverride the extension version (defaults to package.json)value, required-
--service-account-pathGoogle service-account JSON key pathvalue, required-
--access-tokenShort-lived Chrome Web Store OAuth access tokenvalue, required-
--upload-onlyUpload without submitting the item for reviewboolean, optional-
--allow-warningsSubmit even when Chrome reports validation warningsboolean, optional-

extension:chrome:status

Fetch the Chrome Web Store item status

  • Usage: $ buddy extension:chrome:status
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--service-account-pathGoogle service-account JSON key pathvalue, required-
--access-tokenShort-lived Chrome Web Store OAuth access tokenvalue, required-

extension:firefox:previews

Sync the Firefox listing screenshots declared in config/extension.ts

  • Usage: $ buddy extension:firefox:previews
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--api-keyAMO JWT issuervalue, required-
--api-secretAMO JWT secretvalue, required-
--dry-runReport what would change without touching the listingboolean, optional-

extension:firefox:publish

Build and submit the Firefox extension through Mozilla Add-ons

  • Usage: $ buddy extension:firefox:publish
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--versionOverride the extension version (defaults to package.json)value, required-
--api-keyAMO JWT issuervalue, required-
--api-secretAMO JWT secretvalue, required-
--source-codeHuman-readable source archive for AMO reviewvalue, required-
--approval-timeoutHow long to wait for human approval (default 0)value, required-

extension:init

Scaffold a Chrome, Firefox, or Safari extension, including the Safari Xcode app

  • Usage: $ buddy extension:init
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--nameExtension display namevalue, required-
--targetScaffold chrome, firefox, safari, or all (default all)value, required-
--bundle-idSafari container bundle identifiervalue, required-
--team-idApple Developer team used for Safari signingvalue, required-
--platformSafari platform: macos, ios, or all (default all)value, required-
--forceOverwrite existing starter and Safari scaffold filesboolean, optional-

extension:package

Build + zip the browser extension into store-ready archives

  • Usage: $ buddy extension:package
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--targetPackage a single target (chrome | firefox | safari); omit to package allvalue, required-
--versionOverride the extension version (defaults to package.json)value, required-

extension:publish

Publish to every store this project is set up for - the release-tag entry point

  • Usage: $ buddy extension:publish
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--versionOverride the extension version (defaults to package.json)value, required-
--targetsComma-separated subset of chrome,firefox,safarivalue, required-
--dry-runReport the publish plan without uploading anythingboolean, optional-

extension:safari:app

Build the extension and its macOS, iPhone, and iPad Safari container apps

  • Usage: $ buddy extension:safari:app
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--releaseBuild the Release configuration (default Debug)boolean, optional-
--signedSign locally against the Apple ID in Xcode (local builds only - see below)boolean, optional-
--skip-xcodebuildOnly build + sync the extension payloadboolean, optional-
--versionOverride the extension version (defaults to package.json)value, required-
--platformBuild macos, ios, or all (defaults to config safariPlatforms)value, required-

extension:safari:init

Scaffold the Safari container app (Xcode project) from the template

  • Usage: $ buddy extension:safari:init
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--bundle-idBase bundle identifier (defaults to config safariBundleId)value, required-
--dirOutput directory for the Xcode project (default safari)value, required-
--forceOverwrite existing scaffold filesboolean, optional-
--team-idApple Developer team used for signingvalue, required-

extension:safari:provision

Register Safari Bundle IDs and check the App Store Connect app record

  • Usage: $ buddy extension:safari:provision
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathPath to the App Store Connect AuthKey_*.p8 filevalue, required-
--checkReport missing resources without creating Bundle IDsboolean, optional-
--versionCreate or align App Store versions (defaults to package.json)value, required-
--platformProvision macos, ios, or all (defaults to config safariPlatforms)value, required-

extension:safari:publish

Archive and validate or upload the Safari app to App Store Connect

  • Usage: $ buddy extension:safari:publish
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--versionOverride the marketing version (defaults to package.json)value, required-
--build-numberCFBundleVersion (defaults to GITHUB_RUN_NUMBER or Unix time)value, required-
--team-idApple Developer team (defaults to config safariTeamId)value, required-
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathPath to the App Store Connect AuthKey_*.p8 filevalue, required-
--validate-onlyCreate and validate the archive without uploading itboolean, optional-
--platformPublish macos, ios, or all (defaults to config safariPlatforms)value, required-
--skip-screenshotsDo not regenerate the App Store screenshot set before publishingboolean, optional-

extension:safari:submit

Synchronize metadata and submit an existing Safari version to App Review

  • Usage: $ buddy extension:safari:submit
  • Namespace: extension
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--versionMarketing version to submit (defaults to package.json)value, required-
--api-key-idApp Store Connect API key IDvalue, required-
--api-issuer-idApp Store Connect API issuer IDvalue, required-
--api-key-pathPath to the App Store Connect AuthKey_*.p8 filevalue, required-
--platformSubmit macos, ios, or all (defaults to config safariPlatforms)value, required-
--prepare-onlySynchronize the listing without submitting it for reviewboolean, optional-

format

Format your project codebase

  • Usage: $ buddy format
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-w, --writeWrite changes to filesboolean, optionalfalse
-c, --checkCheck formatting without making changesboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

format:check

Check formatting without making changes

  • Usage: $ buddy format:check
  • Namespace: format
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

forms:install

Activate the forms feature bundle. User-defined forms: builder models, conditional fields, public submit + CSV export.

  • Usage: $ buddy forms:install
  • Namespace: forms
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing forms files in the project (default skips existing paths so the install is idempotent).boolean, optional-

forms:uninstall

Deactivate the forms feature bundle.

  • Usage: $ buddy forms:uninstall
  • Namespace: forms
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the forms scaffolding (action/model/view files). Flip the flag only.boolean, optional-

fresh

Re-installs your npm dependencies

  • Usage: $ buddy fresh
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-f, --forceSkip the confirmation prompt (required in CI/non-interactive shells)boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate

Automagically build any of your libraries/packages for production use. Select any of the following packages

  • Usage: $ buddy generate
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-t, --typesGenerate your TypeScript typesboolean, optional-
-e, --entriesGenerate your function & Component Library Entry Pointsboolean, optional-
-w, --web-typesGenerate web-types.json for IDEsboolean, optional-
-c, --custom-dataGenerate VS Code custom data (custom-elements.json) for IDEsboolean, optional-
-i, --ide-helpersGenerate IDE helpersboolean, optional-
-c, --component-metaGenerate component meta informationboolean, optional-
-p, --pantryGenerate the pantry configuration fileboolean, optional-
-o, --openapiGenerate the OpenAPI specificationboolean, optional-
--imagesGenerate every image declared in config/images.tsboolean, optional-
-p, --projectTarget a specific projectvalue, optionalfalse
--core-symlinkGenerate symlink of the core framework to the project rootboolean, optional-
--verboseEnable verbose outputboolean, optionalfalse

generate:app-icons

Generate the app icon and favicon sets

  • Usage: $ buddy generate:app-icons
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

generate:app-store

Generate the App Store screenshot set

  • Usage: $ buddy generate:app-store
  • Namespace: generate
  • Aliases: generate:screenshots
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

generate:component-meta

Generate component meta information

  • Usage: $ buddy generate:component-meta
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Symlink .framework -> storage/framework. A shortcut for core developers.

  • Usage: $ buddy generate:core-symlink
  • Namespace: generate
  • Aliases: none
  • Arguments: none

generate:db-types

Refresh database/types.d.ts for db.selectFrom autocomplete (stacksjs/stacks#1923)

  • Usage: $ buddy generate:db-types
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--dry-runPrint the would-be file content without writingboolean, optionalfalse

generate:entries

Generate your function & Component Library Entry Points

  • Usage: $ buddy generate:entries
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:ide-helpers

Generate IDE helpers

  • Usage: $ buddy generate:ide-helpers
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:images

Generate every image declared in config/images.ts

  • Usage: $ buddy generate:images
  • Namespace: generate
  • Aliases: images:generate
  • Arguments: none
OptionDescriptionContractDefault
--socialOnly build the social cardsboolean, optional-
--app-storeOnly build the App Store screenshotsboolean, optional-
--app-iconsOnly build the app icons and faviconsboolean, optional-
--verboseEnable verbose outputboolean, optionalfalse

generate:migrations

Generate Migrations

  • Usage: $ buddy generate:migrations
  • Namespace: generate
  • Aliases: none
  • Arguments: none

generate:og

Generate the social cards used by link previews

  • Usage: $ buddy generate:og
  • Namespace: generate
  • Aliases: generate:social
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

generate:openapi-spec

Generate the OpenAPI specification

  • Usage: $ buddy generate:openapi-spec
  • Namespace: generate
  • Aliases: generate:openapi
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:pantry-config

Generate the pantry configuration file

  • Usage: $ buddy generate:pantry-config
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:types

Generate your TypeScript types

  • Usage: $ buddy generate:types
  • Namespace: generate
  • Aliases: types:generate
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-w, --watchRe-run on changes to models/ and config/boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:vschema

Derive a Vitess VSchema from your models (writes database/vschema.json)

  • Usage: $ buddy generate:vschema
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--dry-runPrint the VSchema without writing itboolean, optionalfalse
--outWhere to write the VSchemavalue, optional"database/vschema.json"

generate:vscode-custom-data

Generate VS Code custom data (custom-elements.json) for IDEs

  • Usage: $ buddy generate:vscode-custom-data
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

generate:web-types

Generate web-types.json for IDEs

  • Usage: $ buddy generate:web-types
  • Namespace: generate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

http

Send an HTTP request to a domain

  • Usage: $ buddy http [domain]
  • Namespace: none
  • Aliases: none
  • Arguments: [domain]
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-v, --verboseEnable verbose outputboolean, optionalfalse

inspire

Inspire yourself with a random quote

  • Usage: $ buddy inspire
  • Namespace: none
  • Aliases: insp
  • Arguments: none
OptionDescriptionContractDefault
--two, -tInspire yourself with two random quotesboolean, optionalfalse

inspire:two

Inspire yourself with two random quotes

  • Usage: $ buddy inspire:two
  • Namespace: inspire
  • Aliases: none
  • Arguments: none

install

Install your dependencies

  • Usage: $ buddy install
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-v, --verboseEnable verbose outputboolean, optionalfalse

key:generate

Generate & set the application key.

  • Usage: $ buddy key:generate
  • Namespace: key
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

launch

Bring the application out of coming soon mode

  • Usage: $ buddy launch
  • Namespace: none
  • Aliases: coming-soon:off
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy launch

link:core

Point this app's @stacksjs/* at a local framework checkout

  • Usage: $ buddy link:core [...packages]
  • Namespace: link
  • Aliases: none
  • Arguments: [packages...]
OptionDescriptionContractDefault
--pathFramework checkout to link againstvalue, required-
--allLink every core package the app has installedboolean, optionalfalse

Examples:

buddy link:core auth router
buddy link:core --all --path ../stacks

lint

Automagically lints your project codebase

  • Usage: $ buddy lint
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-f, --fixAutomagically fixes all lint errorsboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--stxRun the stx conformance checks instead of code styleboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

lint:fix

Automagically fixes all lint errors

  • Usage: $ buddy lint:fix
  • Namespace: lint
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

list

List all available Buddy commands

  • Usage: $ buddy list
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-f, --filterFilter commands by name or groupvalue, optional-
-n, --namespaceFilter commands by namespace (e.g., make, env, db)value, optional-
-g, --groupedGroup commands by categoryboolean, optionaltrue
--formatOutput format (text, json)value, optional"text"
-J, --jsonOutput the complete command inventory as JSONboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy list
buddy list --filter=make
buddy list --namespace=make
buddy list --namespace=env
buddy list --no-grouped
buddy list --format=json
buddy list --json

mail:credentials

Show SMTP credentials for email access

  • Usage: $ buddy mail:credentials [email]
  • Namespace: mail
  • Aliases: none
  • Arguments: [email]

mail:dev

Run the local mail catcher: accepts every message, delivers none, shows them in the webmail UI

  • Usage: $ buddy mail:dev
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--portSMTP port (default: 1025)value, required-
--ui-portWebmail UI port (default: 8025)value, required-
--no-openDo not open the webmail UI in a browserboolean, optional, negatedfalse

Examples:

buddy mail:dev
buddy mail:dev --port 2525 --ui-port 8080

mail:forward:compile

Compile and validate the live RFC 5228 forwarding script

  • Usage: $ buddy mail:forward:compile
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:logs

Show mail server logs from production

  • Usage: $ buddy mail:logs
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-n, --linesNumber of log lines to showvalue, required"50"
-f, --followFollow log output (poll every 5s)boolean, optional-
--filterFilter logs by pattern (e.g. AUTH, LOGIN, error)value, required-

mail:port25:request

Request port 25 unblock for direct SMTP delivery

  • Usage: $ buddy mail:port25:request
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--providerCloud provider: aws or hetznervalue, required"aws"
--instance-idAWS EC2 instance ID (auto-detected if not provided)value, required-
--server-idHetzner server ID (auto-detected if not provided)value, required-
--elastic-ipAWS Elastic IP addressvalue, required-
--rdnsReverse DNS hostname (e.g. mail.stacksjs.com)value, required-
--use-caseDescription of email use casevalue, required-

mail:port25:status

Check outbound port 25 status on the mail server

  • Usage: $ buddy mail:port25:status
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--providerCloud provider: aws or hetznervalue, required"aws"

mail:preview

Open the dev-only Mailable preview UI in your browser

  • Usage: $ buddy mail:preview
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--no-openPrint the URL but skip the browser-open stepboolean, optional, negatedfalse
--portOverride the API port (default: from config.ports.api / PORT_API)value, required-

Examples:

buddy mail:preview
buddy mail:preview --no-open
buddy mail:preview --port 4000

mail:provision

Provision this app's mail from config/email.ts onto the shared mail server (domain + DKIM + mailboxes + MX/SPF/DKIM/DMARC DNS). Reusable + idempotent; the same reconcile buddy deploy runs.

  • Usage: $ buddy mail:provision
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--ipMail server IP (defaults to the A record of config.email.domain)value, required-

mail:proxy

Start local IMAP proxy for Mail.app

  • Usage: $ buddy mail:proxy
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--portIMAP proxy portvalue, required"1993"
--apiMail API URLvalue, required-

mail:server

Start SMTP relay server

  • Usage: $ buddy mail:server
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--portSMTP portvalue, required"587"

mail:status

Show mail server status

  • Usage: $ buddy mail:status
  • Namespace: mail
  • Aliases: none
  • Arguments: none

mail:storage:backup

Create and verify an encrypted local mail backup

  • Usage: $ buddy mail:storage:backup
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:escrow

Copy the machine-bound LUKS key to AWS Secrets Manager

  • Usage: $ buddy mail:storage:escrow
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--forceReplace a different existing secretboolean, optionalfalse

mail:storage:externalize

Move the LUKS key off-host and require external unlocks

  • Usage: $ buddy mail:storage:externalize
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--forceReplace a different existing secretboolean, optionalfalse

mail:storage:header:backup

Stream a LUKS header backup to S3 with KMS encryption

  • Usage: $ buddy mail:storage:header:backup
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--bucketRecovery bucket (defaults to --s3-backups)value, required-

mail:storage:key:recovery:add

Add an independent LUKS recovery key to macOS Keychain

  • Usage: $ buddy mail:storage:key:recovery:add
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:key:recovery:verify

Verify the Keychain recovery key against the live LUKS header

  • Usage: $ buddy mail:storage:key:recovery:verify
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:key:slot:remove

Remove an unusable non-primary LUKS keyslot

  • Usage: $ buddy mail:storage:key:slot:remove
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--slotLUKS keyslot number to removevalue, required-

mail:storage:key:verify

Verify the external key against the LUKS2 header

  • Usage: $ buddy mail:storage:key:verify
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:kms:ensure

Create and apply the customer-managed production mail KMS key

  • Usage: $ buddy mail:storage:kms:ensure
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:lock

Stop mail and lock external mail storage

  • Usage: $ buddy mail:storage:lock
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:maildir:migrate

Migrate live mailboxes to canonical Maildir++ layout

  • Usage: $ buddy mail:storage:maildir:migrate
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:restic:configure

Configure client-encrypted Restic backups to S3

  • Usage: $ buddy mail:storage:restic:configure
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--forceRotate an existing dedicated IAM access keyboolean, optionalfalse

mail:storage:restore:check

Restore and validate the newest off-host mail snapshot

  • Usage: $ buddy mail:storage:restore:check
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:status

Show encrypted mail storage and external-key status

  • Usage: $ buddy mail:storage:status
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:unlock

Unlock external mail storage and start mail

  • Usage: $ buddy mail:storage:unlock
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"

mail:storage:volume:migrate

Create a dedicated Hetzner volume and migrate encrypted mail storage

  • Usage: $ buddy mail:storage:volume:migrate
  • Namespace: mail
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--hostMail server hostname or IPvalue, required-
--secretAWS Secrets Manager secret IDvalue, required-
--regionAWS regionvalue, required"us-east-1"
--profileAWS credential profilevalue, required"default"
--sizeHetzner volume size in GiBvalue, required"20"

mail:test

Test mail API connection

  • Usage: $ buddy mail:test
  • Namespace: mail
  • Aliases: none
  • Arguments: none

mail:user:add

Add a mail user

  • Usage: $ buddy mail:user:add <email>
  • Namespace: mail
  • Aliases: none
  • Arguments: <email>
OptionDescriptionContractDefault
--passwordUser password (generated if not provided)value, required-

mail:user:delete

Delete a mail user

  • Usage: $ buddy mail:user:delete <email>
  • Namespace: mail
  • Aliases: none
  • Arguments: <email>

mail:user:list

List mail users

  • Usage: $ buddy mail:user:list
  • Namespace: mail
  • Aliases: none
  • Arguments: none

make

The make command

  • Usage: $ buddy make [make]
  • Namespace: none
  • Aliases: none
  • Arguments: [make]
OptionDescriptionContractDefault
-a, --actionCreate a new actionvalue, optionalfalse
-c, --componentCreate a new componentvalue, optionalfalse
-d, --databaseCreate a new databasevalue, optionalfalse
-f, --factoryCreate a new factoryvalue, optionalfalse
--fn, --functionCreate a new functionvalue, optionalfalse
-l, --languageCreate a new languagevalue, optionalfalse
-m, --modelCreate a new modelvalue, optionalfalse
--mw, --middlewareCreate a new middlewarevalue, optionalfalse
-p, --pageCreate a new pagevalue, optionalfalse
--mg, --migrationCreate a new migrationvalue, optionalfalse
-n, --notificationCreate a new notificationvalue, optionalfalse
--qt, --queue-tableMake queue migrationboolean, optionalfalse
-s, --stackCreate a new stackvalue, optionalfalse
--dry-runPreview the files that would be generated without writingboolean, optionalfalse
--with-validationInclude a validation rules block in the generated stubboolean, optionalfalse
--with-authInclude auth-aware boilerplate in the generated stubboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:action

Create a new action

  • Usage: $ buddy make:action [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--dry-runPreview the file without writingboolean, optionalfalse
--with-validationGenerate a stub that calls validate()boolean, optionalfalse
--with-authGenerate a stub that requires an authenticated userboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:certificate

Create a new SSL Certificate

  • Usage: $ buddy make:certificate
  • Namespace: make
  • Aliases: make:cert
  • Arguments: none

Examples:

buddy make:certificate

make:command

Create a new CLI command

  • Usage: $ buddy make:command [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-s, --signatureThe command signature (CLI name)value, optionalfalse
-d, --descriptionThe command descriptionvalue, optionalfalse
--no-registerDo not register in Commands.tsboolean, optional, negatedtrue
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy make:command SendEmails
buddy make:command SendEmails --signature=send-emails

make:component

Create a new component

  • Usage: $ buddy make:component [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:database

Create a new database

  • Usage: $ buddy make:database [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:factory

Create a new factory

  • Usage: $ buddy make:factory [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:function

Create a new function

  • Usage: $ buddy make:function [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:job

Create a new job

  • Usage: $ buddy make:job [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-q, --queueThe queue to dispatch tovalue, optional"default"
-c, --classCreate a class-based jobboolean, optionalfalse
-t, --triesNumber of retry attemptsvalue, optional3
-b, --backoffBackoff delay in secondsvalue, optional3
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:lang

Create a new language

  • Usage: $ buddy make:lang [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:mail

Create a new Mailable + companion stx template

  • Usage: $ buddy make:mail [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-f, --forceOverwrite existing filesboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy make:mail OrderShipped
buddy make:mail welcome-back  // PascalCases to WelcomeBack, kebab-cases to welcome-back
buddy make:mail Welcome --force  // overwrite existing files

make:migration

Create a new migration

  • Usage: $ buddy make:migration [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:model

Create a new model

  • Usage: $ buddy make:model [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:notification

Create a new notification

  • Usage: $ buddy make:notification [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-e, --emailIs it an email notification?boolean, optionaltrue
-c, --chatIs it a chat notification?boolean, optionalfalse
-s, --smsIs it a SMS notification?boolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:policy

Create a new authorization policy

  • Usage: $ buddy make:policy [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-m, --modelThe model this policy is forvalue, optionalfalse
--no-registerDo not register in Gates.tsboolean, optional, negatedfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy make:policy PostPolicy
buddy make:policy CommentPolicy --model=Comment

make:queue-table

Create the queue jobs table migration

  • Usage: $ buddy make:queue-table
  • Namespace: make
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:resource

Create a new API resource

  • Usage: $ buddy make:resource [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-m, --modelThe model this resource is forvalue, optionalfalse
-c, --collectionCreate a collection resourceboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy make:resource UserResource
buddy make:resource PostResource --model=Post
buddy make:resource PostCollection --collection

make:stack

Create a new stack

  • Usage: $ buddy make:stack [name]
  • Namespace: make
  • Aliases: none
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

make:view

Create a new page

  • Usage: $ buddy make:view [name]
  • Namespace: make
  • Aliases: make:page [name]
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the actionvalue, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

marketing:install

Activate the marketing feature bundle. /api/email/subscribe, /api/contact, Campaign/EmailList/SocialPost.

  • Usage: $ buddy marketing:install
  • Namespace: marketing
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing marketing files in the project (default skips existing paths so the install is idempotent).boolean, optional-

marketing:uninstall

Deactivate the marketing feature bundle.

  • Usage: $ buddy marketing:uninstall
  • Namespace: marketing
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the marketing scaffolding (action/model/view files). Flip the flag only.boolean, optional-

migrate

Migrates your database

  • Usage: $ buddy migrate
  • Namespace: none
  • Aliases: db:migrate
  • Arguments: none
OptionDescriptionContractDefault
-d, --diffShow the SQL that would be runboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
-a, --authAlso migrate auth tables (oauth_clients, oauth_access_tokens, oauth_refresh_tokens, password_resets)boolean, optionaltrue
--no-authSkip auth/oauth table migrationsboolean, optional, negatedtrue
-f, --forceApply destructive changes (drop column/table, lossy type change) without confirmationboolean, optionalfalse
--create-databaseCreate the database if it does not exist, without askingboolean, optionalfalse
--from-dbDiff against the live database schema instead of the snapshot (self-heal drift)boolean, optionalfalse
--no-renameTreat renamed columns as drop + add instead of a data-preserving renameboolean, optional, negatedtrue
--verboseEnable verbose outputboolean, optionalfalse

migrate:dns

Migrates your database

  • Usage: $ buddy migrate:dns
  • Namespace: migrate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

migrate:fresh

Drop all tables and re-run every migration (destroys all data)

  • Usage: $ buddy migrate:fresh
  • Namespace: migrate
  • Aliases: db:fresh
  • Arguments: none
OptionDescriptionContractDefault
-d, --diffShow the SQL that would be runboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
-s, --seedRun database seeders after migrationboolean, optionalfalse
-a, --authAlso migrate auth tables (oauth_clients, oauth_access_tokens, oauth_refresh_tokens, password_resets)boolean, optionaltrue
--no-authSkip auth/oauth table migrationsboolean, optional, negatedtrue
--create-databaseCreate the database if it does not exist, without askingboolean, optionalfalse
-f, --forceSkip the drop-database confirmation (only honored when the migrateFresh guard is "allow")boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

migrate:project

Port an existing project (Laravel, Rails) into a Stacks project.

  • Usage: $ buddy migrate:project [target]
  • Namespace: migrate
  • Aliases: none
  • Arguments: [target]
OptionDescriptionContractDefault
--fromSource framework - one of: laravel, railsvalue, required"laravel"
--sourcePath to the existing source project. Defaults to the current working directory.value, requiredfalse
--dry-runShow what would be translated without writing files.boolean, optionalfalse
--verbosePrint the per-entry table after the summary.boolean, optionalfalse

migrate:regenerate

Rebuild database/migrations from your models for a given dialect

  • Usage: $ buddy migrate:regenerate [dialect]
  • Namespace: migrate
  • Aliases: none
  • Arguments: [dialect]
OptionDescriptionContractDefault
--dry-runShow what would change without writing anythingboolean, optionalfalse
-f, --forceRegenerate even though the database already has migrations recordedboolean, optionalfalse
--replace-unmarkedAlso delete migrations carrying no @generated marker (pre-marker corpora only)boolean, optionalfalse
--only-existing-tablesRebuild exactly the tables already in the corpus, for changing dialect without adopting the framework schemaboolean, optionalfalse

migrate:status

Compare database/migrations, the migrations ledger, and the live schema

  • Usage: $ buddy migrate:status
  • Namespace: migrate
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--reconcileRepair the ledger where the schema proves what happenedboolean, optionalfalse
--include-partialWith --reconcile, also record half-applied migrationsboolean, optionalfalse
--jsonEmit the audit as JSONboolean, optionalfalse

migrate:switch

Pre-flight check + plan for switching DB_CONNECTION between sqlite / mysql / vitess / postgres

  • Usage: $ buddy migrate:switch <driver>
  • Namespace: migrate
  • Aliases: none
  • Arguments: <driver>

monitoring:install

Activate the monitoring feature bundle. Error model + error-tracking views and actions.

  • Usage: $ buddy monitoring:install
  • Namespace: monitoring
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing monitoring files in the project (default skips existing paths so the install is idempotent).boolean, optional-

monitoring:uninstall

Deactivate the monitoring feature bundle.

  • Usage: $ buddy monitoring:uninstall
  • Namespace: monitoring
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the monitoring scaffolding (action/model/view files). Flip the flag only.boolean, optional-

new

Create a new Stacks project

  • Usage: $ buddy new [name]
  • Namespace: none
  • Aliases: create [name]
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameThe name of the projectvalue, optionalfalse
-u, --uiAre you building a UI?boolean, optionaltrue
-c, --componentsAre you building UI components?boolean, optionaltrue
-w, --web-componentsAutomagically built optimized custom elements/web components?boolean, optionaltrue
-p, --viewsHow about views?boolean, optionaltrue
-f, --functionsAre you developing functions/composables?boolean, optionaltrue
-a, --apiAre you building an API?boolean, optionaltrue
-d, --databaseDo you need a database?boolean, optionaltrue
--ca, --cacheDo you need caching?boolean, optionalfalse
-e, --emailDo you need email?boolean, optionalfalse
-P, --projectTarget a specific projectvalue, optionalfalse
-m, --minimalSkip optional feature bundles (cms, commerce, dashboard, marketing, monitoring, realtime, queue) - bare-bones API/SPA starter that can re-add them later via ./buddy <feature>:install.boolean, optionalfalse
--with-coreKeep the framework vendored in storage/framework/core as a Bun workspace, for working ON Stacks. Apps that only work WITH Stacks want the default, which resolves every @stacksjs/* package from npm.boolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

outdated

List all the outdated project dependencies

  • Usage: $ buddy outdated
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

package:discover

Discover Stacks-compatible packages from pantry

  • Usage: $ buddy package:discover
  • Namespace: package
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

phone

Phone/voice service management commands

  • Usage: $ buddy phone
  • Namespace: none
  • Aliases: none
  • Arguments: none

phone:numbers

List phone numbers

  • Usage: $ buddy phone:numbers
  • Namespace: phone
  • Aliases: none
  • Arguments: none

phone:search

Search available phone numbers

  • Usage: $ buddy phone:search [country]
  • Namespace: phone
  • Aliases: none
  • Arguments: [country]
OptionDescriptionContractDefault
-t, --typePhone number type (TOLL_FREE, DID)value, required"TOLL_FREE"

phone:setup

Initialize phone infrastructure

  • Usage: $ buddy phone:setup
  • Namespace: phone
  • Aliases: none
  • Arguments: none

phone:status

Show phone service status

  • Usage: $ buddy phone:status
  • Namespace: phone
  • Aliases: none
  • Arguments: none

ports

Let buddy check your project for potential issues and misconfigurations

  • Usage: $ buddy ports
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-l, --listList the used portsboolean, optionaltrue
-c, --checkCheck if the ports are availableboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optional-
-q, --quietUse minimal outputboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

ports:check

Check if the ports are available

  • Usage: $ buddy ports:check
  • Namespace: ports
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optional"<project root>"
-q, --quietUse minimal outputboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

ports:list

Check if the ports are available

  • Usage: $ buddy ports:list
  • Namespace: ports
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optional-
-q, --quietUse minimal outputboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

prepublish

Run your prepublish script

  • Usage: $ buddy prepublish
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

preview

Serve a static build locally, the way a static host would

  • Usage: $ buddy preview [dir]
  • Namespace: none
  • Aliases: none
  • Arguments: [dir]
OptionDescriptionContractDefault
-p, --portPort to listen onvalue, required"3001"

Examples:

buddy preview
buddy preview dist --port 4000

projects

Find all Stacks projects on your system

  • Usage: $ buddy projects
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-q, --quietUse minimal outputboolean, optionalfalse
-l, --listList all local Stacks projectsboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

projects:list

Find all Stacks projects on your system

  • Usage: $ buddy projects:list
  • Namespace: projects
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-q, --quietUse minimal outputboolean, optionalfalse
-l, --listList all local Stacks projectsboolean, optionaltrue
--verboseEnable verbose outputboolean, optionalfalse

publish

Publish a Stacks default into your userland (app/) directory so you can customize it

  • Usage: $ buddy publish [resource] [name]
  • Namespace: none
  • Aliases: none
  • Arguments: [resource], [name]
OptionDescriptionContractDefault
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

publish:action

Publish a default action from storage/framework/defaults/app/Actions/ to app/Actions/

  • Usage: $ buddy publish:action <name>
  • Namespace: publish
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

publish:controller

Publish a default controller from storage/framework/defaults/app/Controllers/ to app/Controllers/

  • Usage: $ buddy publish:controller <name>
  • Namespace: publish
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

publish:core

Publish a framework package source from node_modules/@stacksjs// into storage/framework/core// for editing

  • Usage: $ buddy publish:core [pkg]
  • Namespace: publish
  • Aliases: none
  • Arguments: [pkg]
OptionDescriptionContractDefault
--allVendor the whole framework: copy storage/framework/core out of a local Stacks checkout and wire it up as a Bun workspaceboolean, optionalfalse
--pathThe Stacks checkout to vendor from (defaults to $STACKS_FRAMEWORK_PATH, ../stacks, then ~/Code/stacks)value, required-
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy publish:core router
buddy publish:core --all
buddy publish:core --all --path ../stacks

publish:middleware

Publish a default middleware from storage/framework/defaults/app/Middleware/ to app/Middleware/

  • Usage: $ buddy publish:middleware <name>
  • Namespace: publish
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

publish:model

Publish a default model from storage/framework/defaults/app/Models/ to app/Models/

  • Usage: $ buddy publish:model <name>
  • Namespace: publish
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceOverwrite an existing userland fileboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:clear

Clear all jobs from the queue

  • Usage: $ buddy queue:clear
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--forceForce the operation without confirmationboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:dlq

List dead-letter jobs (jobs that re-failed after retry)

  • Usage: $ buddy queue:dlq
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--reasonFilter by reason (repeat-failure | poison-detected | circuit-broken | manual)value, optionalfalse
--sinceOnly show rows dead-lettered since (e.g. 1h, 30m, 2d)value, optionalfalse
--limitMaximum rows to display (default 100)value, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:dlq:purge

Delete dead-letter rows older than a retention window

  • Usage: $ buddy queue:dlq:purge
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--older-than-daysRetention window in days (default 30)value, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:dlq:retry

Re-enqueue a dead-letter job back into its queue

  • Usage: $ buddy queue:dlq:retry
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--idDead-letter row id to retryvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:failed

List all failed jobs

  • Usage: $ buddy queue:failed
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--sinceOnly show jobs failed since (e.g. 1h, 30m, 2d)value, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:flush

Delete all failed jobs

  • Usage: $ buddy queue:flush
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--forceForce the operation without confirmationboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:inspect

Inspect a specific job

  • Usage: $ buddy queue:inspect [id]
  • Namespace: queue
  • Aliases: none
  • Arguments: [id]
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--failedInspect a failed jobboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:install

Activate the queue feature bundle. Job + FailedJob models + queue dashboard pages.

  • Usage: $ buddy queue:install
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing queue files in the project (default skips existing paths so the install is idempotent).boolean, optional-

queue:list

List queued jobs (flat row view, filterable by queue/status)

  • Usage: $ buddy queue:list
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--statusFilter by pending | reserved | delayedvalue, optionalfalse
--limitMaximum rows to display (default 50)value, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:monitor

Monitor queue status in real-time

  • Usage: $ buddy queue:monitor
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
-i, --intervalRefresh interval in millisecondsvalue, optional"2000"
--verboseEnable verbose outputboolean, optionalfalse

queue:pause

Manually pause a queue (circuit-breaker)

  • Usage: $ buddy queue:pause
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--queueQueue name to pausevalue, optionalfalse
--forPause duration in seconds (default 300)value, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:quarantine

List quarantined jobs (or --add a manual quarantine)

  • Usage: $ buddy queue:quarantine
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--addManually quarantine a job classvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:resume

Resume a paused queue (circuit-breaker)

  • Usage: $ buddy queue:resume
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--queueQueue name to resumevalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:retry

Retry failed jobs

  • Usage: $ buddy queue:retry [id]
  • Namespace: queue
  • Aliases: none
  • Arguments: [id]
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--allApply to all itemsboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:schedule

Start the job scheduler for cron-based jobs

  • Usage: $ buddy queue:schedule
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:schedule:list

List all scheduled jobs

  • Usage: $ buddy queue:schedule:list
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:status

Display the status of queue workers

  • Usage: $ buddy queue:status
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:table

Create a migration for the jobs database table

  • Usage: $ buddy queue:table
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:uninstall

Deactivate the queue feature bundle.

  • Usage: $ buddy queue:uninstall
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the queue scaffolding (action/model/view files). Flip the flag only.boolean, optional-

queue:unquarantine

Lift the quarantine on a job class

  • Usage: $ buddy queue:unquarantine
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--nameJob class name to unquarantinevalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

queue:work

Start processing jobs on the queue

  • Usage: $ buddy queue:work
  • Namespace: queue
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
-q, --queueSpecify queue namevalue, optionalfalse
-c, --connectionQueue connection to usevalue, optionalfalse
--concurrencyNumber of concurrent workersvalue, optional"1"
--verboseEnable verbose outputboolean, optionalfalse

realtime:install

Activate the realtime feature bundle. WebSocket broadcaster + Websocket model + realtime-stats actions.

  • Usage: $ buddy realtime:install
  • Namespace: realtime
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--forceOverwrite any existing realtime files in the project (default skips existing paths so the install is idempotent).boolean, optional-

realtime:uninstall

Deactivate the realtime feature bundle.

  • Usage: $ buddy realtime:uninstall
  • Namespace: realtime
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--keep-filesDon't delete the realtime scaffolding (action/model/view files). Flip the flag only.boolean, optional-

release

Release a new version of your libraries/packages

  • Usage: $ buddy release
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--dry-runRun the release without actually releasingboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--bumpNon-interactive bump: patch | minor | major | prepatch | preminor | premajor | prerelease | x.y.zvalue, required-
--verboseEnable verbose outputboolean, optionalfalse

route:list

Lists your routes

  • Usage: $ buddy route:list
  • Namespace: route
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

scaffold:crud

Generate model, migration, and CRUD actions

  • Usage: $ buddy scaffold:crud [name]
  • Namespace: scaffold
  • Aliases: make:crud, make:scaffold
  • Arguments: [name]
OptionDescriptionContractDefault
-n, --nameResource name (PascalCase)value, optionalfalse
-f, --fieldsComma-separated field list, e.g. title:string,body:text,published:booleanvalue, optional""
--dry-runPreview the generated files without writingboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy scaffold:crud Post --fields=title:string,body:text,published:boolean

schedule:disable

Pause a scheduled task without editing source

  • Usage: $ buddy schedule:disable <name>
  • Namespace: schedule
  • Aliases: none
  • Arguments: <name>

schedule:enable

Resume a paused scheduled task

  • Usage: $ buddy schedule:enable <name>
  • Namespace: schedule
  • Aliases: none
  • Arguments: <name>

schedule:list

List all registered scheduled tasks with their next run time

  • Usage: $ buddy schedule:list
  • Namespace: schedule
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--jsonPrint a machine-readable schedule registryboolean, optionalfalse

schedule:run

Run the scheduler

  • Usage: $ buddy schedule:run
  • Namespace: schedule
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

schedule:run-one

Run one registered scheduled task immediately

  • Usage: $ buddy schedule:run-one <name>
  • Namespace: schedule
  • Aliases: none
  • Arguments: <name>

schedule:status

Show currently-held overlap locks (this-process only)

  • Usage: $ buddy schedule:status
  • Namespace: schedule
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--jsonPrint machine-readable scheduler statusboolean, optionalfalse

search-engine:settings

List index settings

  • Usage: $ buddy search-engine:settings
  • Namespace: search-engine
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-m, --modelTarget a specific modelvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

search-engine:update

Indexes database data to search engine

  • Usage: $ buddy search-engine:update
  • Namespace: search-engine
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-m, --modelTarget a specific modelvalue, optional""
-f, --flushFlushes all data from search enginevalue, optionalfalse
-s, --settingsUpdate index settingsvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse

search:flush

Delete all documents from a model index (Scout-style alias)

  • Usage: $ buddy search:flush [model]
  • Namespace: search
  • Aliases: none
  • Arguments: [model]
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

search:reindex

Re-index a model (Scout-style alias for search-engine:update)

  • Usage: $ buddy search:reindex [model]
  • Namespace: search
  • Aliases: none
  • Arguments: [model]
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

seed

Seed your database

  • Usage: $ buddy seed
  • Namespace: none
  • Aliases: db:seed
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--onlyComma-separated list of models to seedvalue, optional""
--exceptComma-separated list of models to skipvalue, optional""
--include-defaultsAlso seed the framework's built-in modelsboolean, optionalfalse
--allow-protectedSeed auth/oauth models even on a non-fresh DB (will invalidate live tokens)boolean, optionalfalse
--freshTruncate tables before seedingboolean, optionalfalse
--appendAdd rows to tables that already have some, instead of skipping themboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

seed:roles

Seed default RBAC role packs (admin, dev, client)

  • Usage: $ buddy seed:roles
  • Namespace: seed
  • Aliases: roles:seed
  • Arguments: none

serve

Start the production HTTP server (STX views + /api proxy + coming-soon/maintenance gate)

  • Usage: $ buddy serve
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --portPort to listen on (defaults to PORT env or 3000)value, required-
--verboseEnable verbose outputboolean, optionalfalse

serve:api

Start the production API server (bun-router routes the frontend proxies /api to)

  • Usage: $ buddy serve:api
  • Namespace: serve
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --portPort to listen on (defaults to PORT env or 3008)value, required-

setup

This command ensures your project is setup correctly

  • Usage: $ buddy setup
  • Namespace: none
  • Aliases: ensure
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--skip-awsSkip AWS configuration during setupboolean, optionalfalse
--skip-keygenSkip generating an application key during setupboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

setup:ai

Set the project up for an AI coding agent (Claude Code, Codex, Cursor, Copilot, Gemini)

  • Usage: $ buddy setup:ai [provider]
  • Namespace: setup
  • Aliases: ai:setup
  • Arguments: [provider]
OptionDescriptionContractDefault
--copyCopy the agent files instead of symlinking them, so they can be edited per projectboolean, optionalfalse
--forceOverwrite files that already existboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

setup:oh-my-zsh

Enable Oh My Zsh

  • Usage: $ buddy setup:oh-my-zsh
  • Namespace: setup
  • Aliases: upgrade:oh-my-zsh
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

setup:ssl

Setup SSL certificates and hosts file for HTTPS development

  • Usage: $ buddy setup:ssl
  • Namespace: setup
  • Aliases: ssl:setup
  • Arguments: none
OptionDescriptionContractDefault
-d, --domainCustom domain to setup (defaults to APP_URL)value, optional-
--skip-hostsSkip adding domain to hosts fileboolean, optionalfalse
--skip-trustSkip trusting the certificateboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

share

Share your local development server via a public tunnel

  • Usage: $ buddy share [type]
  • Namespace: none
  • Aliases: none
  • Arguments: [type]
OptionDescriptionContractDefault
-p, --portLocal port to sharevalue, required-
--serverTunnel server URLvalue, required"api.localtunnel.dev"
--subdomainRequest a specific subdomainvalue, required-
--verboseEnable verbose outputboolean, optionalfalse

simulator:doctor

Whether an iOS simulator can run here, and what to do when it cannot

  • Usage: $ buddy simulator:doctor
  • Namespace: simulator
  • Aliases: none
  • Arguments: none

simulator:open

Open a URL in Mobile Safari on a simulator, booting one if needed

  • Usage: $ buddy simulator:open <url>
  • Namespace: simulator
  • Aliases: none
  • Arguments: <url>
OptionDescriptionContractDefault
--deviceWhich device, by name. Defaults to the newest iPhone.value, required""
--screenshotSave a picture of the result herevalue, required""
--settleHow long to let the page load before the screenshotvalue, required8
--freshQuit Mobile Safari first, so this is not the last page againboolean, optionalfalse

sms

SMS service management commands

  • Usage: $ buddy sms
  • Namespace: none
  • Aliases: none
  • Arguments: none

sms:add-phone

Add a phone to sandbox for testing

  • Usage: $ buddy sms:add-phone <phone>
  • Namespace: sms
  • Aliases: none
  • Arguments: <phone>

sms:sandbox-list

List sandbox verified phone numbers

  • Usage: $ buddy sms:sandbox-list
  • Namespace: sms
  • Aliases: none
  • Arguments: none

sms:send

Send a test SMS

  • Usage: $ buddy sms:send <phone> [message]
  • Namespace: sms
  • Aliases: none
  • Arguments: <phone>, [message]
OptionDescriptionContractDefault
--templateUse a message templatevalue, required-

sms:setup

Initialize SMS infrastructure

  • Usage: $ buddy sms:setup
  • Namespace: sms
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--dry-runShow what would be done without making changesboolean, optional-

sms:status

Show SMS service status

  • Usage: $ buddy sms:status
  • Namespace: sms
  • Aliases: none
  • Arguments: none

sms:verify

Verify a sandbox phone number

  • Usage: $ buddy sms:verify <id> <code>
  • Namespace: sms
  • Aliases: none
  • Arguments: <id>, <code>

stack:install

Install a stack into your project

  • Usage: $ buddy stack:install <name>
  • Namespace: stack
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceForce overwrite existing filesboolean, optionalfalse
--dry-runShow what would be installed without making changesboolean, optionalfalse
--conflictConflict resolution strategy: skip, overwrite, or backupvalue, required"skip"
-p, --projectTarget a specific Stacks projectvalue, required-
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy add calendar
buddy add table --force
buddy add calendar --conflict backup --verbose
buddy add table --dry-run

stack:list

List available and installed stacks

  • Usage: $ buddy stack:list
  • Namespace: stack
  • Aliases: stack:ls
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific Stacks projectvalue, required-

Examples:

buddy stack:list

stack:uninstall

Uninstall a stack from your project

  • Usage: $ buddy stack:uninstall <name>
  • Namespace: stack
  • Aliases: none
  • Arguments: <name>
OptionDescriptionContractDefault
--forceForce overwrite existing filesboolean, optionalfalse
-p, --projectTarget a specific Stacks projectvalue, required-
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy stack:uninstall blog
buddy stack:uninstall blog --force

status

Check whether the application is in maintenance or coming-soon mode

  • Usage: $ buddy status
  • Namespace: none
  • Aliases: maintenance:status
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

stripe:setup

Sets up stripe products in the dashboard

  • Usage: $ buddy stripe:setup
  • Namespace: stripe
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

telemetry

Manage telemetry settings

  • Usage: $ buddy telemetry
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--enableEnable telemetryboolean, optional-
--disableDisable telemetryboolean, optional-
--statusShow telemetry statusboolean, optional-

Examples:

buddy telemetry --status
buddy telemetry --enable
buddy telemetry --disable

test

Runs your test suite

  • Usage: $ buddy test
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-f, --featureRuns your feature testsboolean, optionalfalse
-u, --unitRuns your unit testsboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionaltrue

test:feature

Runs your feature tests

  • Usage: $ buddy test:feature
  • Namespace: test
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

test:types

Typechecks your codebase

  • Usage: $ buddy test:types
  • Namespace: test
  • Aliases: typecheck
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

test:ui

Runs your test suite

  • Usage: $ buddy test:ui
  • Namespace: test
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

test:unit

Runs your unit tests

  • Usage: $ buddy test:unit
  • Namespace: test
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

tinker

Interactive REPL with Stacks framework preloaded

  • Usage: $ buddy tinker
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-e, --evalEvaluate a single expression and exitvalue, optional""
--printEvaluate, print, and exitvalue, optional""
--no-bannerSkip the welcome bannerboolean, optional, negatedfalse
--preloadAdditional modules to preload (comma-separated)value, optional""
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

types:fix

Fix the generated types of & for your library/libraries (not yet implemented)

  • Usage: $ buddy types:fix
  • Namespace: types
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

types:generate

Generate the types of & for your library/libraries

  • Usage: $ buddy types:generate
  • Namespace: types
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

unlink:core

Go back to the installed @stacksjs/* packages

  • Usage: $ buddy unlink:core [...packages]
  • Namespace: unlink
  • Aliases: none
  • Arguments: [packages...]
OptionDescriptionContractDefault
--allUnlink everything that was linkedboolean, optionalfalse

Examples:

buddy unlink:core

unpublish:core

Drop a vendored storage/framework/core// and go back to the installed @stacksjs/

  • Usage: $ buddy unpublish:core [pkg]
  • Namespace: unpublish
  • Aliases: none
  • Arguments: [pkg]
OptionDescriptionContractDefault
--allUnvendor the whole framework: remove storage/framework/core and resolve every @stacksjs package from the stacks dependency in package.jsonboolean, optionalfalse
--forceDelete the vendored source even when it has uncommitted changesboolean, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

up

Bring the application out of maintenance mode

  • Usage: $ buddy up
  • Namespace: none
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy up

upgrade

Upgrade the Stacks framework to the latest version

  • Usage: $ buddy upgrade
  • Namespace: none
  • Aliases: update
  • Arguments: none
OptionDescriptionContractDefault
-V, --versionInstall a specific version (e.g., 0.70.23)value, required-
--canaryUpgrade to the latest canary (bleeding-edge main) buildboolean, optionalfalse
--stableSwitch to the latest vetted stable releaseboolean, optionalfalse
--dry-runPreview the upgrade (which dependencies would change) without writing or installingboolean, optionalfalse
-f, --forceForce re-download, bypassing cache and version checksboolean, optionalfalse
--fromSync from a local stacks checkout (e.g. ~/Code/stacks). Skips GitHub.value, required-
--no-postinstallSkip post-sync hooks (auto-imports, bun install, migrate)boolean, optional, negatedtrue
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade
buddy update
buddy upgrade --from ~/Code/stacks
buddy upgrade --version 0.70.23
buddy upgrade --dry-run
buddy upgrade --canary
buddy upgrade --stable
buddy upgrade --force

upgrade:all

Upgrade framework, dependencies, Bun, and binary

  • Usage: $ buddy upgrade:all
  • Namespace: upgrade
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--canaryUpgrade to the latest canary (bleeding-edge main) buildboolean, optionalfalse
-f, --forceForce re-download, bypassing cache and version checksboolean, optionalfalse
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade:all

upgrade:binary

Upgrade the stacks binary to the latest version

  • Usage: $ buddy upgrade:binary
  • Namespace: upgrade
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade:binary

upgrade:bun

Upgrade Bun to the latest version

  • Usage: $ buddy upgrade:bun
  • Namespace: upgrade
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade:bun

upgrade:dependencies

Upgrade your dependencies (pantry.yaml & package.json)

  • Usage: $ buddy upgrade:dependencies
  • Namespace: upgrade
  • Aliases: upgrade:deps
  • Arguments: none
OptionDescriptionContractDefault
-p, --projectTarget a specific projectvalue, optionalfalse
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade:dependencies

upgrade:shell

Upgrade the shell integration (currently only supports Oh My Zsh)

  • Usage: $ buddy upgrade:shell
  • Namespace: upgrade
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--verboseEnable verbose outputboolean, optionalfalse

Examples:

buddy upgrade:shell

user:add

Create a user account (optionally an admin)

  • Usage: $ buddy user:add <email>
  • Namespace: user
  • Aliases: none
  • Arguments: <email>
OptionDescriptionContractDefault
--nameDisplay name. Defaults to the local part of the email.value, required-
--passwordPassword. Generated and printed once if omitted.value, required-
--roleRole to assign, e.g. admin. Seeds the default roles if the table is empty.value, required-
--updateIf the account already exists, reset its password and ensure the roleboolean, optionalfalse

Examples:

buddy user:add chris@example.com --role admin
buddy user:add support@example.com --name Support --password s3cret

user:list

List the accounts that can sign in

  • Usage: $ buddy user:list
  • Namespace: user
  • Aliases: none
  • Arguments: none
OptionDescriptionContractDefault
--limitHow many to showvalue, required"25"

version

Retrieving Stacks build version

  • Usage: $ buddy version
  • Namespace: none
  • Aliases: none
  • Arguments: none