ruvnet/ruflo · error · ProxyAlreadyRunningError

meta-proxy is already running (pid ${pid}). Stop it first wi

Error message

meta-proxy is already running (pid ${pid}). Stop it first with: ruflo proxy stop

What it means

Error "meta-proxy is already running (pid ${pid}). Stop it first with: ruflo proxy stop" thrown in ruvnet/ruflo.

Source

Thrown at v3/@claude-flow/cli/src/proxy/lifecycle.ts:177

    fs.unlinkSync(proxyLockFilePath());
  } catch {
    /* ignore */
  }
}

/**
 * Foreground start (ADR-307 default) — blocks the caller until the process
 * exits or is interrupted. `stdio: 'inherit'` passes the proxy's own output
 * straight through to the terminal; signals (Ctrl+C) propagate naturally to
 * the child, no manual forwarding needed.
 */
export async function startForeground(supervised = false): Promise<never> {
  const bin = requireBinary();
  const status = getProxyStatus();
  // In service mode startBackground has already written this supervisor's
  // PID. Treating it as a competing proxy makes the supervisor immediately
  // exit before it can spawn meta-proxy.
  if (!supervised && status.running && status.pid) throw new ProxyAlreadyRunningError(status.pid);
  if (status.stalePidFile) clearStalePidFile();

  const child = spawn(bin, [], { stdio: 'inherit', windowsHide: false });
  if (!supervised && child.pid) writePidFile(child.pid);

  const cleanup = () => clearStalePidFile();
  process.on('exit', cleanup);
  if (supervised) {
    const forwardSignal = (signal: NodeJS.Signals) => {
      if (!child.killed) child.kill(signal);
    };
    process.once('SIGTERM', () => forwardSignal('SIGTERM'));
    process.once('SIGINT', () => forwardSignal('SIGINT'));
  }

  await new Promise<void>((resolve) => {
    child.on('exit', () => {
      cleanup();

View on GitHub (pinned to 6b01dc5a68)

When it happens

Trigger: Thrown at v3/@claude-flow/cli/src/proxy/lifecycle.ts:177 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@6b01dc5a68 (2026-08-12). Data as JSON: /api/errors/83c86b64092be16e. Report an issue: GitHub.