tinyhumansai/openhuman · error
unknown composio mode: "{unknown}". Supported: "backend", "d
Error message
unknown composio mode: "{unknown}". Supported: "backend", "direct" What it means
create_composio_client rejected an unrecognized config.composio.mode string. Only "backend" and "direct" are supported; unknown values fail loud by design so a typo in config.toml does not silently downgrade the auth mode.
Source
Thrown at src/openhuman/integrations/composio/client.rs:848
.filter(|k| !k.is_empty())
})
.ok_or_else(|| {
anyhow::anyhow!(
"composio direct mode selected but no api key is configured \
(set via composio.set_api_key RPC or config.composio.api_key)"
)
})?;
let tool = create_direct_composio_tool_for_api_key(config, &api_key)?;
tracing::debug!(
key_len = api_key.len(),
"[composio-factory] resolved direct variant (key redacted)"
);
Ok(ComposioClientKind::Direct(tool))
}
unknown => {
tracing::warn!(mode = %unknown, "[composio-factory] unknown composio mode");
Err(anyhow::anyhow!(
"unknown composio mode: \"{unknown}\". Supported: \"backend\", \"direct\""
))
}
}
}
// ── Direct-mode response reshapers ──────────────────────────────────
//
// The direct-mode `ComposioTool` (in `composio/tools/direct.rs`)
// speaks `backend.composio.dev/api/v3/*` natively. The helpers below
// reshape those v3 responses into the same envelopes the
// backend-proxied [`ComposioClient`] returns, so callers in `ops.rs` /
// `tools.rs` don't have to branch on mode for downstream concerns
// (event-bus shape, log format, frontend type contract).
//
// All three helpers live next to the factory so anyone touching the
// direct-mode plumbing can see the full envelope-translation surface
// in one place.View on GitHub (pinned to 7491200858)
Solutions
- Set composio.mode to "backend" or "direct" in config.toml
- Remove the mode key entirely to accept the default (backend)
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/integrations/composio/client.rs:848 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/8b8784b8e1677087.
Report an issue: GitHub.