Launch User PWA Mockup — mobile-first Genesis identity, plugin play, and live verify (no backend).

allkard/1.0 · application/vnd.allkard+zip

.kard

ZIP archive: kard.json, manifest.json, detached Ed25519 signature, embedded assets.

02 — VerifierClient-side · offline capable

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.

Download fixed sample
prism

Waiting for a card

The front, chapters, presence, and provenance chain render from the archive.

03 — AnatomyZIP · manifest · Ed25519

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
ClassCustodyBack
memorytransferable false, epoch 0chapters only
provenancetransferable true, epoch = chain tipchapters + 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.