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

  1. Delete the updateProject call from OSS code — no argument makes it succeed.
  2. Switch to MemoryClient (hosted) if project updates are required.
  3. Guard shared code: check which client type you hold before calling platform-only methods.
  4. 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

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


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/b6eaaf9b6a9858f1. Report an issue: GitHub.