config
Manage persistent configuration with Git-style dotted keys.
Manage persistent configuration settings using Git-style dotted keys.
Configuration supports two scopes: workspace (per-project, stored in
.slopctl/config.yml) and global (user-wide, stored in ~/.config/slopctl/config.yml).
Without --global, writes target the workspace config. Reads return the effective merged
value: workspace wins, global is the fallback.
Usage
slopctl config --set <key> <value> # Set a workspace configuration value
slopctl config --global --set <k> <v> # Set a global configuration value
slopctl config <key> # Get effective value (workspace > global)
slopctl config --list # List effective configuration with origin labels
slopctl config --global --list # List global configuration only
slopctl config --delete <key> # Delete from workspace configuration
slopctl config --global --delete <k> # Delete from global configuration
Options
<key>: configuration key to get (e.g.templates.uri)--set <key> <value>(-s): set a configuration value--list(-l): list all configuration values--delete <key>(-d): delete a configuration key--global(-g): operate on the global config instead of the workspace config
Configuration keys follow the convention <command>.<parameter>, e.g. templates.uri
configures the templates command and merge.provider configures the merge command.
templates.uri, templates.fallbackUri, agents.uri, and agents.fallbackUri accept
either a remote URL or a local filesystem path, so the same key works for
https://github.com/... sources and local catalog directories.
Examples
# Set a workspace-local template source (only affects this project)
slopctl config --set templates.uri /Users/me/work/my-templates
# Set a global template source (shared across all projects)
slopctl config --global --set templates.uri https://github.com/myteam/templates/tree/main/templates
# Get effective value (workspace overrides global)
slopctl config templates.uri
# List effective configuration with [workspace] / [global] origin labels
slopctl config --list
# Delete workspace override (falls back to global value)
slopctl config --delete templates.uri
# Set fallback source for resilience (global)
slopctl config --global --set templates.fallbackUri https://github.com/heikopanjas/slopctl-templates/tree/develop/templates
# Set default LLM provider for merge (workspace-specific)
slopctl config --set merge.provider anthropic
# Set default model for merge (global default)
slopctl config --global --set merge.model claude-sonnet-4-6
Valid configuration keys
templates.uri: default template source (URL or local filesystem path) used bytemplates --updateandinitwhen--fromis not specifiedtemplates.fallbackUri: fallback source used when the primary source fails or is unreachableagents.uri: default agent defaults source used byagents --update; also used bytemplates --updatewhen bootstrapping missing agent defaultsagents.fallbackUri: fallback source for agent defaultsmerge.provider: default LLM provider formerge(openai,anthropic,ollama,mistral)merge.model: default model formerge(e.g.gpt-5.6-terra,claude-sonnet-5)models.uri: default model defaults source used bymodels --updatemodels.fallbackUri: fallback source for model defaults
Configuration file locations
- Workspace:
<project>/.slopctl/config.yml(committed to repo alongsidetracker.yml) - Global (Linux):
$XDG_CONFIG_HOME/slopctl/config.ymlor~/.config/slopctl/config.yml - Global (macOS):
~/.config/slopctl/config.yml
Precedence
Consumer commands (templates --update, agents --update, models --update, init,
update, merge) read the effective merged config. For each key, the workspace value wins;
if not set there, the global value is used. This lets you set shared defaults globally while
overriding per-project as needed.
Behavior
- Configuration persists between sessions
templates --updateusestemplates.uriif set and--fromnot specifiedagents --updateusesagents.uriif set and--fromnot specifiedinitusestemplates.uriwhen downloading missing global templates- If the primary source fails and a
fallbackUriis configured, slopctl automatically tries the fallback - If missing during
templates --update,agent-defaults.yml(andmodel-defaults.yml) is bootstrapped fromagents.uri(models.uri), then its fallback, then the defaultslopctl-templatesrepository - An empty configuration file is valid (all defaults used)
--list(without--global) annotates each key with[workspace]or[global]to show its origin