All notable changes to Tank are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-06-06
Changed
- All OCI fetching now goes through Stevedore. Tank's
bespoke registry client is replaced by a thin shim over
Stevedore.Registry(bearer-token handshake, manifest fetch, digest-verified blobs). Image pulls are digest-for-digest equivalent — the runtime side (rootfs assembly, caching, offline mode) is unchanged. Depends onstevedore ~> 0.2. - Raised the minimum toolchain to Elixir 1.18 / OTP 28 (was
~> 1.15): Tank already used the built-inJSONmodule (1.18+) and depends onlinx/stevedore, both~> 1.18.
Added
- The registry bearer token is now reused across a pull via Stevedore's token cache
(
Stevedore.Auth.Cache): the manifest and every blob share one token instead of re-running the401 → tokenhandshake per fetch.
0.1.0 - 2026-06-04
First public release — pull OCI/Docker images and run them as containers:
- Image — pull an image and assemble a runnable root filesystem, with an on-disk
content-addressed cache (
blobs/,rootfs/,refs/) and a no-networkoffline:mode. - Runtime — materialize and run the workload (rootfs pivot,
/proc·/dev·/sys, cgroup v2, namespaces) via linx. - Store — a tree-structured, Raft-replicated desired-state store.