From upload to build.

Designers keep artwork in one library. Each project decides when to take a new version, and its builds replay exactly what it took.

  1. Upload a new version.

    Upload from the browser, the CLI or an agent. Files go straight into storage, a worker checks each one, and it becomes the current version. New files are private.

    Activity
    Version ready  site/hero       v4
    Version ready  brand/wordmark  v2
    Asset created  social/promo    v1
  2. A Vard for each project.

    A Vard lists what one repository needs: files mapped to paths, whole folders, pinned versions and resized variants.

    What a Vard can hold
    marketing-site/
    marketing-site/
    ├─ vardum.json
    ├─ .vardum.lock
    ├─ public/
    │  └─ og.png         Pinned
    └─ src/assets/
       ├─ logo.svg       Latest
       ├─ hero.webp      WEBP
       └─ brand/         Folder rule
  3. Pull files and a lockfile.

    vardum pull writes the files and records each version and checksum in .vardum.lock. Review the diff, then commit.

    git diff .vardum.lock
           "path": "src/assets/logo.svg",
    -      "versionId": "4c1a…",
    +      "versionId": "9e2d…",
    -      "fingerprint": "4c1a…:",
    +      "fingerprint": "9e2d…:",
    -      "downloadUrl": "…/w/acme/__v/4c1a…/brand/logo",
    +      "downloadUrl": "…/w/acme/__v/9e2d…/brand/logo",
    -      "checksum": "a07e…"
    +      "checksum": "3b7f…"
  4. CI replays the lockfile.

    vardum pull --frozen never reads the live Vard. It downloads exactly what the lockfile names and checks the SHA-256 of every file.

    Set up CI
    ci: rebuild v2.3.0
    # a fresh clone of the v2.3.0 tag
    $ npx --no-install vardum pull --frozen
    pull src/assets/logo.svg
    1 change
    # the logo v2.3.0 shipped with, byte for byte
  5. Or link to it.

    Websites can skip the repository and use the stable URL. It redirects to the current version, and variants are signed and cached.

    How delivery works
    index.html
    <img
      src="https://assets.acme.com/w/acme/site/hero?w=800&fit=inside&format=webp&q=80&sig=Jx3…"
      alt="Product screenshot"
    />

Four words to know.

Asset
A file with its full version history, addressed by a key like brand/logo.
Version
One upload. It never changes; the asset points at one version as current.
Vard
The outputs one repository needs, kept in the app.
Lockfile
The exact versions, paths and checksums a project last pulled.

What it does not do.

Sync in the background
Nothing changes in a project until someone runs a pull.
Edit your code
Your code uses the files it writes like any other file.
Update installed apps
A pull changes your repository, not an app already on a phone.
Transcode video
Video is stored and served as uploaded, without variants.

Start with one logo.

Start your own instance, upload it, map it into a repository, and pull.

npm i -D -E @vardum/cli