contract · Markdowncanonical

37 Distribution

docs/design/37-distribution.md
Raw
1.5 KB54 linesSnapshot ed4ab258

Status: proposal (does not describe shipped behavior; paths below are targets rather than citations and are skipped by check_doc_paths.py)

Distribution Architecture

Goal

vak is distributed as a single static binary built from Cargo. This document describes the target distribution model: signed release artifacts with SBOM metadata, container images, and a package-manager bridge.

Target Shapes

ArtifactBuild sourceNotes
vak binarycrates/vakSingle static binary, musl-linked for Linux
vak-server binarycrates/vak-serverSame core, includes the admin console
vak-desktop AppImagecrates/vak-desktopTauri bundle, embedded renderer
ContainerDockerfileAlpine + dynamic binary; no Node runtime

Release Feed

vak self update queries a JSON feed at a pinned URL. The feed contains:

{
  "version": "3.0.24",
  "assets": {
    "linux-x86_64": "sha256:...",
    "macos-aarch64": "sha256:..."
  },
  "signature": "ed25519:..."
}

The feed never offers a version below the baseline (rule 29: 2.0.0 is the supported baseline).

Package Managers

ManagerStatus
Homebrewvak formula in homebrew-tap
Cargocargo install vak
Nixvak in nixpkgs
DEB/RPMBuilt via CI release pipeline

SBOM & Signing

TODO: Integrate cargo-sbom and cosign-style signing. This is a parked item (rule 29: release supply-chain hardening is parked).