tinyhumansai/openhuman · error
failed to build integration download HTTP client
Error message
failed to build integration download HTTP client
What it means
Panic payload on the separate download client used by IntegrationClient::get_bytes: this deliberately untagged client (no x-sdk-name header, since it follows a 302 to presigned S3) still must construct, and builder.build() failed — again a configuration-level failure (proxy/TLS) rather than a per-request one. Aborts the client constructor.
Source
Thrown at src/openhuman/integrations/client.rs:368
// Its one caller (`get_bytes`) fetches
// `/agent-integrations/file-storage/files/{id}/download`, which answers
// a 302 to a presigned S3 URL. reqwest follows redirects by default and
// strips only *sensitive* headers (Authorization, Cookie, …) when the
// host changes — a custom header like `x-sdk-name` survives the hop, so
// tagging this transport would disclose the product identity to the
// storage provider. Attaching it per-request would not help: redirected
// requests carry the original request headers too.
//
// The lost attribution is deliberate and cheap: the header cannot be
// scoped to the first hop without hand-rolling redirect following, and
// any session that downloads a file has already made SDK-path calls that
// are tagged.
let download_client = crate::openhuman::util::tls::tls_client_builder()
.http1_only()
.timeout(Duration::from_secs(15 * 60))
.connect_timeout(Duration::from_secs(15))
.build()
.expect("failed to build integration download HTTP client");
Self {
backend_url,
auth_token,
budget_config,
sdk,
download_client,
pricing: tokio::sync::OnceCell::new(),
}
}
async fn ensure_budget_available(&self, path: &str) -> anyhow::Result<()> {
if !managed_budget_applies_to_path(path) {
return Ok(());
}
if let Some(config) = &self.budget_config {
if crate::openhuman::hosted::team::managed_tool_budget_exhausted(config).await {
anyhow::bail!(View on GitHub (pinned to 7491200858)
Solutions
- Validate proxy URL configuration shared with the main integration client
- Check TLS backend availability for the platform
- Propagate the build error instead of expecting, so file downloads can fail per-call rather than kill the client
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/integrations/client.rs:368 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/f58ef442147124c2.
Report an issue: GitHub.