Version 1.0 — DRAFT r2 (July 2026) · r2 incorporates a five-lens adversarial review (83 findings: normative-language audit, lossless-mapping audit against the iOS source, cryptography/protocol audit, clean-room implementer walkthrough, and spec/schema/example cross-check).
CanPUFF is an open, documented file format for personal cannabis consumption records — the data an individual creates when they track what they consume, what they have, where they got it, and how it affected them.
It is a format for people, not businesses. Seed-to-sale systems, dispensary point-of-sale, and regulatory traceability all have data standards. The person doing the consuming has none: every consumer tracking app keeps its records in an undocumented internal database, and the data dies with the app. CanPUFF exists so that this data can outlive any application — including the ones its authors write.
Think “RSS for personal cannabis data”: plain files you own, readable in any text editor, portable between apps, with no account, no API key, and no company that can take them away.
| Document | Status | What it defines |
|---|---|---|
canpuff-v1.md |
Draft | The core format: the vault layout, the journal (JSONL events), the catalog (Markdown + frontmatter cards), attachments, identifiers, units, and the extension mechanism. |
canpuff-sealed-v1.md |
Draft | The sealed vault profile: end-to-end encryption (age v1), the key hierarchy (BIP39 mnemonic root), and the synchronization repository layout + protocol for dumb file servers. |
mapping-pufftab-ios.md |
Draft | Lossless mapping from the PuffTab iOS app’s data model (the first implementation) to CanPUFF, field by field. |
schemas/ |
Draft | JSON Schema (2020-12) for every object type. The schemas are normative for the JSON form. |
examples/ |
Draft | A complete example plain vault, plus standalone JSON objects that validate against the schemas. |
ext + apps/), and every object carries type and version.This is a v1 draft under active development. The spec text and schemas are published under CC0-1.0, with an OWFa 1.0 patent non-assertion covering implementations. Two reference implementations are planned to ship with v1.0 final: the PuffTab iOS exporter and the PuffTab web app (import/export).
Feedback, implementations, and proposals are welcome — the extension mechanism is the intended first stop for new needs; fields that prove themselves in ext are candidates for the next minor version.