OpenBMB/ChatDev · error · ConfigError

unsupported memory store type '{store_type}'

Error message

unsupported memory store type '{store_type}'

What it means

Thrown by MemoryStoreConfig.from_dict when the memory store's 'type' string has no registered schema. The config loader looks up store types via get_memory_store_schema(); an unknown or misspelled type raises SchemaLookupError, which is wrapped into this ConfigError with the JSON path pointing at 'type'.

Source

Thrown at entity/configs/node/memory.py:365

        ),
    }


@dataclass
class MemoryStoreConfig(BaseConfig):
    name: str
    type: str
    config: BaseConfig | None = None

    @classmethod
    def from_dict(cls, data: Mapping[str, Any], *, path: str) -> "MemoryStoreConfig":
        mapping = require_mapping(data, path)
        name = require_str(mapping, "name", path)
        store_type = require_str(mapping, "type", path)
        try:
            schema = get_memory_store_schema(store_type)
        except SchemaLookupError as exc:
            raise ConfigError(f"unsupported memory store type '{store_type}'", extend_path(path, "type")) from exc

        if "config" not in mapping or mapping["config"] is None:
            raise ConfigError("memory store requires config block", extend_path(path, "config"))

        config_obj = schema.config_cls.from_dict(mapping["config"], path=extend_path(path, "config"))
        return cls(name=name, type=store_type, config=config_obj, path=path)

    def require_payload(self) -> BaseConfig:
        if not self.config:
            raise ConfigError("memory store payload missing", extend_path(self.path, "config"))
        return self.config

    FIELD_SPECS = {
        "name": ConfigFieldSpec(
            name="name",
            display_name="Store Name",
            type_hint="str",
            required=True,

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Check the exact spelling and casing of the 'type' field in your memory store config block against the registered store types
  2. Ensure any module that registers the memory store schema (calls the registration API for that store type) is imported before parsing config
  3. Print available store types by inspecting the memory store registry to see what names are accepted
  4. Upgrade/downgrade aligning config schema with the library version that introduced/renamed the store type

Example fix

# before
memory:
  store:
    name: my_store
    type: vectordb   # not registered
# after
memory:
  store:
    name: my_store
    type: redis      # registered store type
Defensive patterns

Strategy: validation

Validate before calling

from entity.configs.node.memory import get_memory_store_schema
try:
    get_memory_store_schema(cfg['store']['type'])
except SchemaLookupError:
    # invalid type; fix before parsing
    ...

Try / catch

try:
    store_cfg = MemoryStoreConfig.from_dict(data, path='store')
except ConfigError as e:
    if 'unsupported memory store type' in str(e):
        # surface allowed types / fallback to default store
        ...

Prevention

When it happens

Trigger: Calling MemoryStoreConfig.from_dict (directly or via a node/graph config parse) with mapping['type'] set to a value that is not a registered memory store type, e.g. 'vectordb' instead of a supported store like 'redis' or 'in-memory'.

Common situations: Typos in YAML/JSON memory store configs, copy-pasting configs from an older/newer version where store type names changed, or referencing a store whose plugin/module registering the schema was never imported.

Related errors


AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27). Data as JSON: /api/errors/fbd2f34e8c2a1544. Report an issue: GitHub.