Skip to contentMemoryRouterDocs
IntegrationsData and imports

MemoryRouter / Documentation

ChatGPT history import

Import an official ChatGPT export with the local MemoryRouter CLI, review the selection and price, then verify recall in a fresh AI conversation.

ChatGPT history import

The MemoryRouter CLI imports supported conversation text from your official ChatGPT data export into a MemoryRouter vault. It reads the archive locally, prepares a deterministic selection, asks for explicit approval, and uploads resumable batches with a final receipt.

This is different from connecting ChatGPT, which does not expose old conversations, and from the guided profile transfer, which saves only the context ChatGPT can currently recall after you review it.

Prerequisites

  • A MemoryRouter account and a writable Memory Key for the destination vault.
  • Node.js 22.3 or newer, or Node.js 20.16 through 20.x, plus npm.
  • Your official ChatGPT export as a .zip, an extracted folder, or its conversations.json file.
  • Permission to copy the selected conversations into that vault. Use a separate test vault for the proof below.

Request the export in ChatGPT under Settings > Data Controls > Export Data, then download it yourself. See OpenAI's export instructions if the menu differs. The CLI does not log into ChatGPT, retrieve your email, or handle MFA.

1. Install and authenticate locally

npm install --global @memoryrouter/cli
memoryrouter --help
memoryrouter auth <your-memory-key>
memoryrouter whoami

Replace the placeholder only in your own terminal. The CLI stores the key in ~/.memoryrouter/config.json. Treat that file and terminal history as sensitive. Never paste your key or raw archive into an AI chat, bug report, or repository.

2. Inspect before selecting

memoryrouter chatgpt-import inspect ./chatgpt-export.zip

inspect makes no network calls and no vault writes. It reports conversation shards, canonical user/assistant messages, off-branch messages, skipped nodes, and date coverage. Optional memory files are detected but are not imported by this conversation importer.

3. Prepare the selection and price quote

memoryrouter chatgpt-import prepare ./chatgpt-export.zip --out ./mr-import

Or select a date window and exclude specific conversation IDs:

memoryrouter chatgpt-import prepare ./chatgpt-export.zip \
  --out ./mr-import-selected \
  --from 2026-09-01 \
  --to 2026-09-07 \
  --exclude-conversation <conversation-id>

Date values are parsed as UTC boundaries. --to 2026-09-07 is inclusive at the start of that date, not the end of the day. To include a whole final day, use the following day's boundary and review the selected date range before approval.

Preparation contacts MemoryRouter for a metadata preflight and current price quote. It does not upload conversation records into the vault. Review the destination fingerprint, selected message counts, date range, skipped/off-branch counts, sensitive-category flags, estimated tokens, and cost. Sensitive flags are not a guarantee that every sensitive message was detected.

The local workspace stores the manifest, batch ledger, and receipt without the Memory Key or message plaintext. Keep the original archive at the same location: run and resume read it again and check its identity. The archive itself remains sensitive.

4. Approve, run, and reconcile

Only after reviewing the exact prepared selection and quote:

memoryrouter chatgpt-import approve ./mr-import
memoryrouter chatgpt-import run ./mr-import
memoryrouter chatgpt-import status ./mr-import
memoryrouter chatgpt-import receipt ./mr-import

Use the workspace you actually prepared, such as ./mr-import-selected for the filtered example. approve is the explicit write authorization. The server binds that approval to the preview and price digest. Do not let an agent approve on your behalf without your approval of that exact selection and cost.

Check the receipt's stored, duplicate, skipped, and failed counts. A command completing is not proof that every message in the archive was supported or imported.

To recover after interruption:

memoryrouter chatgpt-import resume ./mr-import

Committed batches replay without duplicate storage or duplicate billing. Preserve the workspace instead of inventing new IDs or editing its ledger.

To stop future batches:

memoryrouter chatgpt-import cancel ./mr-import

Cancellation does not delete records already stored. Manage those separately in the dashboard.

Cross-session proof with synthetic data

  1. In a test ChatGPT conversation, write: For the fictional Cedar launch, the review phrase is copper-orbit-482. This is test data.
  2. Request a new official export containing that conversation. Inspect and prepare it for a dedicated test vault. Exclude unrelated conversations and review the selection before approving.
  3. Run the import and confirm the receipt has stored records and no unexplained failures.
  4. Connect Claude or ChatGPT to that same MemoryRouter vault. Start a new conversation without pasting the earlier message or the answer token.
  5. Ask: Use MemoryRouter to search my imported conversation history. What was the review phrase for the fictional Cedar launch? Quote the matching memory.

The expected retrieved fact is copper-orbit-482. Count the proof only when a MemoryRouter search returns the source content, not when the model merely guesses. If indexing is still catching up, retry the search after it finishes.

Limitations

  • This is a one-time, user-initiated import, not ongoing ChatGPT account sync.
  • The parser imports supported user/assistant text on each conversation's canonical branch. Alternative branches, tool/system messages, deleted/hidden nodes, and unsupported non-text content are skipped or reported.
  • Images, audio, attachments, and optional saved-memory files are not equivalent to imported conversation text.
  • The exact supported content is determined by inspection and the receipt, not by the archive's total size.
  • Imported data lives in the selected MemoryRouter vault. Connecting another AI does not give it access to the source ChatGPT account.
  • Import storage is billable according to your current account quote. An estimate is not a final receipt.

Troubleshooting

SymptomCheck
chatgpt-import is missingRe-run the npm install command, then memoryrouter --help.
Archive inspection failsUse the original official export or extracted conversation folder. Do not rename another ZIP to look like an export. Preserve the error and report it without archive contents.
Nothing to importCheck date boundaries, excluded IDs, and the canonical/skipped counts from inspect.
Approval refused or quote unavailableReview the reported reason, restore billing/authentication if needed, and prepare a current quote before approving again. Do not edit the digest.
Run reports changed archive or destinationRestore the original source path and authenticated vault. Prepare a separate workspace only for an intentional new selection.
Interrupted or partial importKeep the workspace, run status, then resume, and reconcile the receipt.
Fresh chat cannot find the factConfirm the connector's OAuth-selected vault matches the imported destination and explicitly request a MemoryRouter search.

Next steps

On this page