bytedance/deer-flow · error · ValueError

OpenViking {name} must be a boolean

Error message

OpenViking {name} must be a boolean

What it means

The _boolean() helper in the OpenViking config parser rejects a value that is neither a bool nor a recognized boolean string. It is only used for memory.backend_config.allow_insecure_http. Accepted inputs: true/false (YAML booleans) and the case-insensitive strings 'true','1','yes','on' / 'false','0','no','off'.

Source

Thrown at backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py:173

    if not isinstance(value, dict):
        raise ValueError(f"OpenViking {name} must be a mapping")
    return dict(value)


def _optional_float(value: Any) -> float | None:
    return None if value is None else float(value)


def _boolean(value: Any, name: str) -> bool:
    if isinstance(value, bool):
        return value
    if isinstance(value, str):
        normalized = value.strip().lower()
        if normalized in {"true", "1", "yes", "on"}:
            return True
        if normalized in {"false", "0", "no", "off"}:
            return False
    raise ValueError(f"OpenViking {name} must be a boolean")

View on GitHub (pinned to 1dd6ba1acb)

Solutions

  1. Set allow_insecure_http: true or false (plain YAML boolean) in memory.backend_config
  2. If a string is unavoidable, use one of true/1/yes/on or false/0/no/off (case-insensitive)
  3. Restart the Gateway after the config edit

Example fix

# before (config.yaml)
memory:
  backend_config:
    allow_insecure_http: enabled   # not recognized

# after
memory:
  backend_config:
    allow_insecure_http: true
Defensive patterns

Strategy: validation

Validate before calling

val = raw_backend_config.get("allow_insecure_http", False)
valid_strings = {"true", "1", "yes", "on", "false", "0", "no", "off"}
ok = isinstance(val, bool) or (isinstance(val, str) and val.strip().lower() in valid_strings)
assert ok, "allow_insecure_http must be a boolean (true/false)"

Type guard

def is_valid_openviking_boolean(value: object) -> bool:
    if isinstance(value, bool):
        return True
    return isinstance(value, str) and value.strip().lower() in {"true", "1", "yes", "on", "false", "0", "no", "off"}

Prevention

When it happens

Trigger: Setting memory.backend_config.allow_insecure_http to an unrecognized value such as 'maybe', 'trusted', an integer other than 0/1 strings (e.g. 2), or a YAML string like 'TRUE ' is fine after strip/lower but 'y', 'enabled' fail. Raised during OpenVikingConfig.from_backend_config.

Common situations: Typing allow_insecure_http: yes!! or 'y' in config.yaml, or passing a YAML-quoted value like "enabled" copied from other tools' configs.

Related errors


AI-assisted analysis of bytedance/deer-flow@1dd6ba1acb (2026-08-14). Data as JSON: /api/errors/190ad61eee20aff0. Report an issue: GitHub.