tinyhumansai/openhuman · error
rpc_http transport was requested but this build was…
Error message
rpc_http transport was requested but this build was compiled without the `http-server` feature; rebuild with the default `http-server` feature, or use an embedding that does not set `ServiceSet::rpc_http`
What it means
The runtime builder was asked to start the rpc_http transport (ServiceSet::rpc_http set on CoreBuilder) but the binary was compiled without the `http-server` Cargo feature, so serve_http does not exist. The builder deliberately fails fast with this message rather than silently skipping a requested transport; the bind inputs are touched in the slim build only so they do not read as dead fields.
Solutions
- Rebuild with the `http-server` feature enabled (it is in the default set).
- Or stop requesting the transport: do not set ServiceSet::rpc_http on the builder.
- Embedders: audit your Cargo feature list against the ServiceSet you actually build.
Example fix
// before (Cargo.toml: default-features = false, features = []) let services = ServiceSet::none().with_rpc_http(); // runtime bail // after (Cargo.toml: features = ["http-server"]) let services = ServiceSet::none().with_rpc_http(); // compiles and serves
Defensive patterns
Strategy: validation
Validate before calling
#[cfg(feature = "http-server")] let services = services.with_rpc_http(); #[cfg(not(feature = "http-server"))] let services = services; // never request a transport this build cannot serve
Prevention
- Guard ServiceSet::rpc_http behind #[cfg(feature = "http-server")] in embedding code.
- Keep the Cargo feature list and the ServiceSet construction in the same review when changing builds.
- Treat this bail as a wiring bug in the embedder, not a runtime condition to catch.
When it happens
Trigger: An embedding or CLI configuration sets ServiceSet::rpc_http in a build made with --no-default-features or an explicit feature list that omitted http-server; a downstream manifest forgot to forward the feature.
Common situations: Custom hosts copying the embed examples and then enabling rpc_http without adding the feature; slim or product builds where http-server was excluded for size; kernel-profile embeddings.
Related errors
- mcp --transport http unavailable: built without the…
- Core RPC returned an error
- Local model runtime is unavailable in this core build…
- mcp feature disabled at compile time: this build was…
- tui feature disabled at compile time; rebuild with…
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/6384a58b9295f942.
Report an issue: GitHub.
Appendix: source
Thrown at src/core/runtime/builder.rs:611
{
// `rpc_http` was requested (we passed the guard above) but the HTTP +
// Socket.IO transport is compiled out of this slim build. Fail loudly
// rather than returning Ok with no listener bound — a supervisor / CLI
// (`openhuman run`, `serve`, `--headless-api`) would otherwise observe
// a clean start while the requested API is unavailable. Embedders that
// genuinely want no transport leave `ServiceSet::rpc_http` unset, which
// is handled by the early return above.
//
// The bind inputs are only read by the compiled-out `serve_http`; touch
// them so they don't read as dead fields in the slim build.
let _ = (
ready_tx,
shutdown_token,
self.has_operator_token,
self.host.as_ref(),
self.port,
);
anyhow::bail!(
"rpc_http transport was requested but this build was compiled \
without the `http-server` feature; rebuild with the default \
`http-server` feature, or use an embedding that does not set \
`ServiceSet::rpc_http`"
);
}
#[cfg(feature = "http-server")]
{
self.serve_http(ready_tx, shutdown_token).await
}
}
/// HTTP + Socket.IO transport body of [`Self::serve`].
///
/// Compiled only under the `http-server` feature (#5048): builds the axum
/// router, binds the listener, starts the selected background services, and
/// serves until shutdown. With the feature off, [`serve`](Self::serve) runsView on GitHub (pinned to 7491200858)