npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

memhaul

v0.1.1

Published

Local-first CLI that turns a ChatGPT or Claude data export into clean, human-readable memory files you own.

Readme

memhaul

Turn your ChatGPT or Claude data export into clean, human-readable memory files you own.

Local-first. MIT-licensed. Zero telemetry. One dependency. No network calls — your export never leaves your machine.

Here's the thing nobody tells you: ChatGPT's official data export still doesn't include your saved memories — you copy them out of Settings by hand, and Gemini's the same (Saved Info never comes out through Google Takeout). Claude now does export your memory, and memhaul turns that raw memories.json into plain Markdown files you own. Either way, memhaul is the tool that should already exist — it pulls together everything the export does give you, lets you paste in whatever it doesn't, and turns the whole thing into files that are yours to keep, edit, or move.

memhaul demo — parse a ChatGPT export into owned memory files, then audit them


30-second quickstart

Run it instantly with npx memhaul …, or install it with npm i -g memhaul. No account, no signup — it's all local.

$ memhaul parse chatgpt-export.zip
Detected a ChatGPT export (confidence 85%).

2 note(s):
  - ChatGPT does NOT include your Saved Memories in its data export. To bring them in: open
    ChatGPT > Settings > Personalization > Memory > Manage memories, copy the list into a text
    file, and re-run with --memories <file>.
  - No custom instructions were found in this export — newer ChatGPT exports no longer include
    them. Add them from Settings > Personalization > Custom instructions with --instructions <file>.

Extracted 2 memory item(s) from your ChatGPT export (0 saved, 0 instructions, 2 profile).
Open memory/README.md to read them.

Right away it tells you the two things nobody else does: on a current ChatGPT export, neither your saved memories nor your custom instructions come out — the export dropped the custom-instruction metadata memhaul used to recover. What it did pull out is already clean Markdown:

memory/
├── README.md   ← index: what came through, from where
└── profile.md  ← account facts from the export

Paste in what the export leaves out (both are a 15-second copy from Settings) and the folder fills in:

$ memhaul parse chatgpt-export.zip --memories my-memories.txt --instructions my-instructions.txt
Extracted 15 memory item(s) from your ChatGPT export (11 saved, 2 instructions, 2 profile).
memory/
├── README.md              ← index: what came through, from where
├── saved-memories.md      ← the memories you pasted in
├── custom-instructions.md ← your standing instructions
└── profile.md             ← account facts from the export

Add --include-derived and you also get derived-candidates.md. Each memory is a plain bullet you can read, edit, or delete, with a note on exactly where it came from:

# Custom instructions

> Standing instructions and preferences you set for the assistant.

- Custom instruction: Be concise and direct — give me the command or code first.
  source: (pasted custom instructions)

Memory: Claude exports it now, ChatGPT still doesn't

Claude now includes your memory in the data export — a memories.json holding your account memory, per-project memory, and structured memory files (each with its own path and timestamp). memhaul reads it natively, so a plain parse already brings your memory through:

$ memhaul parse claude-export.zip --claude
Extracted 24 memory item(s) from your Claude export (19 saved, 3 instructions, 2 profile).

ChatGPT ships your whole chat history but exports neither your Saved Memories nor your custom instructions anymore — Saved Memories live in Settings → Personalization → Memory, and custom instructions (which current exports no longer embed) in Settings → Personalization → Custom instructions. Copy each into a text file and pass them in:

$ memhaul parse chatgpt-export.zip --memories my-memories.txt --instructions my-instructions.txt
Extracted 15 memory item(s) from your ChatGPT export (11 saved, 2 instructions, 2 profile).

(Don't want to copy by hand? Ask the assistant "Print all of my saved memories verbatim as a list" and save the reply.) The same --memories paste also covers older Claude exports that predate memories.json; for those, Claude's memory lives in Settings → Memory. (Counts above are illustrative — yours will differ.)

See what your AI remembers about you — the audit

$ memhaul audit chatgpt-export.zip --memories my-memories.txt --card
Audited 17 memory item(s): 6 stale, 1 contradictory, 6 sensitive, 4 third-party.
Wrote memory/audit-report.md
Wrote memory/audit-card.md

audit reads your memory locally and flags four things, with a plain-English reason for each:

  • Sensitive — health, financial, credentials, precise location, and other special-category data. Secrets (API keys, passwords) are detected and withheld, never printed.
  • Third-party — info about other people in your memory (a named family member, someone's phone, a minor's age). That's their data, sitting under your account.
  • Contradictions — two memories that disagree ("lives in Austin" vs "lives in Denver").
  • Possibly stale — old or time-relative facts ("currently training for a marathon") that drift.

It writes a full local audit-report.md, and — with --card — a redacted audit-card.md that contains no text from your memory, only counts and generic examples, so you can safely share "here's what my AI remembers about me" without leaking the actual values.

Commands

memhaul parse <export>   Parse an export into memory files
memhaul audit <export>   Report stale / sensitive / contradictory / third-party items
memhaul push  <export>   Preview the portable records (v0.1 does not push — see below)

Useful flags: --source chatgpt|claude|auto (auto-detects by default), --claude, --out <dir>, --format markdown|json, --memories <file>, --include-derived, --dry-run. Run memhaul help for the full list.

Your data stays yours

  • v0.1 makes no network calls at all — not in parse, not in audit, not in push. No telemetry, no analytics, no uploads. You can confirm it: there's no fetch, no HTTP/socket client, no node:http/net/dnsgrep -rn "fetch(" src/ comes up empty, and the only http strings in the source are doc links and the Tempreon website URL in comments/hints.
  • push does not push in v0.1 — it only previews the portable records that a future version could send, and points you at the web flow below (see docs/adr/0003).
  • Reads are non-destructive: your original export is never modified.
  • One runtime dependency (fflate, to unzip). That's the whole supply chain.

See SECURITY.md — and please handle your export like the sensitive file it is.

Bring it into Tempreon (optional)

memhaul is a standalone tool — the files it writes are yours and it needs nothing else. If you want that memory living inside Claude and ChatGPT (read back automatically, not just sitting in a folder), that's what Tempreon does. It's a web flow, not a one-click import and not something this CLI does for you: you sign up (free), connect Tempreon inside your own assistant, and bring your memory in there. memhaul itself sends nothing.

An open format, on purpose

memhaul parses into a small canonical memory model, then emits it. Markdown is the default; JSON is built in. Adding another output format (say, a portable-memory standard like the Open Memory Protocol) is a single new emitter — the parsers never change. The point is portability: your memory shouldn't be trapped in anyone's format, including ours.

Support & contact

  • Bugs & feature requests: open a GitHub issue. That's the primary support channel — please search existing issues first.
  • General questions: [email protected]
  • Security / privacy: see SECURITY.md (report privately, don't open a public issue).

Install / develop

Requires Node 20+ to run (tested on 22 and 24; Node 22+ to develop — the test runner uses node --test glob support).

npx memhaul parse chatgpt-export.zip   # run without installing
npm i -g memhaul                       # or install globally

To develop from source:

git clone https://github.com/Tempreon/memhaul
cd memhaul
npm install
npm run build
node dist/cli.js parse chatgpt-export.zip
# or, without building:
npm start -- parse chatgpt-export.zip
npm test          # run the test suite (synthetic fixtures only)
npm run typecheck # strict TypeScript check

See CONTRIBUTING.md. All test fixtures are synthetic — never commit real personal data.

License

MIT © Briggs Ventures LLC

Built by the team behind Tempreon. memhaul is a standalone MIT tool and works completely on its own.