Migrations

Browse docs

Migrations

Tap to expand

Contribute

MigrationsUpdated 2026-03-18

Migration from Supermemory

A practical migration guide for teams moving from a Supermemory-style integration to Whisper without losing continuity, scope hygiene, or read-after-write behavior.

This guide is for teams that already have memory or retrieval in production and need a controlled move to Whisper.

The main goal is not “feature parity on paper.” The main goal is preserving the behaviors users actually notice:

  • writes still feel fast
  • fresh context is still visible quickly
  • user and session boundaries do not drift
  • relevance does not collapse during cutover

The mindset shift

When moving to Whisper, three ideas matter more than exact endpoint names:

1. Scope is explicit

Be precise about project, user_id, and session_id. If those identifiers drift during migration, the system will look worse than it is.

2. Async writes are normal

Whisper does not need to block on full processing before acknowledging a write. Use pending visibility to preserve continuity.

3. Retrieval and memory are separate jobs

Do not assume that replacing a write endpoint also replaces your retrieval strategy. Validate both sides independently.

A safe migration plan

Phase 1: map the current integration

Write down:

  • where writes happen today
  • where reads happen today
  • what user identity you rely on
  • whether session continuity matters in your product

Phase 2: create the Whisper project model

Choose the project boundary first. This is where many migrations go wrong.

Phase 3: replace one write path

Start with one memory write path, not the entire app.

Phase 4: replace one retrieval path

Validate retrieval against the same user and session scope used during the write test.

Phase 5: cut over gradually

Use a short dual-write or shadow-read window if the workflow is business-critical.

Minimal replacement patterns

Write path

Start from:

bash
curl -X POST "https://context.usewhisper.dev/v1/memory" \
  -H "Authorization: Bearer $WHISPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project": "migration-demo",
    "user_id": "user-42",
    "session_id": "sess-42",
    "content": "User prefers concise answers"
  }'

Retrieval path

Pair it with:

bash
curl -X POST "https://context.usewhisper.dev/v1/memory/search" \
  -H "Authorization: Bearer $WHISPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project": "migration-demo",
    "user_id": "user-42",
    "session_id": "sess-42",
    "query": "How should I answer this user?",
    "include_pending": true
  }'

Raw API users

Move to the v1 memory and context routes directly and validate request payloads carefully.

SDK users

Use WhisperClient rather than rebuilding a thin wrapper around raw HTTP.

Agent and MCP users

Map agent behaviors to the Whisper MCP tool model instead of trying to preserve every old tool name literally.

Common migration mistakes

Treating user_id as optional when it is core to your product

If you previously depended on stable user memory, keep that identity stable through the migration.

Forgetting include_pending

This is one of the easiest ways to make a healthy async write path look broken.

Rebuilding the old abstraction without reconsidering it

Migration is a good time to remove accidental complexity. Do not preserve a bad wrapper just because it already exists.

What “done” looks like

Your migration is in good shape when:

  • a fresh write is visible in the expected scope
  • long-term user context still carries across sessions
  • latency is acceptable for your real workload
  • support or QA cannot trigger obvious cross-scope confusion

Next step

If you are moving application code to the SDK, read SDK migration: WhisperContext to WhisperClient. If you want the canonical first-run validation loop after migration, return to 5-minute quickstart.

Was this page helpful?

Your feedback helps us prioritize docs improvements weekly.