The format · v0.1

PSF PSF:the Portable Session Format*

PDF made documents portable: the same file opens anywhere, decades later. PSF does that for AI work sessions — one open JSON shape for the session record, so the second codebase can move between tools, vendors, and years. Custody never means lock-in.* Yes — we intentionally follow in the footsteps of the Portable Document Format: PSF defines how the agentic work sessions of humans become a truly portable format for the industry.

Design goals

Four properties the format guarantees

The format exists so that every organization can say: whichever system holds our record, we can take it somewhere else, complete and verifiable.

Tool-agnostic

One session per document, whatever agent produced it. Assistants change yearly; switching tools shouldn't cost you the archive.

Verbatim, with shape

Turns and tool calls as they happened. Where content must be withheld, a redaction marker keeps the conversation's shape.

Scope-aware

The workspace block carries the repository — the boundary that makes a record a work record in the first place.

Provenance built in

Source system, export time, and a content hash, so a re-export can be compared and a claim can be checked.

The shape

One session, one document

{ "psf": "0.1", "session": { "id", "startedAt", "workspace": { "repository", "branch" }, "agent": { "name", "model" }, "author": { "id" } }, "turns": [ { "role", "at", "content" | "redacted", "toolCalls": [ … ] } ], "artifacts": [ { "kind": "commit" | "pull-request" | …, "ref" } ], "provenance": { "source", "exportedAt", "contentHash" } }
  • sessionIdentity and context: id, times, workspace (repository, branch, path), agent, and a pseudonymous author reference.
  • turns[]The conversation, verbatim: role, timestamp, content — or a redaction marker (secret / pii / policy / author-request) — plus tool calls with inputs and outputs.
  • artifacts[]Links to what the session produced: commits, pull requests, issues, documents.
  • provenanceWho emitted this document, when, and a hash of the canonicalized turns.

The normative definition is the JSON Schema; the example shows a full session, including a redacted turn, rendered the way a reader would actually want it. v0.1 is published for comment — the shape is deliberately small, and additions are expected to come from implementations. Comments to research@let.ai.