bytedance/deer-flow · error · ValueError

Unknown OpenViking backend_config fields:

Error message

Unknown OpenViking backend_config fields: 

What it means

Error "Unknown OpenViking backend_config fields: " thrown in bytedance/deer-flow.

Source

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

            startup_policy=str(cfg.pop("startup_policy", "fail_fast")).lower(),  # type: ignore[arg-type]
            read_failure_policy=str(failure_policy.pop("read", "fail_open")).lower(),  # type: ignore[arg-type]
            write_failure_policy=str(failure_policy.pop("write", "log_and_drop")).lower(),  # type: ignore[arg-type]
            allow_insecure_http=_boolean(
                cfg.pop("allow_insecure_http", False),
                "allow_insecure_http",
            ),
            max_seen_message_ids=int(cfg.pop("max_seen_message_ids", 512)),
        )

        unknown = sorted(
            [
                *cfg,
                *(f"retrieval.{key}" for key in retrieval),
                *(f"failure_policy.{key}" for key in failure_policy),
            ]
        )
        if unknown:
            raise ValueError("Unknown OpenViking backend_config fields: " + ", ".join(unknown))
        result._validate()
        return result

    def _validate(self) -> None:
        parsed = urlparse(self.base_url)
        if parsed.scheme not in {"http", "https"} or not parsed.netloc:
            raise ValueError("OpenViking base_url must be an absolute http(s) URL")
        if parsed.scheme == "http" and not self.allow_insecure_http and parsed.hostname not in {"127.0.0.1", "localhost", "openviking"}:
            raise ValueError("OpenViking plain HTTP is allowed only for localhost/openviking; set allow_insecure_http=true only for a trusted internal network")
        if not self.owner_user_id:
            raise ValueError("OpenViking owner_user_id must not be empty")
        if not self.api_key:
            raise ValueError(f"OpenViking USER API key is missing; set {self.api_key_env}")
        if not is_safe_peer_id(self.default_peer_id):
            raise ValueError("OpenViking default_peer_id must start with a lowercase letter or digit and contain at most 64 lowercase letters, digits, '_' or '-'")
        if self.default_peer_id.startswith(GENERATED_PEER_PREFIX):
            raise ValueError(f"OpenViking default_peer_id must not start with the reserved prefix {GENERATED_PEER_PREFIX!r}")
        if not isfinite(self.timeout_seconds) or self.timeout_seconds <= 0:

View on GitHub (pinned to 1dd6ba1acb)

Solutions

  1. Remove the unknown fields listed after the colon from the OpenViking backend_config.
  2. Check the OpenViking config documentation for the supported field names.

When it happens

Trigger: Thrown at backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py:106 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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