OpenBMB/ChatDev · error · RegistryError

Entry '{name}' is not a MemoryStoreRegistration

Error message

Entry '{name}' is not a MemoryStoreRegistration

What it means

The registry entry loaded for the requested memory store name is not a MemoryStoreRegistration, meaning the registry holds a foreign or corrupted object under that name. create_memory hits this when dispatching a store type.

Source

Thrown at runtime/node/agent/memory/registry.py:49

    name: str,
    *,
    config_cls: Type[Any],
    factory: Callable[["MemoryStoreConfig"], "MemoryBase"],
    summary: str | None = None,
) -> None:
    if name in memory_store_registry.names():
        raise RegistryError(f"Memory store '{name}' already registered")
    entry = MemoryStoreRegistration(name=name, config_cls=config_cls, factory=factory, summary=summary)
    memory_store_registry.register(name, target=entry)
    register_memory_store_schema(name, config_cls=config_cls, summary=summary)


def get_memory_store_registration(name: str) -> MemoryStoreRegistration:
    _ensure_builtins_loaded()
    entry: RegistryEntry = memory_store_registry.get(name)
    registration = entry.load()
    if not isinstance(registration, MemoryStoreRegistration):
        raise RegistryError(f"Entry '{name}' is not a MemoryStoreRegistration")
    return registration


def iter_memory_store_registrations() -> Dict[str, MemoryStoreRegistration]:
    _ensure_builtins_loaded()
    return {name: entry.load() for name, entry in memory_store_registry.items()}


__all__ = [
    "memory_store_registry",
    "MemoryStoreRegistration",
    "register_memory_store",
    "get_memory_store_registration",
    "iter_memory_store_registrations",
]

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Register only via register_memory_store
  2. Inspect memory_store_registry.get(name).load() to see the actual object
  3. Reinstall consistent package versions to collapse duplicate registration classes
Defensive patterns

Strategy: try-catch

Validate before calling

from runtime.node.agent.memory.registry import iter_memory_store_registrations
assert 'mystore' in iter_memory_store_registrations()

Try / catch

try:
    mem = create_memory(store_cfg)
except RegistryError as e:
    logger.error('bad memory store registration: %s', e)
    raise

Prevention

When it happens

Trigger: Something registered a raw object into memory_store_registry bypassing register_memory_store, then create_memory('name') loads and type-checks the entry.

Common situations: Plugins mutating the shared registry directly; version skew where MemoryStoreRegistration was redefined across package copies after a partial upgrade.

Related errors


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