tinyhumansai/openhuman · error

relay outbound failed: {error}

Error message

relay outbound failed: {error}

What it means

Sending a channel outbound intent over the relay transport failed: the transport's send_outbound call errored (connection dropped, relay protocol error, or backpressure timeout) and the raw error is wrapped with the `relay outbound failed` prefix. Only fires when a relay transport is actually installed; without one the function returns Ok(None).

Source

Thrown at src/openhuman/channels/relay_runtime.rs:52

        .is_some_and(|relay| {
            relay
                .identities
                .iter()
                .any(|identity| identity.platform == channel)
        })
}

pub(crate) async fn send_outbound_intent(
    intent: &ChannelOutboundIntent,
) -> Result<Option<ChannelSendMessageResult>> {
    let Some(transport) = current_relay_transport() else {
        return Ok(None);
    };
    let action = tinychannels::relay::relay_send_action_from_outbound_intent(intent);
    let result = transport
        .send_outbound(action, Some(&intent.channel_id))
        .await
        .map_err(|error| anyhow::anyhow!("relay outbound failed: {error}"))?;
    Ok(Some(relay_send_message_result(result)?))
}

fn relay_send_message_result(result: Value) -> Result<ChannelSendMessageResult> {
    if result.get("success").and_then(Value::as_bool) == Some(false) {
        let error = result
            .get("error")
            .and_then(Value::as_str)
            .unwrap_or("relay outbound failed");
        return Err(anyhow::anyhow!("relay outbound failed: {error}"));
    }
    Ok(ChannelSendMessageResult {
        message_id: result
            .get("message_id")
            .and_then(Value::as_str)
            .map(str::to_string),
        raw: Some(result),
        ..Default::default()

View on GitHub (pinned to 7491200858)

Solutions

  1. Check relay connectivity and reconnection state
  2. Retry the send; relay transport errors are frequently transient
  3. Inspect the wrapped error to distinguish protocol failure from disconnect
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/channels/relay_runtime.rs:52 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/46d350734e4e1b27. Report an issue: GitHub.