tinyhumansai/openhuman · error
Seltz search request failed: {e}
Error message
Seltz search request failed: {e} What it means
Transport-failure mapping in SeltzTool::execute_with_options: the reqwest POST to the Seltz endpoint (with x-api-key header) failed at the network layer — DNS failure, connection refused/reset, TLS error, or the configured timeout elapsed. The reqwest error is logged at warn and rewrapped; HTTP status failures are handled separately in the non-2xx branch.
Source
Thrown at src/openhuman/search/tools/seltz.rs:291
tracing::debug!(
query_len = query.chars().count(),
max_results,
timeout_secs = self.timeout_secs,
"[seltz] POST {url}"
);
let resp = self
.http_client
.post(&url)
.header("x-api-key", api_key)
.header("Content-Type", "application/json")
.json(&body)
.send()
.await
.map_err(|e| {
tracing::warn!("[seltz] request failed: {e}");
anyhow::anyhow!("Seltz search request failed: {e}")
})?;
let status = resp.status();
if !status.is_success() {
let body_text = resp.text().await.unwrap_or_default();
let detail = utf8_safe_prefix_at_byte_boundary(&body_text, 500);
tracing::warn!(
status = %status,
"[seltz] non-2xx response: {detail}"
);
anyhow::bail!("Seltz returned {status}: {detail}");
}
let search_resp: SeltzSearchResponse = resp.json().await.map_err(|e| {
tracing::warn!("[seltz] failed to parse response: {e}");
anyhow::anyhow!("Failed to parse Seltz response: {e}")
})?;
View on GitHub (pinned to 7491200858)
Solutions
- Check network connectivity and that the Seltz endpoint URL is reachable.
- Retry; transient network errors often resolve.
- If timeouts recur, increase the timeout or investigate proxy/firewall interference.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/search/tools/seltz.rs:291 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/ee6d48edc2871501.
Report an issue: GitHub.