Date: 2026-04-16
Accepted.
chachaml needs to persist three distinct kinds of data:
A single monolithic Store protocol mixing all three would force every
backend to implement everything, and would couple unrelated concerns
(e.g. an in-memory test store would have to fake artifact byte storage).
We split storage into three protocols in chachaml.store.protocol:
RunStore — run/param/metric/tag CRUD.ArtifactStore — artifact bytes and metadata.ModelRegistry — models, versions, stages.Plus a Lifecycle protocol with close! for resource cleanup.
A concrete backend (e.g. chachaml.store.sqlite) typically implements
all four on a single record, but each is independently usable. This
keeps tests, alternative backends, and future composition (e.g. SQLite
metadata + S3 artifact bytes) clean.
All protocol fns are prefixed with - and treated as internal:
end-user code goes through chachaml.core and chachaml.registry.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |