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

  1. Rebuild with the `http-server` feature enabled (it is in the default set).
  2. Or stop requesting the transport: do not set ServiceSet::rpc_http on the builder.
  3. 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

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


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) runs

View on GitHub (pinned to 7491200858)