ruvnet/ruflo · error
SDK version ${this.currentVersion.full} is not compatible. R
Error message
SDK version ${this.currentVersion.full} is not compatible. Required: ${compatibility.minVersion.full} - ${compatibility.maxVersion.full} What it means
SDKBridge.initialize() detects the installed SDK's version, then checks it against the bridge's supported min-max compatibility range; a version outside [minVersion, maxVersion] aborts initialization with this error and leaves the bridge uninitialized.
Source
Thrown at v3/@claude-flow/integration/src/sdk-bridge.ts:99
/**
* Initialize the SDK bridge
*/
async initialize(): Promise<void> {
if (this.initialized) {
return;
}
this.emit('initializing');
try {
// Detect SDK version
this.currentVersion = await this.detectVersion();
// Check compatibility
const compatibility = await this.checkCompatibility();
if (!compatibility.compatible) {
throw new Error(
`SDK version ${this.currentVersion.full} is not compatible. ` +
`Required: ${compatibility.minVersion.full} - ${compatibility.maxVersion.full}`
);
}
// Detect available features
await this.detectFeatures();
this.initialized = true;
this.emit('initialized', {
version: this.currentVersion,
features: Array.from(this.availableFeatures)
});
} catch (error) {
this.emit('initialization-failed', { error });
throw error;
}
}View on GitHub (pinned to fa13ee4ad6)
Solutions
- Pin the SDK to a version inside the reported range (e.g. change '^2.0.0' to '~1.9.0') and do a clean reinstall
- Upgrade @claude-flow/integration to a release whose bridge supports your SDK version
- In monorepos, verify which SDK copy actually resolves (npm ls / yarn why) — a hoisted duplicate is a common culprit
Example fix
// before (package.json)
"dependencies": { "@claude-flow/sdk": "^2.0.0" } // bridge requires 1.2.0 - 1.9.x
// after
"dependencies": { "@claude-flow/sdk": "~1.9.0" } // inside the supported range Defensive patterns
Strategy: validation
Validate before calling
// Fail fast at boot with an actionable message instead of failing mid-run
import { satisfies } from 'semver';
const sdkVersion = getInstalledSdkVersion(); // e.g. require('...package.json').version
if (!satisfies(sdkVersion, '>=1.2.0 <2.0.0')) {
throw new Error(`SDK ${sdkVersion} outside supported range — pin ~1.9.0 or upgrade the bridge`);
} Try / catch
try {
const bridge = await createSDKBridge(config);
} catch (e) {
if (e instanceof Error && e.message.includes('is not compatible')) {
// surface a setup hint (pin/upgrade) and abort startup — retrying won't change the version
}
throw e;
} Prevention
- Lock the SDK version (~ or exact) instead of ^ when the bridge has a narrow supported range
- Add a CI step that runs bridge initialization against the locked SDK
- After any dependency refresh, run a canary initialize() before deploying
When it happens
Trigger: Calling initialize() (directly or via createSDKBridge) when the detected SDK version is older than compatibility.minVersion or newer than compatibility.maxVersion — e.g. a fresh install pulled a new major, or a stale lockfile still holds a too-old copy.
Common situations: npm update / yarn upgrade bumps the SDK past the bridge's supported ceiling; a cached or hoisted old SDK in a monorepo resolves instead of the expected one; the integration package is newer or older than the SDK it wraps.
Related errors
- SDKBridge not initialized. Call initialize() first.
- MCP initialization failed: ${initResponse.error.message}
- ruvLLM bridge not initialized. Call with config first.
- dimension is required when creating a new memory file
- Failed to initialize @ruvector/rvagent-wasm: ${err}
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/1aee608ea376b187.
Report an issue: GitHub.