Everything Vardum does today.
A versioned library, a manifest per project, a CLI, signed delivery and an MCP server.
npm i -D -E @vardum/cliEvery upload is a version.
Browsers upload straight into storage. A worker checks each file, records its checksum and dimensions, and makes it the current version.
- Images: AVIF, GIF, JPEG, PNG, SVG, TIFF, WebP
- Video: MP4, WebM, MOV, AVI, MPEG, stored as uploaded
- Folders and search across the workspace
- Restore any earlier version from its history
A manifest for each project.
A Vard maps assets to paths in one repository. Add files one by one or a whole folder, and choose what each output tracks.
- Follow latest, pin a version, or request a variant
- Folder rules include a folder recursively
- Writable outputs that
vardum pushupdates - Public or private manifests
Pull files, not links.
The CLI writes what a Vard describes and records it in .vardum.lock. A frozen pull in CI never looks past the lockfile.
vardum loginauthorizes a machine in the browser- Conflicts with local edits stop the pull
--frozenchecks the SHA-256 of every filepushandpush-folderupload new versions
$ npx vardum push-folder ./icons brand/icons push brand/icons/arrow.svg (1/3) push brand/icons/check.svg (2/3) push brand/icons/close.svg (3/3) waiting for 3 upload(s) to process… 3 changes
Stable URLs, signed variants.
Each asset keeps one URL that redirects to its current version. Variants are rendered from signed parameters, once, and stored next to the original.
- Resize up to 4096 px and convert to AVIF, JPEG, PNG or WebP
- Unsigned or tampered requests are refused
- Custom domains, verified with a TXT record
- 30 days of requests, data served and cache hits
$ HERO=https://assets.acme.com/w/acme/site/hero $ curl -so /dev/null -w '%{http_code}\n' $HERO'?w=800&fit=inside&format=webp&q=80&sig=Jx3…' 302 # same signature, different width $ curl -so /dev/null -w '%{http_code}\n' $HERO'?w=4000&fit=inside&format=webp&q=80&sig=Jx3…' 403
- w, h
- 1–4096 pixels
- fit
- cover contain fill inside outside default inside
- format
- avif jpeg png webp svg defaults to png
- q
- 1–100 default 80, with format
- sig
- HMAC-SHA256 required
Let agents manage assets.
The MCP server gives Claude and other MCP clients eleven tools for assets and Vards, scoped by a workspace API key.
- Upload, publish and delete assets
- Create Vards, folder rules and pins
- REST API described at /api/openapi.json
update_vard { "workspaceId": "0b7c6f0e-…", "vardId": "6f1d2a9b-…", "folderRules": [ { "sourcePrefix": "brand/", "outputPrefix": "src/assets/brand/" } ] }
Roles, keys and an audit trail.
Organizations own members and roles. Each workspace is isolated in PostgreSQL with row-level security.
- Roles apply across every workspace in an organization
- API keys belong to one workspace
- Audit log filterable by action and actor type
| Read | Upload | Publish | Delete | Members | |
|---|---|---|---|---|---|
| Owner | Yes | Yes | Yes | Yes | Yes |
| Editor | Yes | Yes | Yes | Yes | No |
| Viewer | Yes | No | No | No | No |
| Key: read | Yes | No | No | No | No |
| Key: write | Yes | Yes | Yes | Yes | No |
Start with one logo.
Start your own instance, upload it, map it into a repository, and pull.
npm i -D -E @vardum/cli