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.
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
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 holdmarketing-site/ marketing-site/ ├─ vardum.json ├─ .vardum.lock ├─ public/ │ └─ og.png Pinned └─ src/assets/ ├─ logo.svg Latest ├─ hero.webp WEBP └─ brand/ Folder rule
Pull files and a lockfile.
vardum pullwrites 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…"
CI replays the lockfile.
Set up CIvardum pull --frozennever reads the live Vard. It downloads exactly what the lockfile names and checks the SHA-256 of every file.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
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 worksindex.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