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
- Install and run the x64 Node.js build on Windows (Windows 11 ARM emulates x64) and retry `ruflo proxy install`
- Run under WSL2 (linux/x86_64 target) and install there
- 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
- Print `node -p "process.platform + '/' + process.arch"` in environment onboarding docs
- Standardize CI on x64 Windows or Linux runners
- Pin per-platform Node distributions in setup scripts to avoid accidental ARM64 installs on Windows
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
- ambiguous repository path separator
- Expand-Archive failed
- extracted binary path failed validation
- release download failed: HTTP
- SHA256SUMS has no entry for
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)