paperclipai/paperclip · error
reconciled persisted runtime services from a previous server
Error message
reconciled persisted runtime services from a previous server process
What it means
Startup reconciliation log in startServer. Fires when reconcilePersistedRuntimeServicesOnStartup repaired persisted runtime service state from a previous process (reconciled/restarted/backfilled counts non-zero); services are restored to match DB state.
Source
Thrown at server/src/index.ts:963
let startupListenerBound = false;
try {
setupRunnerPrpWebSocketServer(server, { apiUrl: configuredApiUrl });
setupEnvironmentCustomImageTerminalWebSocketServer(server, db as any, {
pluginWorkerManager,
});
setupLiveEventsWebSocketServer(server, db as any, {
deploymentMode: config.deploymentMode,
resolveSessionFromHeaders,
// Cloud-proxied browsers carry trusted x-paperclip-cloud-* headers instead
// of a local Better Auth session; without this lane every live-events
// upgrade behind the Cloud front door 403s forever. The resolver is
// self-gating: it returns null unless PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN
// is configured and the request presents the matching trust token, so
// self-hosted deployments never take this path.
resolveCloudActor: async (req) => {
const actor = await resolveCloudTenantActor(
db as any,
cloudActorHeaderSourceFromHeaders(req.headers),
);
if (!actor?.userId || !actor.companyIds) return null;
return { userId: actor.userId, companyIds: actor.companyIds };
},
});
setStartupRecoveryPhase("recovering");
// Bind the shared HTTP/PRP listener before native startup recovery. A
// runnerd process that survived a controller crash is already reconnecting
// to this address; delaying listen until after orphan reconciliation makes
// authenticated adoption impossible and turns a healthy process into a
// duplicate-provider risk.
await new Promise<void>((resolveListen, rejectListen) => {
const onError = (err: Error) => {
server.off("error", onError);
rejectListen(err);
};
server.once("error", onError);View on GitHub (pinned to 01ad858492)
Solutions
- Informational only; persisted runtime service records from a previous process were reconciled with actual state.
- If services appear stuck, verify the managed runtime processes are actually running and restart them if needed.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at server/src/index.ts:842 when the library encounters an invalid state.
Common situations: Logged at startup when runtime service records persisted by a previous server process are reconciled against current reality.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/7e65a4c85557aeae.
Report an issue: GitHub.