nexu-io/open-design · error · Error
Vela video task timed out after ${totalTimeoutMs}ms; last st
Error message
Vela video task timed out after ${totalTimeoutMs}ms; last status ${lastStatus} What it means
The video task did not reach a terminal state (succeeded/failed/cancelled) within the configured totalTimeoutMs. The loop exits after the deadline with the last known status. The timeout is configurable via OD_VELA_VIDEO_TIMEOUT_MS; poll interval via OD_VELA_VIDEO_POLL_INTERVAL_MS (default 5000ms).
Source
Thrown at apps/daemon/src/media/vela.ts:513
input.onProgress?.(`Vela video status ${lastStatus}; elapsed ${elapsedSeconds}s`);
if (lastStatus === 'succeeded') {
const bytes = await readNonEmptyOutput(outputPath, 'video get');
return {
bytes,
providerNote: `vela/${wireModel} · ${ratio} · ${input.length ?? 5}s · ${DEFAULT_VELA_VIDEO_RESOLUTION} default · ${bytes.length} bytes`,
suggestedExt: '.mp4',
};
}
if (lastStatus === 'failed' || lastStatus === 'cancelled' || lastStatus === 'canceled') {
throw new Error(`Vela video task ended with status ${lastStatus}: ${videoTaskError(task)}`);
}
if (lastStatus !== 'queued' && lastStatus !== 'running') {
throw new Error(`Vela video task returned unsupported status ${lastStatus}`);
}
}
throw new Error(
`Vela video task timed out after ${totalTimeoutMs}ms; last status ${lastStatus}`,
);
} finally {
await rm(tempDir, { recursive: true, force: true });
}
}
View on GitHub (pinned to 5be4028344)
Solutions
- Increase OD_VELA_VIDEO_TIMEOUT_MS in the daemon environment to allow more time
- Check Vela backend status for queue congestion or outages
- Reduce OD_VELA_VIDEO_POLL_INTERVAL_MS for more responsive status detection
- Retry the request when backend load is lower
Defensive patterns
Strategy: retry
Try / catch
const MAX_RETRIES = 2;
let lastErr;
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
try {
return await renderVelaVideo(input);
} catch (err) {
lastErr = err;
if (err.message.includes('timed out') && attempt < MAX_RETRIES) {
await sleep(5000 * (attempt + 1));
continue;
}
throw err;
}
}
throw lastErr; Prevention
- Set OD_VELA_VIDEO_TIMEOUT_MS generously enough for backend processing under load
- Monitor Vela backend status pages for queue congestion before batch operations
- For CI/test environments, use shorter timeouts with mock responses instead of real generation
When it happens
Trigger: The task stays in 'queued' or 'running' longer than totalTimeoutMs; the Vela backend is overloaded and tasks take longer than expected; the poll interval is large relative to the timeout so few polls occur before the deadline.
Common situations: Backend queue congestion during peak hours; large/complex video generation jobs; tight timeout in test/CI environments; network latency inflating each poll round-trip.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- Vela video get returned unexpected task_id ${returnedTaskId
- volcengine poll ${pollResp.status}: ${truncate(pollText, 240
- volcengine task did not finish in time (last status: ${lastS
- Vela video only supports aspect ratios 16:9, 9:16, or 1:1; r
- Vela video only supports durations of 5 or 10 seconds; recei
AI-assisted analysis of nexu-io/open-design@5be4028344 (2026-08-12).
Data as JSON: /api/errors/27cf919c150b5799.
Report an issue: GitHub.