Skip to content
In production code practitioner

MLOps for teams who work in Clojure

chachaml tracks experiments, models and pipelines from the REPL, a web UI or an LLM agent: a first-party MLOps substrate for teams doing machine learning in Clojure.

Jiri Knesl · Internal reviewer: Flexiana · 10 July 2026
Read Limitations Reproduce AI & machine learningClojure & data-oriented systems

Most MLOps tooling assumes Python. If your machine-learning work lives in Clojure — because the surrounding decision system does, you either bolt on MLflow through a foreign-function bridge or you go without experiment tracking, a model registry and reproducibility. Both are bad.

chachaml is our answer: a REPL-first MLOps library that feels like Clojure — plain maps, dynamic vars, no ceremony. It tracks experiment runs, stores artefacts, manages a model registry with stage promotion, chains tracked pipelines, fires threshold alerts, and ships a web UI with run dashboards and metric charts. It also exposes its store over an MCP server, so an LLM agent can query experiments, and a “chat with your data” interface backed by a model of your choice.

Why it exists

We build decision systems, and many of them have a learned component. A model that cannot be tracked, compared and reproduced is not a system you can operate, it is a demo. chachaml is the substrate that turns the former into the latter without dragging a Clojure team into a Python-shaped workflow.

Status

chachaml is open source under the MIT licence and has shipped v0.7.0, published to cljdoc, with a Docker-compose deployment and a downstream consumer driving its feedback. It is the operations layer beneath our own ML work, and it is available for anyone doing machine learning on the JVM.

Scope

It is a tracking and operations layer, not a modelling framework, it will not train your model, and its Python interop leans on libpython-clj2. If your stack is Python-only, MLflow is the more natural home. If your ML lives in Clojure, this is the tool we wished existed, so we built it.

Limitations & where this does not apply

chachaml is a tracking and operations layer, not a modelling framework, it does not train models for you, and its sklearn interop depends on libpython-clj2. It is Clojure-native by design; teams standardised on Python-only stacks will find MLflow a more natural fit.

Commercial relevance

Where a client's ML work lives in Clojure or a data-oriented JVM stack, chachaml gives experiment tracking, a model registry and reproducibility without leaving the language. That is the difference between an ML prototype and an operable system.

Cite this

Jiri Knesl (2026). MLOps for teams who work in Clojure. Flexiana Research. https://flexiana.com/research/chachaml-mlops-for-clojure

Start with the decision

Have a decision this research touches?

If a result here maps onto a choice your business makes repeatedly, the next step is a short, senior conversation — not a large commitment.