paperclipai/paperclip · error
Readiness check failed: could not resolve health URL for ${i
Error message
Readiness check failed: could not resolve health URL for ${input.url} What it means
waitForRuntimeServiceReadiness needs to probe an HTTP health URL, but resolveRuntimeServiceHealthUrl could not derive a valid health URL from the provided service/readiness URL. The readiness check cannot run without a target.
Source
Thrown at server/src/services/workspace-runtime.ts:4781
export async function waitForRuntimeServiceReadiness(input: {
service: Record<string, unknown>;
serviceName?: string | null;
command?: string | null;
url: string | null;
readinessUrl: string | null;
fetchImpl?: typeof fetch;
now?: () => number;
}) {
const readiness = parseObject(input.service.readiness);
const readinessType = asString(readiness.type, "");
const readinessTargetUrl = input.readinessUrl ?? input.url;
if (readinessType !== "http" || !readinessTargetUrl) return;
const readinessUrl = resolveRuntimeServiceHealthUrl(readinessTargetUrl, {
serviceName: input.serviceName,
command: input.command,
});
if (!readinessUrl) {
throw new Error(`Readiness check failed: could not resolve health URL for ${input.url}`);
}
const fetchImpl = input.fetchImpl ?? fetch;
const now = input.now ?? Date.now;
const timeoutSec = resolveWorkspaceRuntimeReadinessTimeoutSec(input.service);
const intervalMs = Math.max(100, asNumber(readiness.intervalMs, 500));
const deadline = now() + timeoutSec * 1000;
let lastError = "service did not become ready";
while (now() < deadline) {
const probeBudgetMs = Math.max(1, Math.min(RUNTIME_SERVICE_READINESS_PROBE_TIMEOUT_MS, deadline - now()));
try {
const response = await fetchImpl(readinessUrl, { signal: AbortSignal.timeout(probeBudgetMs) });
if (response.ok) return;
lastError = `received HTTP ${response.status}`;
} catch (err) {
lastError = err instanceof Error ? err.message : String(err);
}
if (now() >= deadline) break;
await delay(Math.min(intervalMs, Math.max(0, deadline - now())));View on GitHub (pinned to a7e689b3c3)
Solutions
- Provide a valid absolute http(s) URL for the readiness check so a health URL can be resolved.
- Fix the service URL configuration so the host and port are known before the readiness check runs.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/services/workspace-runtime.ts:4628 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/083b52fb71a94dc9.
Report an issue: GitHub.