← all projects

oap

Open Album Package (OAP) v1.0 Specification
repo

Open Album Package (OAP)

Open Album Package (OAP) is an open, deterministic, hackable album container format.

OAP v1.0 defines:

No DRM. No signatures. No remote media. No compression beyond STORE.


Repository Structure

.
├── spec.md                    # OAP v1.0 specification
├── packaging.md               # Packager build algorithm
└── tools/
    └── oap-packager/          # Reference Python packager (uv-based)

What OAP Is

OAP is designed for:

It separates:


Conformance Levels

Level 0 — Extract + Play

No manifest or checksum support required.


Level 1 — Archive-Aware Audio


Level 2 — Full Experience


Core Design Constraints (v1)

keys(checksums.files) == archive_files - { "checksums.json" }

Minimal Package Example

example.oap
├── playlist.m3u8
├── manifest.json
├── checksums.json
├── audio/
│   ├── 01.flac
│   └── 02.flac
├── images/
│   └── cover.jpg
└── lyrics/
    ├── 01.en.vtt
    └── 02.en.vtt

Optional:

segment01.m3u8
segment02.m3u8

Specification

The full specification is in:

spec.md

This document defines:


Packaging

The packaging algorithm is defined in:

packaging.md

It specifies:


Reference Tool

A reference packager implementation is provided in:

tools/oap-packager/

It:

See the tool’s README for usage instructions.


Philosophy

OAP v1 prioritizes:

Everything in v1 is intentionally constrained to avoid ambiguity and long-term fragmentation.


Future Directions (Not in v1)

Potential v2+ explorations:


Status

OAP v1.0 is stable and internally consistent.

Changes that would break v1 compatibility require a new oap_version.


If you are implementing a player, start with: