Skip to content
Cassini/format
Try itRead a fileWrite a fileSpecification GitHub↗

Design notes

Why the format is shaped this way.

The measurements and arguments behind the parts of the spec that are not obvious. Not normative: where a note and the spec disagree, the spec wins.

  1. 01 Why the audio digest is over Opus packets The first version hashed decoded PCM. Opus decoders are not bit-exact; the two inside one ffmpeg binary disagree on the same file:… 2026-08-28
  2. 02 Why each transcript has its own chunk set This is the design discussion behind the per-transcript chunk sets in the specification. It was written when the format carried exactly one transcript per file, and the option it recommends is the one that shipped. Version numbers in the or… 2026-05-12
  3. 03 How the operator guarantees the file exists Moved out of the specification: this describes how the Cassini operator produces and hands off portable meeting files, not what a portable meeting file is. Another producer could do this completely differently and still emit conforming file…
  4. 04 Format audit against Cassini main Compared against fetched gocassini origin/main, commit e4856e9fac32c447d6c5e023681433319d7ea3c8. The local Cassini checkout was behind at 7774ed1; it was not used as the comparison target. The matching implementation is Cassini PR 276, merg… 2026-09-07

Specification

  • Reference overview
  • Version 1 specification
  • Transcript body
  • Audio digest
  • JSON Schemas
  • Conformance vectors

Implement

  • Try a file in your browser
  • Read a file
  • Write a file
  • Design notes
  • Karaoke demo
  • The whole spec in one file
  • gocassini — reference implementation
  • This spec on GitHub

Status

An open format from Code Myriad. Version 1 was published on 2 September 2026, with gocassini as its reference implementation. Project status →

Code Myriad

Spec text CC BY 4.0. Schemas, test vectors and standalone readers/producer CC0 1.0. Cassini’s transcript component AGPL-3.0.