{"record":{"id":"a0dbf3803db298c3","repo":"tinyhumansai/openhuman","slug":"unsupported-runtime-kind-other","errorCode":null,"errorMessage":"Unsupported runtime kind: {other}","messagePattern":"Unsupported runtime kind: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/agent/host_runtime.rs","lineNumber":207,"sourceCode":"        // No `pipefail` wrapper here (unlike NativeRuntime): the in-container\n        // shell is image-dependent (busybox/dash/bash) so we can't assume\n        // `set -o pipefail` is supported. Container commands keep POSIX `sh`.\n        cmd.arg(\"sh\").arg(\"-lc\").arg(command);\n        Ok(cmd)\n    }\n}\n\n/// Build the runtime adapter for the configured `kind`. `hide_window` comes\n/// from `[shell] hide_window` and only affects the native runtime on Windows\n/// (the docker runtime spawns the `docker` client, out of scope here).\npub fn create_runtime(\n    config: &RuntimeConfig,\n    hide_window: bool,\n) -> anyhow::Result<Box<dyn RuntimeAdapter>> {\n    match config.kind.as_str() {\n        \"native\" => Ok(Box::new(NativeRuntime::with_hide_window(hide_window))),\n        \"docker\" => Ok(Box::new(DockerRuntime::new(config.docker.clone()))),\n        other => anyhow::bail!(\"Unsupported runtime kind: {other}\"),\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use crate::openhuman::config::{DockerRuntimeConfig, RuntimeConfig};\n\n    #[test]\n    fn native_runtime_reports_capabilities_and_shell_command() {\n        let runtime = NativeRuntime::new();\n        assert_eq!(runtime.name(), \"native\");\n        assert!(runtime.has_shell_access());\n        assert!(runtime.has_filesystem_access());\n        assert!(runtime.supports_long_running());\n        assert_eq!(runtime.memory_budget(), 0);\n        assert!(runtime.storage_path().ends_with(\"openhuman/runtime\"));\n","sourceCodeStart":189,"sourceCodeEnd":225,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/agent/host_runtime.rs#L189-L225","documentation":"create_runtime maps the configured runtime kind string to an adapter, and only \"native\" and \"docker\" exist; any other value bails with 'Unsupported runtime kind: {other}'. The value comes straight from the runtime config, so this is a config-validation failure surfacing at adapter construction time - a typo, a stale key from an older config, or a kind this build predates.","triggerScenarios":"The runtime config's kind is set to something like 'local', 'sandbox', or 'podman', or misspells 'docker'; the config was written for a newer core version that added a kind this binary does not know.","commonSituations":"Hand-edited config TOML; a migration leaving a legacy value behind; version skew between the config producer and the running core.","solutions":["Set the runtime kind to `native` or `docker` in the config.","If you expected a newer kind, upgrade the core binary to a version that supports it.","Validate kind against the known set at config load so failures surface earlier with a clearer message."],"exampleFix":"# before\n[runtime]\nkind = \"podman\"\n\n# after\n[runtime]\nkind = \"docker\"","handlingStrategy":"validation","validationCode":"const KNOWN_RUNTIME_KINDS: &[&str] = &[\"native\", \"docker\"];\nif !KNOWN_RUNTIME_KINDS.contains(&config.kind.as_str()) {\n    anyhow::bail!(\"runtime kind must be one of {KNOWN_RUNTIME_KINDS:?}, got {}\", config.kind);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate config.kind against a known-set at config load time so typos fail with a clear message before the adapter is built.","Re-validate hand-edited configs after upgrades that may rename keys.","Keep the known-set in one place next to create_runtime so the two cannot drift."],"tags":["config","runtime","validation","adapter"],"backgroundTag":"invalid-config-value","analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}