Omnist logo

Omnist

A data-interchange format built around one idea: a document is an ordered list of labeled edges, not a map. Its schema algebra proves compatibility and equivalence between schemas — a decidable guarantee, not a heuristic.

Most formats model an object as a map from key to value. That works fine until a format needs to express "many" without a wrapper, or interleave repeated elements with other data — the shape XML uses and JSON, YAML, and TOML can't natively carry. Omnist's Document model handles all of it the same way: a node is a list of (label, value) edges, in order, with no special case for arrays. Two item edges are the array. There is no separate list type to define.

A Schema is a graph of named, closed records constraining those edges. Because both models are small and closed, a set of operations over schemas — inclusion, equivalence, minimization, extraction, inference — are decidable and total, not best-effort.

Read the specification → View the introduction slides → Try the tutorial →

Boringly correct

Every port runs the same two-track conformance harness — structural fixtures and a JSON test-vector suite — against the same specification pin, backed by formal ABNF grammars for OML and OSD verified against each port's own parser. The schema algebra itself is cross-checked three independent ways against the same test cases, so no single method's blind spot can hide a bug.

Implementations

Five official ports, all built against the specification.

LanguageVersionMaturityDocs
Python0.9.4beta, referencepy.omnist.dev
TypeScript0.3.0-alphaalphats.omnist.dev
Rust0.2.2-alphaalphars.omnist.dev
Go0.3.0-alphaalphago.omnist.dev
Java0.2.2-alphaalphaj.omnist.dev