coleam00/Archon · error

Network error fetching checksums from

Error message

Network error fetching checksums from ${checksumsUrl}: ${toError(err).message}

What it means

The fallback (no embedded checksum) path of downloadWebDist fetches the checksums file and tarball in parallel; this error wraps any network-level failure of fetch(checksumsUrl), preserving the underlying message. It exists so the operator sees which URL failed rather than an opaque fetch rejection.

Solutions

  1. Verify reachability of the checksums URL with curl -I <checksumsUrl> from the host.
  2. Fix proxy/egress configuration (HTTPS_PROXY) or firewall rules for the download host.
  3. Use a release binary with an embedded checksum to skip the remote checksums download entirely.
  4. Retry on transient failures; confirm the release/channel actually publishes the checksums artifact.

Example fix

// before: dev binary hitting missing checksums host
archon serve --download  # fetch(checksumsUrl) fails
// after: release binary with embedded checksum
archon serve --download  # uses parseEmbeddedChecksum path
Defensive patterns

Strategy: retry

Validate before calling

const res = await fetch(checksumsUrl).catch(() => null);
if (!res || !res.ok) throw new Error(`Checksums URL unreachable or failing: ${checksumsUrl}`);

Try / catch

try {
  await serveCommand({ downloadOnly: true });
} catch (err) {
  if (err instanceof Error && err.message.startsWith('Network error fetching checksums')) {
    // verify DNS/proxy for the checksums host and retry
  }
}

Prevention

When it happens

Trigger: serveCommand -> downloadWebDist in dev/pre-build mode (embeddedChecksum absent); fetch(checksumsUrl) rejects due to unreachable host, DNS/TLS failure, or aborted request.

Common situations: Same network issues as tarball fetch: offline host, proxy blocking, DNS failure; dev binaries pointing at a release URL that does not host checksums yet; firewall egress rules.

Related errors


AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01). Data as JSON: /api/errors/1b3f20fd01b11a38. Report an issue: GitHub.

Appendix: source

Thrown at packages/cli/src/commands/serve.ts:140

  console.log(`Web UI not found locally — downloading from release v${version}...`);

  // Determine expected hash: prefer build-time embedded hash (independent trust anchor)
  // over the remote checksums.txt (same-source, weaker guarantee).
  let expectedHash: string;
  let tarballRes: Response;
  if (embeddedChecksum) {
    expectedHash = parseEmbeddedChecksum(embeddedChecksum);
    log.info({ source: 'embedded' }, 'web_dist.checksum_resolved');
    console.log(`Downloading ${tarballUrl}...`);
    tarballRes = await fetch(tarballUrl).catch((err: unknown) => {
      throw new Error(`Network error fetching tarball from ${tarballUrl}: ${toError(err).message}`);
    });
  } else {
    // Fallback: download checksums and tarball in parallel (dev mode or pre-build binaries)
    console.log(`Downloading ${tarballUrl}...`);
    const [checksumsRes, fetchedTarballRes] = await Promise.all([
      fetch(checksumsUrl).catch((err: unknown) => {
        throw new Error(
          `Network error fetching checksums from ${checksumsUrl}: ${toError(err).message}`
        );
      }),
      fetch(tarballUrl).catch((err: unknown) => {
        throw new Error(
          `Network error fetching tarball from ${tarballUrl}: ${toError(err).message}`
        );
      }),
    ]);
    if (!checksumsRes.ok) {
      throw new Error(
        `Failed to download checksums: ${checksumsRes.status} ${checksumsRes.statusText}`
      );
    }
    const checksumsText = await checksumsRes.text();
    expectedHash = parseChecksum(checksumsText, 'archon-web.tar.gz');
    log.info({ source: 'remote' }, 'web_dist.checksum_resolved');
    tarballRes = fetchedTarballRes;

View on GitHub (pinned to 0773b97458)