bytedance/deer-flow · error · ValueError
OpenViking owner_user_id must not be empty
Error message
OpenViking owner_user_id must not be empty
What it means
Error "OpenViking owner_user_id must not be empty" thrown in bytedance/deer-flow.
Source
Thrown at backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py:117
[
*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:
raise ValueError("OpenViking timeout_seconds must be a finite value > 0")
if not 1 <= self.search_top_k <= 100:
raise ValueError("OpenViking retrieval.top_k must be between 1 and 100")
if self.score_threshold is not None and (not isfinite(self.score_threshold) or not 0 <= self.score_threshold <= 1):
raise ValueError("OpenViking retrieval.score_threshold must be a finite value between 0 and 1")
if not 256 <= self.max_injection_chars <= 100_000:
raise ValueError("OpenViking retrieval.max_injection_chars must be between 256 and 100000")
if self.content_mode not in {"auto", "abstract", "overview", "read"}:
raise ValueError("OpenViking retrieval.content_mode must be auto, abstract, overview, or read")
if not self.injection_query:
raise ValueError("OpenViking retrieval.injection_query must not be empty")View on GitHub (pinned to 1dd6ba1acb)
Solutions
- Set owner_user_id to the DeerFlow user id that owns the OpenViking USER API key.
- This binds the credential to one user; it must not be empty.
When it happens
Trigger: Thrown at backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py:117 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/ec8637dab87cc084.
Report an issue: GitHub.