| title | Configuration reference | |||||
|---|---|---|---|---|---|---|
| description | Every configuration key sigillum reads, where config files are looked for, how layers resolve, why the SIGILLUM_ environment prefix does nothing, and what config trust protects. | |||||
| tags |
|
Every signing decision — backend, key identifier, public-key path, output path,
format, timestamp — is a command-line flag on sign or keys. There are no
sign.* or keys.* configuration keys. Putting them in a config file has no
effect and produces no warning: the file is accepted, and the keys are never
read.
The only AWS-related configuration sigillum honours is whatever the AWS SDK's
own default chain picks up (AWS_PROFILE, AWS_REGION, ~/.aws/credentials,
OIDC web identity), plus the --kms-region flag.
What is configurable is the surrounding framework: logging, self-update, and telemetry. That is the whole of it.
| Path | Role |
|---|---|
/etc/sigillum/config.yaml |
System-wide. |
~/.sigillum/config.yaml |
Per-user, and the writable target — this is where config set lands. |
.sigillum.yaml in the working directory or above |
Project-local, discovered automatically. Sits above the user's files. |
Anything passed to --config |
Explicit. Repeatable. |
Only files that exist become layers. A non-existent path contributes
nothing and is not a candidate write target, which is why config set never
tries to write into /etc.
Check what is actually in play:
sigillum config path # the resolved files and which one is writable
sigillum config list # the effective valuesWith no config file anywhere, config path reports where a future write would
land and says no config file is currently loaded. That is a normal state —
sigillum needs no configuration to sign anything.
Highest precedence first:
- Command-line flags — only flags you actually changed. A flag sitting at its default never clobbers a configured value.
- Project-local
.sigillum.yaml— above the user's files, below flags. --configfiles and the default file paths, in the order declared.- Embedded defaults shipped in the binary's assets.
There is no environment-variable layer. Setting SIGILLUM_LOG_LEVEL=debug,
or any other SIGILLUM_-prefixed variable, changes nothing:
$ SIGILLUM_LOG_LEVEL=debug sigillum config get log.level
infoThe framework supports an environment layer, but it is only installed when the tool declares an environment prefix, and sigillum does not declare one. Without it, no environment variable is consulted for configuration at all.
Earlier versions of this page said any setting could be overridden with a
SIGILLUM_ prefix. That was never true of this binary. Use --config, a
project-local .sigillum.yaml, or the relevant flag instead.
The environment still matters in two places that are not the config store:
the AWS SDK credential chain used by the aws-kms backend, and
SOURCE_DATE_EPOCH on the minisign signing path.
| Key | Default | Values | What it does |
|---|---|---|---|
log.level |
info |
debug, info, warn, error, fatal |
Minimum level written to stderr. An unparseable value is ignored and the level is left alone. |
log.format |
(charm console) | json, logfmt |
Switches the log formatter. Any other value leaves the default human-readable format. |
--debug overrides log.level for the run regardless of configuration.
sigillum checks for a newer release on most invocations and verifies what it downloads against the signing key embedded in the binary.
| Key | Default in sigillum | What it does |
|---|---|---|
update.policy |
disabled |
disabled logs that an update exists; prompt asks and continues if declined; enabled blocks the command until updated. An unknown value falls back to disabled. |
update.check_interval |
24h |
Any Go duration. 0 checks on every invocation. An invalid or negative value falls back to the default. |
update.key_source |
embedded |
Where the verification key comes from. sigillum pins this to embedded at build time, rather than the framework's both. |
update.require_signature |
false |
Refuse to update unless the release signature verifies. |
update.require_checksum |
false |
Refuse to update unless the checksum manifest verifies. |
update.require_external_crosscheck |
false |
Refuse to update unless the embedded key also matches a WKD-served copy. |
update.external_key_email |
(empty) | Email whose WKD entry is used for that cross-check. |
The last check time is recorded in ~/.sigillum/last_checked; deleting that
file forces the next run to check.
| Key | Default | What it does |
|---|---|---|
telemetry.enabled |
(unset — off) | Whether telemetry is collected. |
telemetry.consent |
(unset) | Records the consent decision. |
A project-local .sigillum.yaml is honoured for workflow-tuning keys — logging,
output, feature toggles — as soon as it is discovered. Security-sensitive keys
are stripped from that layer until the file is explicitly trusted:
sigillum config trust # trust the project file found from the cwd
sigillum config trust --list # list trusted project files
sigillum config trust --forget # revokeThe protected set is:
update.require_signature,update.require_checksum,update.require_external_crosscheck,update.policy,update.key_source,update.external_key_emailtelemetry.enabled,telemetry.consent- any key with an
authsegment, plusanthropic.api,openai.api,gemini.api,bitbucket.app_password
The reason is straightforward: a repository you clone must not be able to silently weaken self-update verification or flip telemetry consent just by shipping a dotfile.
Trust is bound to the file's exact content. Editing a trusted file revokes
trust until you run config trust again.
| Command | What it does |
|---|---|
sigillum config list |
Print every effective key and value. Honours the global --output json. |
sigillum config get <key> |
Print one value. An absent key fails with config key "update.policy" not found. |
sigillum config set <key> <value> |
Write to the user's config file, creating it if needed. |
sigillum config unset <key> |
Remove a key. |
sigillum config path |
Show the resolved file paths and which is writable. |
sigillum config edit |
Open the config file in $EDITOR. |
sigillum config validate |
Check the current configuration. Prints configuration is valid. |
sigillum config trust |
Trust a project-local file's protected keys. |
sigillum config migrate-credentials |
Move literal credentials into env-var references or the OS keychain. |
The store is schemaless. sigillum config set nonsense.key 1 succeeds and
writes the key; nothing reads it. A misspelled key is therefore silent — it
will not error, and it will not take effect. config list after a set is the
way to catch a typo.
config --help suggests running init <subsystem> for guided reconfiguration.
That command is disabled in sigillum and does not exist; the text comes from
the framework.
- CLI reference — global flags, including
--configand--debug - What sigillum does not do