ruvnet/ruflo · error · UnsupportedPlatformError

meta-proxy has no published release for

Error message

meta-proxy has no published release for ${platform}/${arch}

What it means

detectTargetTriple() maps platform/arch onto meta-proxy's five published release triples. On Windows only x64 is supported; any other Windows architecture (arm64, ia32) throws UnsupportedPlatformError because no build is published for it. The error fires before any network activity — install aborts immediately.

Solutions

  1. Install and run the x64 Node.js build on Windows (Windows 11 ARM emulates x64) and retry `ruflo proxy install`
  2. Run under WSL2 (linux/x86_64 target) and install there
  3. Track or request an aarch64-windows release upstream if native ARM support is required

Example fix

# before (ARM64 node)
node -p process.arch   # 'arm64' → install fails
# after: install x64 Node, then
node -p process.arch   # 'x64'
ruflo proxy install
Defensive patterns

Strategy: validation

Validate before calling

const supported =
  (process.platform === 'win32' && process.arch === 'x64') ||
  process.platform === 'darwin' ||
  process.platform === 'linux';
if (!supported) {
  console.error(`no meta-proxy build for ${process.platform}/${process.arch}`);
  process.exit(2);
}

Type guard

const isUnsupportedPlatform = (e: unknown): e is Error & { name: 'UnsupportedPlatformError' } =>
  e instanceof Error && e.name === 'UnsupportedPlatformError';

Try / catch

try {
  await installProxy({ version });
} catch (e) {
  if (isUnsupportedPlatform(e)) {
    console.error(e.message); // no fallback build exists — exit cleanly with guidance
    process.exit(2);
  }
  throw e;
}

Prevention

When it happens

Trigger: `ruflo proxy install` on win32 where process.arch !== 'x64' — native Windows ARM64 running an ARM64 Node build, or a 32-bit Node runtime.

Common situations: Windows-on-ARM devices running the ARM64 Node.js distribution; 32-bit Node installed by mistake; CI images using windows-arm64 runners.

Related errors


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/a14c4ce2f76d36d9. Report an issue: GitHub.

Appendix: source

Thrown at v3/@claude-flow/cli/src/proxy/release.ts:36

  'x86_64-unknown-linux-gnu',
  'aarch64-unknown-linux-gnu',
  'x86_64-pc-windows-msvc',
] as const;
export type TargetTriple = (typeof TARGET_TRIPLES)[number];

export class UnsupportedPlatformError extends Error {
  constructor(platform: string, arch: string) {
    super(`meta-proxy has no published release for ${platform}/${arch}`);
    this.name = 'UnsupportedPlatformError';
  }
}

/** Maps the running Node process's platform/arch onto one of meta-proxy's 5 published triples. */
export function detectTargetTriple(platform: string = process.platform, arch: string = process.arch): TargetTriple {
  if (platform === 'darwin') return arch === 'arm64' ? 'aarch64-apple-darwin' : 'x86_64-apple-darwin';
  if (platform === 'linux') return arch === 'arm64' ? 'aarch64-unknown-linux-gnu' : 'x86_64-unknown-linux-gnu';
  if (platform === 'win32') {
    if (arch !== 'x64') throw new UnsupportedPlatformError(platform, arch);
    return 'x86_64-pc-windows-msvc';
  }
  throw new UnsupportedPlatformError(platform, arch);
}

export function releaseArchiveExtension(triple: TargetTriple): 'zip' | 'tar.gz' {
  return triple.endsWith('windows-msvc') ? 'zip' : 'tar.gz';
}

export function releaseAssetFilename(version: string, triple: TargetTriple): string {
  return `meta-proxy-${version}-${triple}.${releaseArchiveExtension(triple)}`;
}

export interface ReleaseAssets {
  archiveBytes: Buffer;
  archiveFilename: string;
  sumsBytes: Buffer;
  sigBase64: string;

View on GitHub (pinned to fa13ee4ad6)