ruvnet/ruflo · error
OpenAI provider requires apiKey
Error message
OpenAI provider requires apiKey
What it means
The async factory was building an OpenAI embedding service but rest.apiKey was empty/undefined, and the OpenAI API cannot be called without credentials. Fails fast at construction time instead of on the first embed call.
Source
Thrown at v3/@claude-flow/embeddings/src/embedding-service.ts:1020
// Specific provider with optional fallback
const createPrimary = (): IEmbeddingService => {
switch (provider) {
case 'agentic-flow':
return new AgenticFlowEmbeddingService({
provider: 'agentic-flow',
modelId: rest.modelId ?? 'all-MiniLM-L6-v2',
dimensions: rest.dimensions ?? 384,
cacheSize: rest.cacheSize,
});
case 'transformers':
return new TransformersEmbeddingService({
provider: 'transformers',
model: rest.model ?? 'Xenova/all-MiniLM-L6-v2',
cacheSize: rest.cacheSize,
});
case 'openai':
if (!rest.apiKey) throw new Error('OpenAI provider requires apiKey');
return new OpenAIEmbeddingService({
provider: 'openai',
apiKey: rest.apiKey,
dimensions: rest.dimensions,
cacheSize: rest.cacheSize,
});
case 'rvf':
return new RvfEmbeddingService({
provider: 'rvf',
dimensions: rest.dimensions ?? 384,
cacheSize: rest.cacheSize,
});
case 'mock':
return new MockEmbeddingService({
dimensions: rest.dimensions ?? 384,
cacheSize: rest.cacheSize,
});
default:View on GitHub (pinned to fa13ee4ad6)
Solutions
- Pass apiKey in the OpenAI provider config, sourced from your secret manager (e.g. devkey), not hardcoded.
- Choose a provider that does not need a key ('agentic-flow' or 'transformers') if no OpenAI key is available.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/@claude-flow/embeddings/src/embedding-service.ts:1020 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/98cdc0295b6c9414.
Report an issue: GitHub.