paperclipai/paperclip · error
Embedded PostgreSQL port is in use; using next free port (re
Error message
Embedded PostgreSQL port is in use; using next free port (requestedPort=${configuredPort}, selectedPort=${detectedPort}) What it means
Startup warning (logger.warn) in startServer. Fires when the configured embedded PostgreSQL port is occupied by an unrelated/foreign server (data directory mismatch or bind failure), so the resolver picks the next free port and proceeds with it.
Source
Thrown at server/src/index.ts:522
return pid;
} catch {
return null;
}
};
const runningPid = getRunningPid();
if (runningPid) {
logger.warn(`Embedded PostgreSQL already running; reusing existing process (pid=${runningPid}, port=${port})`);
} else {
const configuredAdminConnectionString = `postgres://paperclip:paperclip@127.0.0.1:${configuredPort}/postgres`;
try {
const actualDataDir = await getPostgresDataDirectory(configuredAdminConnectionString);
if (
typeof actualDataDir !== "string" ||
resolve(actualDataDir) !== resolve(dataDir)
) {
throw new Error("reachable postgres does not use the expected embedded data directory");
}
await ensurePostgresDatabase(configuredAdminConnectionString, "paperclip");
logger.warn(
`Embedded PostgreSQL appears to already be reachable without a pid file; reusing existing server on configured port ${configuredPort}`,
);
} catch {
const detectedPort = await detectPort(configuredPort);
if (detectedPort !== configuredPort) {
logger.warn(`Embedded PostgreSQL port is in use; using next free port (requestedPort=${configuredPort}, selectedPort=${detectedPort})`);
}
port = detectedPort;
logger.info(`Using embedded PostgreSQL because no DATABASE_URL set (dataDir=${dataDir}, port=${port})`);
const createEmbeddedPostgres = () => new EmbeddedPostgres({
databaseDir: dataDir,
user: "paperclip",
password: "paperclip",
port,
persistent: true,
initdbFlags: ["--encoding=UTF8", "--locale=C", "--lc-messages=C"],View on GitHub (pinned to 01ad858492)
Solutions
- No action needed; a free port was selected automatically.
- To use a fixed port, free the configured port or update the embedded PostgreSQL port configuration.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at server/src/index.ts:449 when the library encounters an invalid state.
Common situations: Logged at startup when the configured embedded PostgreSQL port is already in use, so the next free port is chosen.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/2fdae2229a650aee.
Report an issue: GitHub.