3 pointsby chrisoladapo7 hours ago1 comment
  • chrisoladapo7 hours ago
    Hey HN — creator here. I built AMP because I kept running into the same problem: every AI platform stores conversations in a completely different format, and there's no way to move between them.

    ChatGPT's export is a DAG (directed acyclic graph) where edits create branches. Claude uses typed content blocks with tool_use/tool_result structures. Gemini is in Google Takeout. Cursor is local SQLite. Perplexity has citation arrays. They're all just conversations, but none are interoperable.

    AMP normalizes all 8 into one schema. One command:

      npx @purmemo.ai/migrate import conversations.json
    
    It auto-detects the platform and outputs clean, chronological JSON.

    v0.2 (just shipped) adds Level 3 — full fidelity:

    - content_parts[] — a discriminated union of 7 types (text, image, code, tool_use, tool_result, citation, thinking). A Claude response with tool calls preserves the actual structure. ChatGPT multimodal messages keep images. Extended thinking is captured, not discarded.

    - alternates[] — ChatGPT's edit history. When you rephrase and regenerate, AMP captures all branches, not just the canonical path.

    - observed_at — bi-temporal: when the converter ran vs when the platform created the conversation. Makes dedup and incremental sync reliable.

    The spec is layered: Level 1 = 4 required fields (trivially implementable). Level 2 = timestamps + model + provenance. Level 3 = rich content + branches. Backward compatible — the plain text content field stays required at every level.

    Everything is Apache 2.0. Schema is Zod + TypeScript. Converters are pure functions — no network calls, no accounts, runs entirely on your machine.

    This is the open-source layer of pūrmemo (https://purmemo.ai), a cross-platform AI memory layer. But AMP is designed to stand alone — if someone builds a competing product on the same format, that's the point. Think IMAP for AI conversations.

    Happy to answer questions about the schema design, the per-platform quirks, or anything else.