wasmerio/wasmer · error · anyhow::Error
Template '{template}' not found in the registry
Error message
Template '{template}' not found in the registry What it means
get_template_url resolves an app template by slug through the registry (fetch_app_template_from_slug). When a template name was provided but the registry has no matching slug, it bails. The library throws it because the requested template simply does not exist remotely.
Source
Thrown at lib/cli/src/commands/app/create.rs:536
}
// A utility function used to fetch the URL of the template to use.
async fn get_template_url(
&self,
client: &WasmerClient,
) -> anyhow::Result<(url::Url, Option<PathBuf>)> {
let (mut url, selected_template): (url::Url, Option<AppTemplate>) = if let Some(template) =
&self.template
{
if let Ok(url) = url::Url::parse(template) {
(url, None)
} else if let Some(template) =
wasmer_backend_api::query::fetch_app_template_from_slug(client, template.clone())
.await?
{
(url::Url::parse(&template.repo_url)?, Some(template))
} else {
anyhow::bail!("Template '{template}' not found in the registry")
}
} else {
if self.non_interactive {
anyhow::bail!("No template selected")
}
let theme = ColorfulTheme::default();
let registry = self
.env
.registry_public_url()?
.host_str()
.unwrap_or("unknown_registry")
.replace('.', "_");
let cache_dir = self.env.cache_dir().join("templates").join(registry);
let languages = Self::fetch_template_languages_cached(client, &cache_dir).await?;
let items = languages.iter().map(|t| t.name.clone()).collect::<Vec<_>>();View on GitHub (pinned to 8c4b9ee9d3)
Solutions
- Check the exact template slug against the registry (browse available templates) and correct the --template value.
- Verify you are using the intended registry (registry flag/env) where the template exists.
- Omit --template and pick interactively, or use --use-local-manifest for a local app.
Example fix
// before // wasmer app create --template wasmer/hello-word (typo) // after // wasmer app create --template wasmer/hello-world
Defensive patterns
Strategy: validation
Validate before calling
// verify the slug exists before using it
const tpl = await registry.fetchAppTemplateFromSlug(slug);
if (!tpl) throw new Error(`template ${slug} not found in registry`); Type guard
fn template_exists(t: &Option<AppTemplate>) -> bool {
t.is_some()
} Try / catch
match result {
Err(e) if e.to_string().contains("not found in the registry") => {
eprintln!("listing available templates...");
// fetch and show template list, then retry with a valid slug
}
other => other?,
} Prevention
- Copy template slugs from the registry UI/docs instead of typing them.
- Verify the slug against the registry you actually target (--registry).
- Keep a tested set of known-good template slugs in deploy scripts.
When it happens
Trigger: Running `wasmer app create --template <slug>` where <slug> is not found via fetch_app_template_from_slug on the configured registry.
Common situations: Typo in the template slug; template removed/renamed upstream; pointing at a registry (custom --registry) that does not host the template.
Related errors
- No app name specified: use --name <app_name>
- No owner specified: use --owner <owner>
- Stopping as the directory is not empty
- The --use_local_manifest flag was passed, but path {} does n
- No template selected
AI-assisted analysis of wasmerio/wasmer@8c4b9ee9d3 (2026-09-01).
Data as JSON: /api/errors/b07e20eb1e9f0df7.
Report an issue: GitHub.