Skip to Content
DocumentationDocumentationCLI Referencehams config

hams config

Read and write hams’s own config — things like which profile you’re using, where the store lives, which providers run in what order. This is not about the resources in your Hamsfiles; that’s a separate layer.

The global config lives at ~/.config/hams/hams.config.yaml by default, and this command is a shortcut for editing it without opening a text editor.

Usage

hams config <subcommand> [flags]

Subcommands

hams config show

Print the effective config — the result after merging global, store-level, and *.local.* overrides.

hams config show hams config show --json # for scripts and agents

hams config get <key>

Read one value. Handy inside shell scripts: $(hams config get store_path).

hams config get store_path # /Users/you/Projects/hams-store hams config get profile_tag # macOS

hams config set <key> <value>

Write a value. When hams updates a YAML file, it keeps your existing # comments intact — no losing those careful explanations you left for your future self.

hams config set store_path ~/Projects/my-hams-store hams config set llm_cli claude

hams config unset <key>

Remove a key, falling back to the default.

hams config unset profile_tag

The settings you’ll actually touch

KeyWhat it controls
profile_tagWhich profile directory this machine uses (macOS, openwrt, etc.)
machine_idThe unique name for this machine. Picks the .state/ subdirectory
store_repoYour store’s remote URL. Used by apply --from-repo and store push
store_pathLocal path to the store
llm_cliWhich LLM CLI to call for auto-generating intro fields. Example: claude
provider_priorityThe order providers run in during apply

Where secrets go

Don’t put API keys, tokens, or credentials into git-tracked config files. hams supports two safer spots:

  1. System keychain (recommended) — stored via keyring as an application password
  2. *.local.yaml files — gitignored by default

When you hams config set something that looks like a secret, hams will ask if you want to store it in the keychain.

You don’t have to use hams config. The YAML files are just files — open them in your editor, change what you want, save. The command is there for CI and scripts. Either way works.

Last updated on