mem0ai/mem0 · error
Project updates are not supported by the OSS Memory SDK.
Error message
Project updates are not supported by the OSS Memory SDK.
What it means
updateProject() in the OSS SDK unconditionally throws this error (return type Promise<never>) because project management exists only in the hosted Mem0 platform. Unlike the decay path, this fires for any call without decay:true and is the SDK's explicit 'feature not available self-hosted' signal.
Source
Thrown at mem0-ts/src/oss/src/memory/index.ts:717
}
static fromConfig(configDict: Record<string, any>): Memory {
try {
const config = MemoryConfigSchema.parse(configDict);
return new Memory(config);
} catch (e) {
console.error("Configuration validation error:", e);
throw e;
}
}
async updateProject(options: UpdateProjectOptions = {}): Promise<never> {
if (options?.decay === true) {
await this._getNoticeTelemetryId();
throw new Error(await getDecayFeatureErrorMessage(this));
}
throw new Error("Project updates are not supported by the OSS Memory SDK.");
}
async add(
messages: string | Message[],
config: AddMemoryOptions,
): Promise<SearchResult> {
if (config?.timestamp !== undefined) {
await this._getNoticeTelemetryId();
throw new Error(
await getTemporalFeatureErrorMessage(this, {
triggerFunction: "add",
triggerParameter: "timestamp",
}),
);
}
// Validate messages input
if (messages === undefined || messages === null) {View on GitHub (pinned to 001c235229)
Solutions
- Delete the updateProject call from OSS code — no argument makes it succeed.
- Switch to MemoryClient (hosted) if project updates are required.
- Guard shared code: check which client type you hold before calling platform-only methods.
- Track projects yourself (e.g. store a project id per memory in metadata) when self-hosting.
Example fix
// before
const memory = new Memory(config);
await memory.updateProject({ name: 'prod' }); // always throws
// after
const memory = new Memory(config);
// project updates: hosted only
// const client = new MemoryClient({ apiKey: process.env.MEM0_API_KEY });
// await client.updateProject({ projectId: 'prod', name: 'prod' }); Defensive patterns
Strategy: type-guard
Type guard
type OssMemory = import('mem0ai/oss').Memory;
function isOssMemory(client: unknown): client is OssMemory {
return client instanceof Memory; // OSS class, not MemoryClient
} Try / catch
try {
await memory.updateProject(options);
} catch (err) {
if (err instanceof Error && /Project updates are not supported by the OSS/.test(err.message)) {
return { skipped: true, reason: 'oss-unsupported' }; // degrade gracefully
}
throw err;
} Prevention
- Check the client type before calling platform-only methods in shared code.
- Treat updateProject on OSS as a compile-time avoid: delete it from code paths, don't catch it.
- Centralize which features your app uses behind one config so OSS/hosted swaps are explicit.
When it happens
Trigger: Calling memory.updateProject() with no options, or options without decay, on a self-hosted Memory instance from 'mem0ai/oss'.
Common situations: Copy-pasting hosted-platform sample code into an OSS deployment; abstraction layers that call updateProject generically on any memory handle; IDE autocomplete suggesting the method since it exists on the class.
Related errors
- The decay parameter is not supported by the OSS Memory SDK.
- The timestamp parameter is not supported by the OSS Memory S
- Together LLM failed: ${message}
- vLLM LLM failed: ${message}
- HTTP ${resp.status}: ${detail}
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/b6eaaf9b6a9858f1.
Report an issue: GitHub.