paperclipai/paperclip · warning

No Tailscale address was detected during setup. The saved co

Error message

No Tailscale address was detected during setup. The saved config will stay on loopback until Tailscale is available or PAPERCLIP_TAILNET_BIND_HOST is set.

What it means

During `paperclipai onboard --bind tailnet`, buildPresetServerConfig('tailnet', ...) tries to detect the machine's Tailscale address; when detection finds none it falls back to host 127.0.0.1 (isLoopbackHost(preset.server.host) is then true) and warns that the saved config stays on loopback until Tailscale is available or PAPERCLIP_TAILNET_BIND_HOST is set. Server reachability will not match the chosen 'tailnet' mode.

Source

Thrown at cli/src/commands/onboard.ts:545

    );
  } else {
    const setupModeChoice = await p.select({
      message: "Choose setup path",
      options: [
        {
          value: "quickstart" as const,
          label: "Quickstart",
          hint: "Recommended: local defaults + ready to run",
        },
        {
          value: "advanced" as const,
          label: "Advanced setup",
          hint: "Customize database, server, storage, and more",
        },
      ],
      initialValue: "quickstart",
    });
    if (p.isCancel(setupModeChoice)) {
      p.cancel("Setup cancelled.");
      return;
    }
    setupMode = setupModeChoice as SetupMode;
  }

  const tc = getTelemetryClient();
  if (tc) trackInstallStarted(tc);

  let llm: PaperclipConfig["llm"] | undefined;
  const { defaults: derivedDefaults, usedEnvKeys, ignoredEnvKeys } = quickstartDefaultsFromEnv({
    preferTrustedLocal: opts.yes === true && !opts.bind,
  });
  let {
    database,
    logging,
    server,
    auth,

View on GitHub (pinned to 5716fe907e)

Solutions

  1. Install/start Tailscale and authenticate (tailscale up), verify `tailscale ip -4` prints an address, then re-run onboard (or configure) with --bind tailnet.
  2. Alternatively pre-set the bind host: export PAPERCLIP_TAILNET_BIND_HOST=<your-tailscale-ip> before onboarding.
  3. If you intended local-only access, keep the loopback result or re-run with --bind loopback to remove the mismatch.

Example fix

# before
$ paperclipai onboard --bind tailnet
! No Tailscale address was detected during setup. ...

# after
$ tailscale up   # authenticate, then verify
$ tailscale ip -4
100.64.0.5
$ paperclipai onboard --bind tailnet   # preset now binds 100.64.0.5
Defensive patterns

Strategy: validation

Validate before calling

import { execFileSync } from "node:child_process";
let tailscaleIp: string | null = null;
try { tailscaleIp = execFileSync("tailscale", ["ip", "-4"], { encoding: "utf8" }).trim(); } catch {}
if (!tailscaleIp && !process.env.PAPERCLIP_TAILNET_BIND_HOST) {
  // don't pick tailnet preset yet — it will silently fall back to loopback
}

Prevention

When it happens

Trigger: Onboarding with --bind tailnet while Tailscale is not installed, not running (`tailscale status` down), or has no assigned IP, and PAPERCLIP_TAILNET_BIND_HOST is unset.

Common situations: Fresh VM without Tailscale yet; tailscaled stopped; tailnet account not authenticated; CI environment where the CLI flag was copied from docs.

Related errors


AI-assisted analysis of paperclipai/paperclip@5716fe907e (2026-08-18). Data as JSON: /api/errors/762abf1c9bdc7e53. Report an issue: GitHub.