A structured file format for app & project data
Prism Foundation
A general-purpose structured file format for complex app and project data — documents, diagrams, assets, graphs, metadata, references, and imported or exported formats — exposing the whole file as a typed object model that tools and AI agents can safely inspect and mutate.
What Prism is
Prism is a general-purpose structured file format for complex app and project data. A single Prism file can hold documents, diagrams, assets, graphs, metadata, references, and the imported or exported representations of other formats — and it exposes the whole file as a typed object model that tools and agents can safely inspect and mutate.
That is the whole idea in one sentence. Where most formats are private blobs that only their own program fully understands, a Prism file is a live, path-addressed tree of typed values that any program — or AI agent — can read in full, change precisely, and write back without losing structure. The Prism Foundation is that format plus the libraries, codecs and tools that make it practical to build on.
One model under everything
Everything in a Prism file lives in a Document — the document. A Document is a set of prims (nodes of a tree) indexed by path, each carrying typed properties. There is no database, no pointer soup, no hidden side-tables: the structure is the data.
#prisma 3.0
def group "world" {
def object "ball" {
float3 position = (0, 1, 0)
float radius = 1.5
float3 albedo = (1, 1, 1)
albedo.connect = </world/mat.out>
}
}
Five concepts carry the whole design: the Document (the file), the prim (a node — a path, a type token, typed properties), the path (the identity; hierarchy lives here, so references can't dangle and cycles are impossible), the property (a typed value, optionally varying over time), and the value (the typed datum — a bool, number, string, or array). A 3-D scene and a text document differ only in which type tokens and properties their prims use — never in the machinery underneath. See the model.
Files that point at each other
Inside one file, a property can connect to another prim's output, so the document is also a graph. Across files, a prim can reference another document and pull it in — model a thing once, reference it many times, fix it in one place. Information stops being copied and starts being linked, so references resolve by path instead of breaking.
Read and written by anything
The format knows nothing about JSON or Markdown or SVG. Foreign formats are codecs, and each targets a canonical model shared by every codec of its kind — so Prism sits in the middle of a conversion as the neutral form, with defined round-trips rather than lossy guesses:
prism convert notes.md notes.html # markdown → one document model → html
prism convert data.json data.prisma # json → a navigable Prism document
And a whole project packs into one file: a folder is a Document, so pages, diagrams, stylesheet and images bundle into a single compressed .prism you open as one object.
A real file for tools and agents
Because the file is a typed object model rather than a blob, programs and AI agents can operate on it safely. "Insert a paragraph after the third heading," "set every light's intensity to 80%" — each is a precise, validated change to a named address, not a fragile text or binary edit. The Prism Server is the bridge that exposes those operations to external tools, including MCP clients like Claude Code: it lets them work through stable, typed operations instead of parsing raw bytes. Prism doesn't replace those tools — it gives them a structured file to talk to.
These very docs were authored three ways onto the same model — written by hand, converted from Markdown, and built by an agent through the server.
The shape of the platform
The Foundation ships as three layers you can adopt independently — covered in the libraries (build on Prism: Core, UI, Platform), the software (work with Prism files: CLI, Server, Editor), and the examples (open-source apps: Prism Light, Prism Pixel, Prism Atlas). Read why this matters for the problem it solves, or jump into the Quickstart.