.curt
released · npm ↗︎· MIT· shipped Oct 16, 2026
One file, one conversation, kept whole. The open format for AI chat history.
Open single-file format for AI conversations — frozen spec v1, MIT everything, 27 conformance vectors in CI, curt-format on npm.
install npm install curt-format ↗︎source ↗︎homepage ↗︎
v1, frozen spec27, in CI conformance vectors5 (2 stable, 3 draft) extensionsMIT — spec, code, schema, fixtures license
Your AI history is files, not hostages — the line is Curtis’s, and .curt is where it stops being a slogan. Spec v1 is frozen. [email protected] is on npm, MIT, zero dependencies. Twenty-seven conformance vectors run in CI so “compatible” means something. Curtis Porter reads the hostile exports — ChatGPT branch trees, Claude content blocks, Grok archives, Gemini Takeout — and writes .curt.
The honest score: six registry entries, one author, zero outside consumers. That’s what a launch looks like before it launches. The spec is here, the adopt path is here, and the launch post tells it straight.
Install
Features
How it compares
| .curt | Vendor exports | Ad-hoc JSON / markdown | |
|---|---|---|---|
| Images & tool calls | Verbatim, in-file | Flattened or dropped | Varies by author |
| Unknown fields on re-save | Preserved | N/A — opaque schema | Usually lost |
| Machine-checkable conformance | 27 vectors, CI-runnable | None | None |
| One file per conversation | Yes — diffable UTF-8 | One giant archive | Varies |
| License | MIT — spec, code, schema, fixtures | Vendor terms | Varies |
Privacy
A .curt file is a plain UTF-8 file — there is nothing to telemetry. The reference implementation makes zero network calls: serialize, parse, done.

