{"record":{"id":"2ca2c8e1fd8ae5b2","repo":"nikivdev/code","slug":"remote-external-cli-installs-are-not-implemented-y","errorCode":null,"errorMessage":"remote external CLI installs are not implemented yet for {}; use `f install <path-to-cli>` for now","messagePattern":"remote external CLI installs are not implemented yet for (.+?); use `f install <path-to-cli>` for now","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/install.rs","lineNumber":38,"sourceCode":"        .map(str::trim)\n        .filter(|name| !name.is_empty())\n    {\n        let candidate = Path::new(name);\n        if candidate.exists() {\n            let tool = external_cli::install_external_cli_link(candidate, opts.force)?;\n            println!(\n                \"Linked external CLI {} from {}\",\n                tool.manifest.id,\n                tool.source_root.display()\n            );\n            if let Some(path) = &tool.registration_path {\n                println!(\"Link record: {}\", path.display());\n            }\n            return Ok(());\n        }\n\n        if looks_like_remote_external_cli_id(name) {\n            bail!(\n                \"remote external CLI installs are not implemented yet for {}; use `f install <path-to-cli>` for now\",\n                name\n            );\n        }\n    }\n\n    if opts\n        .name\n        .as_deref()\n        .map(|name| name.trim().is_empty())\n        .unwrap_or(true)\n    {\n        opts.backend = InstallBackend::Flox;\n        opts.name = Some(prompt_flox_package()?);\n    }\n\n    match opts.backend {\n        InstallBackend::Registry => registry::install(normalize_registry_install_opts(opts)),","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/install.rs#L20-L56","documentation":"install::run detects when the requested name matches looks_like_remote_external_cli_id — an identifier referencing a remote external CLI rather than a local path or flox package. Remote fetching of external CLIs is not implemented, so it bails with guidance to install from a local CLI file path instead.","triggerScenarios":"Calling `f install <name>` where <name> is recognized as a remote external CLI identifier (e.g. a registry-style id for a CLI binary) instead of a local file path.","commonSituations":"Users copy an install id from docs/registries for a CLI tool; automation passes a remote identifier; confusion between flox package names and external CLI ids.","solutions":["Download the CLI binary/file locally first, then run `f install /path/to/cli`.","If the tool exists as a flox package, install it by its flox package name instead of the remote CLI id.","Check whether a newer version of `f` implements remote external CLI installs."],"exampleFix":"// before\nf install some-remote-cli\n// after\nf install ~/downloads/some-remote-cli","handlingStrategy":"validation","validationCode":"// Only pass local file paths for external CLI installs\nlet p = std::path::Path::new(name);\nif !(p.exists() && p.is_file()) && looks_like_remote_external_cli_id(name) {\n    eprintln!(\"{name} is a remote CLI id; download it locally and pass the path\");\n}","typeGuard":"fn is_local_cli_path(name: &str) -> bool {\n    std::path::Path::new(name).is_file()\n}","tryCatchPattern":"match f_install(name) {\n    Err(e) if e.to_string().contains(\"not implemented yet\") => {\n        eprintln!(\"download the CLI locally, then: f install <path-to-cli>\");\n    }\n    r => r?,\n}","preventionTips":["Install external CLIs from local files, not remote ids","Check the tool version/docs for whether remote CLI installs are supported yet","Prefer flox package names when the tool is available as a flox package"],"tags":["unimplemented","install","external-tool"],"backgroundTag":"feature-not-implemented","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}