Docs
From a build directory to a cached, integrity-checked URL in three steps.
Install the CLI
The tdl binary is a single static executable for Linux, macOS and Windows.
$ npm install -g @tidal/tdl $ tdl --version tdl 5.2.0
Publish a release
Point tdl publish at your build output and give it a name and a semver. Files land on an immutable path and cannot be overwritten.
$ tdl publish ./dist --pkg lumen --version 3.4.1 # files become available at # https://cdntidal.com/v/lumen/3.4.1/<file>
Re-publishing an existing version with different content fails with
409 version_locked. Bump the version instead.Link with integrity
Digests are printed on publish and available at any time by appending ?meta to a file URL.
<link rel="stylesheet" href="https://cdntidal.com/v/lumen/3.4.1/lumen.min.css" integrity="sha384-oQ3vF9mZk2LxT8bYcR1wNpJd7sHuA4eGiK0tVyXq6BzMfUhC5nWlOaPrDgSjE+1/" crossorigin="anonymous">
$ curl -s "https://cdntidal.com/v/lumen/3.4.1/lumen.min.js?meta"
{"size":58214,"br":17402,"sha384":"sha384-oQ3vF9mZk2LxT8bYc…"}
Cache behaviour
| Path | Cache-Control | Edge TTL |
|---|---|---|
| /v/<pkg>/<semver>/… | public, max-age=31536000, immutable | until evicted |
| /a/<pkg>/<channel> | public, max-age=60 | 60 s |
| unknown path | no-store | — |
Every response also sets Access-Control-Allow-Origin: *, Cross-Origin-Resource-Policy: cross-origin and an ETag equal to the file digest.
Response headers
$ curl -sI https://cdntidal.com/v/lumen/3.4.1/lumen.min.js
HTTP/2 200
content-type: text/javascript; charset=utf-8
content-encoding: br
cache-control: public, max-age=31536000, immutable
access-control-allow-origin: *
x-td-pop: fra1
x-td-cache: HIT
Limits
- Single file up to 20 MB, release up to 500 files.
- Allowed types:
.js.mjs.css.woff2.wasm.json.svg.map. - No request-rate limit on reads; abusive hot-linking of very large files may be throttled.