{"record":{"id":"2f7ba8b12872fa2c","repo":"zeroclaw-labs/zeroclaw","slug":"the-public-plugin-registry-is-not-populated-yet-u","errorCode":null,"errorMessage":"the public plugin registry is not populated yet; use --registry <url> to point at a custom registry","messagePattern":"the public plugin registry is not populated yet; use --registry <url> to point at a custom registry","errorType":"http","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/plugin_registry.rs","lineNumber":65,"sourceCode":"    path.exists()\n        || source.starts_with('.')\n        || source.starts_with('~')\n        || source.contains('/')\n        || source.contains('\\\\')\n}\n\npub(crate) fn looks_like_url(source: &str) -> bool {\n    source.contains(\"://\")\n}\n\npub(crate) async fn fetch_registry_index(registry_url: &str) -> Result<PluginRegistryIndex> {\n    let response = reqwest::get(registry_url)\n        .await\n        .with_context(|| format!(\"fetching plugin registry {registry_url}\"))?;\n    let status = response.status();\n    if !status.is_success() {\n        if status == reqwest::StatusCode::NOT_FOUND && registry_url == DEFAULT_REGISTRY_URL {\n            bail!(\n                \"the public plugin registry is not populated yet; use --registry <url> to point at a custom registry\"\n            );\n        }\n        bail!(\"plugin registry returned HTTP {status} for {registry_url}\");\n    }\n    response\n        .json::<PluginRegistryIndex>()\n        .await\n        .context(\"parsing plugin registry JSON\")\n}\n\npub(crate) async fn download_registry_plugin(\n    registry_url: &str,\n    source: &str,\n    cache_data_dir: Option<&Path>,\n) -> Result<DownloadedPlugin> {\n    let index = fetch_registry_index(registry_url).await?;\n    if let Some(data_dir) = cache_data_dir {","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/src/plugin_registry.rs#L47-L83","documentation":"The default public plugin registry URL returned HTTP 404, which the code special-cases: it means the official registry index has not been published/populated yet. fetch_registry_index tells you to supply a custom registry URL instead of implying a client bug.","triggerScenarios":"Calling plugin install from the registry (download_registry_plugin -> fetch_registry_index) with the built-in DEFAULT_REGISTRY_URL while that URL serves 404. A 404 from a custom --registry URL does NOT hit this branch — it falls through to the generic HTTP status error (error 1407).","commonSituations":"Using registry plugin installs before the project has published its public index; pointing at the default URL in an offline/forked environment where the index was never uploaded; CDN/mirror misconfigured to 404 the index path.","solutions":["Supply your own index: re-run with `--registry <url>` pointing at a registry you control or trust","If you maintain the registry, publish the index JSON at the default URL","Check the project docs/status for when the public registry goes live; until then install plugins from source or local paths","Verify you are not behind a proxy rewriting the URL to a 404 page"],"exampleFix":"# before\nzeroclaw plugin install some-plugin   # default registry 404s\n\n# after\nzeroclaw plugin install some-plugin --registry https://my-host/zeroclaw-registry/index.json","handlingStrategy":"fallback","validationCode":"// Pre-flight the default registry before install:\nlet resp = reqwest::head(DEFAULT_REGISTRY_URL).await?;\nif resp.status() == reqwest::StatusCode::NOT_FOUND {\n    // fall back to your mirror/custom registry instead of invoking the install","typeGuard":null,"tryCatchPattern":"// Match the 'public plugin registry is not populated' message and retry the\n// install with --registry <custom-url>; any other message should propagate.","preventionTips":["Pin a custom --registry in environments you control","Track the project's registry status before relying on the default URL","Keep local/plugin-path installs as an offline fallback"],"tags":["plugin-registry","http-404","network","install"],"backgroundTag":"registry-not-found","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}