windmill-labs/windmill · error
Runnable not found: ${runnable_id}
Error message
Runnable not found: ${runnable_id} What it means
Same runnable-registry miss as the sync path, but in the backendAsync case of the dev server's WebSocket handler: the browser asked to run runnable_id in the background and get a job id back immediately, and loadRunnables() returned no such key. The faulting input is the runnable_id from the client message; cause is a stale/renamed/deleted runnable in the app versus what the dev server currently has loaded.
Source
Thrown at cli/src/commands/app/dev.ts:1208
true,
);
}
break;
}
case "backendAsync": {
// Run a runnable asynchronously and return job ID immediately
log.info(
colors.blue(
`[backendAsync] Running runnable async: ${runnable_id}`,
),
);
try {
const runnables = await loadRunnables();
const runnable = runnables[runnable_id];
if (!runnable) {
throw new Error(`Runnable not found: ${runnable_id}`);
}
const uuid = await executeRunnable(
runnable,
workspaceId,
appPath,
runnable_id,
v,
appTempRefs,
);
log.info(colors.gray(`[backendAsync] Job started: ${uuid}`));
// Return job ID immediately
respond("backendAsyncRes", uuid, false);
// Wait for result in the background and send it when done
waitForJob(workspaceId, uuid)
.then((result) => {View on GitHub (pinned to e474e8803c)
Solutions
- Restart the app dev server to refresh the runnable registry
- Fix the app source: remove or update the reference to the missing runnable id
- Re-save the app in the editor so preview and dev-server state re-sync
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cli/src/commands/app/dev.ts:1208 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/73c440bc983e1399.
Report an issue: GitHub.