{"record":{"id":"724d3d556060ab59","repo":"tinyhumansai/openhuman","slug":"signal-http-client-should-build","errorCode":null,"errorMessage":"Signal HTTP client should build","messagePattern":"Signal HTTP client should build","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/channels/commands.rs","lineNumber":119,"sourceCode":"        );\n    }\n\n    if let Some(ref sig) = config.channels_config.signal {\n        channels.push((\n            \"Signal\",\n            Arc::new(SignalChannel::with_http_client(\n                sig.http_url.clone(),\n                sig.account.clone(),\n                sig.group_id.clone(),\n                sig.allowed_from.clone(),\n                sig.ignore_attachments,\n                sig.ignore_stories,\n                crate::openhuman::config::apply_runtime_proxy_to_builder(\n                    reqwest::Client::builder().connect_timeout(std::time::Duration::from_secs(10)),\n                    \"channel.signal\",\n                )\n                .build()\n                .expect(\"Signal HTTP client should build\"),\n            )),\n        ));\n    }\n\n    if let Some(ref wa) = config.channels_config.whatsapp {\n        // Runtime negotiation: detect backend type from config\n        match wa.backend_type() {\n            \"cloud\" => {\n                // Cloud API mode: requires phone_number_id, access_token, verify_token\n                if wa.is_cloud_config() {\n                    channels.push((\n                        \"WhatsApp\",\n                        Arc::new(WhatsAppChannel::with_http_client(\n                            wa.access_token.clone().unwrap_or_default(),\n                            wa.phone_number_id.clone().unwrap_or_default(),\n                            wa.verify_token.clone().unwrap_or_default(),\n                            wa.allowed_numbers.clone(),\n                            crate::openhuman::config::build_runtime_proxy_client(","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/channels/commands.rs#L101-L137","documentation":"Panic payload on reqwest::Client::builder().build() when constructing SignalChannel::with_http_client from CLI config: the builder (10s connect timeout plus runtime proxy settings) failed to produce a client. Because this happens during channel construction from static config, the process aborts rather than starting with a half-configured Signal channel.","triggerScenarios":"Thrown at src/openhuman/channels/commands.rs:119 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the configured proxy settings ([network]/runtime proxy) for a malformed URL","Verify TLS backend availability in this build","Use .build().map_err(...) instead of expect so a client failure degrades to skipping the Signal channel"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}