allkard/1.0 · application/vnd.allkard+zip
.kard
ZIP archive: kard.json, manifest.json, detached Ed25519 signature, embedded assets.
Verifier
The page unpacks the ZIP, checks kard.json against the schema, recomputes the manifest, and verifies the detached Ed25519 signature. Witness keys come from the file’s keys_discovery URL, or from keys you already hold.
Waiting for a card
The front, chapters, presence, and provenance chain render from the archive.
Archive members
Required members: kard.json, manifest.json, signature. Optional assets/*. See Specification for normative rules.
north-light-no-4.kard
├── kard.json allkard/1.0
├── manifest.json path → sha256
├── signature Ed25519, base64url
└── assets/
├── front.webp
└── chapter_01.webp| Class | Custody | Back |
|---|---|---|
| memory | transferable false, epoch 0 | chapters only |
| provenance | transferable true, epoch = chain tip | chapters + provenance_chain |
Mint
import { packKard, verifyKard } from "@allkard/core";
const bytes = await packKard(
card,
{ "assets/front.webp": frontBytes },
witnessPrivateKey,
card.witness.key_id,
);
const result = await verifyKard(bytes, {
checkOnlineEpoch: true,
});
if (result.valid && result.epoch_status === "VERIFIED_CURRENT_HOLDER") {
frame.render(result.kard, result.assets);
}Verify offline
const result = await verifyKard(bytes, { cachedKeys });
if (result.valid) {
frame.show(result.kard, {
manifest: result.manifest_digest,
witness: result.kard.witness.authority,
});
}
// Closed Phase 1 apps may restrict witnesses:
// verifyKard(bytes, { trustedAuthorities: ["https://witness.example", "*.witness.example"] })Asset paths match ^assets/[a-zA-Z0-9_./-]+$ and reject dot segments. A later issuance keeps prior chapters and provenance events, then increments transfer_epoch. When a status endpoint is present, current_epoch marks the file as the current holder or as a historical archive. The verifier UI renders chapters and provenance only — never likes, followers, or view counts.
Card back / anatomy uses a read-only provenance timeline: memory → chapters only; provenance → chapters plus append-only provenance_chain with explicit epoch transitions.