nf

Commands

Top-level help is context-sensitive.

Value-taking long options accept both --flag value and --flag=value. Help uses the first form for brevity.

Always Available Commands

nf

Commands:
  provider    manage provider integrations
  target      manage deployable targets
  site        manage remote sites and envs
  domain      manage remote env domains
  password    manage and derive passwords

  init        initialize project metadata
  config      manage global config
  completion  print shell completion scripts
  refresh     refresh all provider, target, and site caches
  version     show nf version
  help        show help

Project Commands

Inside an nf project repo with nf.json next to .git:

nf

Commands:
  provider    manage provider integrations
  target      manage deployable targets
  site        manage remote sites and envs
  domain      manage remote env domains
  password    manage and derive passwords

  env         manage the local development env
  theme       manage configured WordPress themes
  plugin      manage configured WordPress plugins
  define      manage configured WordPress constants
  alias       manage root-level WordPress content aliases
  remote      manage repo remotes

  init        initialize project metadata
  config      manage global config
  completion  print shell completion scripts
  refresh     refresh all provider, target, and site caches
  version     show nf version
  help        show help

Providers, Targets, Sites, Domains, and Remotes

Commands:

nf provider list
nf provider show [provider] [--json]
nf provider check [provider] [--json]
nf refresh
nf target add linode <name> [--region region] [--type type] [--image image] [--db-user user] [--ssh-user user] [--all-linode-ssh-keys] [--execute --yes] [--wait]
nf target remove [target] [--dry-run] [--execute --yes]
nf target refresh
nf target list
nf target show [target] [--json]
nf target password [target] [--root|--db]
nf site add <target> <site> [--with-staging] [--password-version version] [--kinsta-slug slug] [--region region] [--php version] [--execute --yes]
nf site refresh
nf site list [--refresh] [--envs [site-id-or-alias]]
nf site show [site-id-or-alias-or-env-id] [--json]
nf site staging status [site-id-or-alias]
nf site staging add [site-id-or-alias] [--dry-run] [--execute --yes]
nf site staging remove [site-id-or-alias] [--dry-run] [--execute --yes]
nf site shell [site.target:env]
nf site wp <site.target:env> -- <cmd>
nf site cache [site.target|site.target:env]
nf site repair [site.target|site.target:env] [--project-slug slug] [--dry-run|--execute --yes]
nf site export <site.target:env> [--output path] [--dry-run]
nf site snapshot [site.target:env] [--output path] [--dry-run]
nf site snapshot list
nf site snapshot remove [name] [--yes]
nf site snapshot prune [--keep N] [--dry-run] [--yes]
nf site password [site-id-or-alias-or-env-id] [--wp|--db|--basicauth]
nf site basicauth status [site.target:env]
nf site basicauth enable [site.target:env] [--dry-run] [--execute --yes]
nf site basicauth disable [site.target:env] [--dry-run] [--execute --yes]
nf site basicauth password [site-id-or-alias]
nf domain list [site|site.target:env|remote]
nf domain add [site.target:env|remote] [domain...] [--proxy cloudflare|<ip>|--no-proxy] [--dry-run] [--execute --yes]
nf domain check [site.target:env|remote] [domain...] [--proxy cloudflare|<ip>|--no-proxy]
nf domain primary [site.target:env|remote] [domain] [--proxy cloudflare|<ip>|--no-proxy] [--search-replace|--no-search-replace] [--force] [--wait-timeout 30m] [--wait-interval 30s] [--dry-run] [--execute --yes]
nf domain remove [site.target:env|remote] [domain...] [--proxy cloudflare|<ip>|--no-proxy] [--delete-cert] [--dry-run] [--execute --yes]
nf site remove [site-id-or-alias] [--dry-run] [--execute --yes]
nf remote add [name] [site.target:env]
nf remote show [name]
nf remote remove [name]
nf remote list
nf define list
nf define get [name] [--for selector]
nf define status [remote]
nf define sync [remote]
nf define set
nf define set <name> <value> [--for selector]
nf define set <name> --secret [--for selector]
nf define set <name> --secret-stdin [--for selector]
nf define remove
nf define remove <name> [--for selector]
nf define migrate-env [--dry-run|--delete-source]
nf define rekey [--dry-run] [--add-recipient <age1...>]
nf alias list
nf alias status [remote]
nf alias sync [remote]
nf alias add <alias> <target>
nf alias remove <alias>

Standard Linode target example:

nf target add linode linode1 \
  --region ca-central \
  --type g6-standard-1 \
  --image linode/ubuntu24.04 \
  --db-user admin \
  --ssh-user nonfiction \
  --all-linode-ssh-keys

Current Behavior