# Configuration Arc uses YAML configuration files. ```yaml user: name: hanna email: me@hanna.lol key: ~/.ssh/id_ed25519 default: bookmark: main remote: origin aliases: c: commit p: push l: pull ``` ## File Locations - **Local config**: `.arc/config.yml` inside the repository. Created automatically on `arc init` with default bookmark/remote values. - **Global config**: `$XDG_CONFIG_HOME/arc/config.yml`, or `~/.config/arc/config.yml` if `XDG_CONFIG_HOME` is not set. ## Resolution Order Local config values take priority over global config values. For each field, the local value is checked first; if not set, the global value is used. Aliases from both configs are merged, with local aliases overriding global ones with the same name. ## Sections ### `user` | Key | Description | |---|---| | `user.name` | Author name for commits. | | `user.email` | Author email for commits. Both name and email must be set for author info to appear on commits. | | `user.key` | Path to an SSH private key for commit signing (e.g. `~/.ssh/id_ed25519`). Tilde expansion (`~`) is supported. When set, commits are automatically signed. | ### `default` | Key | Description | |---|---| | `default.bookmark` | Default bookmark name (used on init). Defaults to `main`. | | `default.remote` | Default remote name (used by push/pull/sync). Defaults to `origin`. | ### `aliases` Maps short names to command names. For example, `aliases.c: commit` lets you run `arc c "message"` instead of `arc commit "message"`. Aliases are expanded at the CLI level before command dispatch. Any alias key is valid; the value should be a valid arc command name. ## Commands ``` arc config set Set a local config value. arc config set -g Set a global config value. arc config get Get a value (local first, then global). arc config get -g Get a value from global config only. arc config show Show the effective (merged) configuration. arc config show -g Show only the global configuration. arc config unset Remove a key from local config. arc config unset -g Remove a key from global config. ``` Keys use dot notation: `section.field` (e.g. `user.name`, `default.remote`, `aliases.st`).