windmill-labs/windmill · error

Runnable ${runnableId} not found in backend folder or raw_ap

Error message

Runnable ${runnableId} not found in backend folder or raw_app.yaml

What it means

Lookup miss in inferRunnableSchemaFromFile: the runnable id resolves to neither a standalone <id>.yaml under the app's backend folder (new format) nor an entry in raw_app.yaml's runnables map (old format). The code logs this warning and returns undefined, excluding the runnable from schema inference.

Source

Thrown at cli/src/commands/app/app_metadata.ts:895

  }

  // Read the runnable from its separate YAML file (new format)
  const runnableFilePath2 = path.join(
    appFolder,
    APP_BACKEND_FOLDER,
    `${runnableId}.yaml`
  );

  let runnable: any;
  try {
    runnable = await yamlParseFile(runnableFilePath2);
  } catch {
    // Fall back to reading from raw_app.yaml (old format)
    try {
      const appFilePath = path.join(appFolder, "raw_app.yaml");
      const appFile = (await yamlParseFile(appFilePath)) as RawAppFile;
      if (!appFile.runnables?.[runnableId]) {
        log.warn(
          colors.yellow(`Runnable ${runnableId} not found in backend folder or raw_app.yaml`)
        );
        return undefined;
      }
      runnable = appFile.runnables[runnableId];
    } catch {
      // No YAML at all - in the new backend-folder format a code-only runnable
      // (no .yaml sibling) is treated as inline. We can still infer its schema.
      runnable = { type: "inline" };
    }
  }

  // Determine language and current schema. Two cases:
  // - Old format: the YAML carries an `inlineScript` block with language + schema
  // - New format: the YAML only declares `type: inline` and the language is
  //   derived from the code file's extension (the inlineScript is reconstructed
  //   from sibling files at load time).
  let language: SupportedLanguage | undefined;

View on GitHub (pinned to e474e8803c)

Solutions

  1. Check the runnable id spelling in the app YAML against the actual file name in the backend folder
  2. Ensure the runnable's YAML file exists in APP_BACKEND_FOLDER or is listed in raw_app.yaml
  3. Re-sync or re-create the app so backend files are materialized
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at cli/src/commands/app/app_metadata.ts:895 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/4c4a98ee94a7a730. Report an issue: GitHub.