Install
openclaw skills install @loonghao/rez-config-pluginsRez configuration layering and the plugin system — config precedence and merge rules, string expansion, DelayLoad, key settings (packages_path, implicit_packages, caching, package_filter), and the seven plugin types with their discovery mechanisms and entry points. Use when the user asks how to configure rez, why a setting is not taking effect, or how to write or install a plugin. Covers Rez 3.4.0.
openclaw skills install @loonghao/rez-config-pluginsOne-sentence summary: configuration is layered (each source overrides, not replaces, the previous), and everything extensible — shells, build systems, repositories, release hooks — is a plugin discovered either by
rezpluginsdirectory layout or by Python entry points.
Skill scope: configuration and plugins. For resolve behavior see rez-resolve; for the CLI see
rez-cli.
Lowest to highest. Later sources win.
rezconfig.py shipped in the rez installation (defaults + documentation for every setting)REZ_CONFIG_FILE — can be a path-like list to read several files$HOME/.rezconfig or $HOME/.rezconfig.pyREZ_<SETTING>_JSON environment variable — value must be JSON-encodedREZ_<SETTING> environment variable — e.g. REZ_PACKAGES_PATH overrides packages_path.
Takes precedence over the _JSON form when both are present.config section via scope("config")Related: REZ_DISABLE_HOME_CONFIG skips the home config.
Verify what actually took effect:
rez-config # dump all settings
rez-config packages_path # one setting
Sources merge; they do not replace wholesale.
To append/prepend to a list setting instead of replacing it, use ModifyList:
release_hooks = ModifyList(append=["custom_release_notify"])
prepend=[...] is also supported.
Both YAML (.rezconfig) and Python (.rezconfig.py) are supported. Choose Python when settings
must vary by platform. You only need to list settings that differ from the defaults.
Applied to all configuration settings:
${HOME}system object properties: {system.platform}, {system.arch}, {system.os}Keep a large setting out of the main config and load it only when referenced (YAML or JSON):
default_relocatable_per_package = DelayLoad('/svr/configs/rez_relocs.yaml')
| Setting | Default | Purpose |
|---|---|---|
packages_path | see install | package search path |
local_packages_path | ~/packages | where rez-build --install lands |
release_packages_path | ~/.rez/packages/int | where rez-release deploys |
cache_packages_path | None | package cache location |
implicit_packages | ~platform=={system.platform}, ~arch=={system.arch}, ~os=={system.os} | weak system constraints |
variant_select_mode | version_priority | variant preference strategy |
plugin_path | [] | where to find rezplugins |
package_filter | None | hide packages from resolves |
package_definition_python_path | None | extra import path for package.py |
resolve_caching | True | cache resolves |
cache_package_files / cache_listdir | True | filesystem caches |
default_cachable | False | whether packages may be cached |
memcached_uri | [] | back the caches with memcached |
error_on_missing_variant_requires | True | fail on incomplete variant requirements |
pathed_env_vars | any var ending in PATH | which vars get path-normalized |
rez_1_environment_variables | False | legacy variable naming |
warn_old_commands / error_old_commands | True / False | old-style commands detection |
The full, authoritative list with documentation lives in src/rez/rezconfig.py in the rez source.
Plugin types and their base classes:
| Type | Base class | Top-level settings |
|---|---|---|
build_process | rez.build_process.BuildProcess or BuildProcessHelper | No |
build_system | rez.build_system.BuildSystem | No |
command | rez.command.Command | Yes |
package_repository | rez.package_repository.PackageRepository + 3 package_resources classes | No |
release_hook | rez.release_hook.ReleaseHook | Yes |
release_vcs | rez.release_vcs.ReleaseVCS | Yes |
shell | rez.shells.Shell | No |
Built-ins live in src/rezplugins. New plugins are encouraged out-of-tree.
List what is installed and its load status:
rez -i
Example output — note release vcs / svn / FAILED: No module named 'pysvn', i.e. rez -i is the
quickest way to see a plugin that failed to import.
plugins = {
"package_repository": {
"filesystem": {}
}
}
rezplugins directory layoutPoint plugin_path (or REZ_PLUGIN_PATH) at the directory above your rezplugins dir:
rezplugins/
├── __init__.py
└── <plugin_type>/
├── __init__.py
└── <plugin name>.py
The
rezpluginsdirectory name is not optional, and your sparse copy must be onREZ_PLUGIN_PATHonly — not onPYTHONPATH. That ordering guarantees rez's own copy ofrezpluginsis found first.
One entry point per plugin type:
rez.plugins.build_processrez.plugins.build_systemrez.plugins.commandrez.plugins.package_repositoryrez.plugins.release_hookrez.plugins.release_vcsrez.plugins.shellThis is the more flexible option: no special file layout, and one package can ship several plugins of different types.
Ship a rezconfig.py or rezconfig.yml beside the plugin module; rez loads it automatically.
top_level_setting = "value"
plugin_name = {
"setting_1": "value1"
}
plugin_name settings arrive as self.settings; top_level_setting as
self.type_settings.top_level_setting. Only the types marked "Yes" in the table above support
top-level settings.
Install a plugin with the same name and type as a built-in and rez prefers yours. This is the supported way to modify built-in behavior without patching rez source.
| Symptom | Check |
|---|---|
| Setting not taking effect | walk the precedence list; REZ_<SETTING> beats the _JSON form and beats files |
| Home config interfering | REZ_DISABLE_HOME_CONFIG, or inspect with rez-config |
| List setting got replaced not extended | use ModifyList(append=[...]) |
| Plugin not found | rez -i; confirm REZ_PLUGIN_PATH points above rezplugins |
| Plugin import error | rez -i shows FAILED: <error> in the status column |
| Packages silently missing from resolves | package_filter, rez-pkg-ignore, packages_path order |
| Resolves look stale | resolve_caching; retest with rez-env --no-cache |
rez-config <setting> before changing anything.REZ_CONFIG_FILE for site-wide policy.ModifyList whenever you mean "add to" rather than "replace".rez -i before debugging a plugin by hand.