config-set
Set or update a value in ritual.config.json.
./ritual config-set [options] <property> <value...>| Argument | Description | Required |
|---|---|---|
<property> | The config key to set (dot notation for nested) | Yes |
<value...> | One or more values to set | Yes |
| Option | Description |
|---|---|
--add | Append value(s) to an array property (no duplicates) |
--remove | Remove value(s) from an array property |
Settable properties
Section titled “Settable properties”| Property | Type | Default |
|---|---|---|
decksDir | string | ./decks |
collectionsDir | string | ./collections |
wantedDir | string | ./wanted |
The nested admin keys — settings for the admin server — are set with dot notation:
| Property | Type | Default |
|---|---|---|
admin.gitEnabled | boolean | false |
admin.gitAutoCommit | boolean | false |
admin.gitAutoPush | boolean | false |
admin.trustProxy | boolean | false |
admin.secureCookies | boolean | false |
admin.ipAllowList | string[] | [] |
admin.ipDenyList | string[] | [] |
admin.userAgentAllowList | string[] | [] |
admin.userAgentDenyList | string[] | [] |
admin.rateLimitEnabled | boolean | true |
admin.rateLimitMaxAttempts | number | 5 |
admin.rateLimitWindowMinutes | number | 5 |
admin.failedAuthDelayMs | number | 3000 |
The following nested site keys — the public-site publish lists — are also settable:
| Property | Type | Default |
|---|---|---|
site.includeDecks | string[] | ["*"] |
site.includeCollections | string[] | ["*"] |
site.includeWantedLists | string[] | ["*"] |
site.excludeDecks | string[] | [] |
site.excludeCollections | string[] | [] |
site.excludeWantedLists | string[] | [] |
site.bannedPrintings | string[] | [] |
Each exclude* list drops lists by display name even when the matching include* list selects them; exclusion always wins. The exclude lists have no wildcard and default to empty. The admin Manage Lists page edits them through per-list visibility toggles.
site.bannedPrintings blocks specific printings from being chosen as a card’s default (featured) printing when no printing is otherwise specified. Each entry is a SET:COLLECTOR pair (e.g. SLD:123). Ritual normally features the most recent non-outlier printing among a card’s five newest priced printings; when that printing is banned, it skips to the next eligible one. A banned printing can still be viewed and entered manually — it is only barred from automatic selection. Set codes are stored lowercase; the value you pass may use either case.
The rest of the site key (the deployment settings) is managed exclusively by ritual init-site and cannot be set with this command.
Value types
Section titled “Value types”string— passed as-is.boolean— must betrueorfalse(case-insensitive).number— must be a non-negative integer.string[]— one or more values. By default the whole array is replaced. Use--addor--removeto modify individual entries. Arrays are treated as sets; duplicate values are ignored.
Examples
Section titled “Examples”Enable git integration:
./ritual config-set admin.gitEnabled trueChange the decks directory:
./ritual config-set decksDir ./my-decksSet an IP allowlist (replaces the whole list):
./ritual config-set admin.ipAllowList "192.168.1.0/24" "10.0.0.1"Add an IP to an existing allowlist:
./ritual config-set --add admin.ipAllowList "10.0.0.2"Remove an IP from the allowlist:
./ritual config-set --remove admin.ipAllowList "10.0.0.1"Increase the rate-limit window:
./ritual config-set admin.rateLimitWindowMinutes 10Publish only specific decks on the built site (replaces the whole list):
./ritual config-set site.includeDecks "Izzet Storm" "Atraxa Superfriends"Reset a publish list back to “everything”:
./ritual config-set site.includeCollections "*"Hide a single deck from the built site (leaving the rest published):
./ritual config-set --add site.excludeDecks "Untuned Brew"Stop a specific printing from being featured as a card’s default (it can still be selected manually):
./ritual config-set --add site.bannedPrintings "SLD:123"- Changes are written to
ritual.config.jsonimmediately. - Running the admin server picks up config changes on its next request; a running server does not need to be restarted.
- Use
--base-dirto target a config file in a directory other than the current working directory.