Self-hosted service
claimed-framework/claimed avatar
claimed-framework/claimed

CLAIMED and C3: turning notebooks into container images and pipeline components

The goal of CLAIMED is to enable low-code/no-code rapid prototyping style programming to seamlessly CI/CD into production.

2,306 stars3,907 forksJupyter NotebookApache-2.0

At a glance

What is it?
C3, the CLAIMED Component Compiler, takes a Python or R script or a Jupyter notebook and produces a container image, a KubeFlow Pipeline component and a Kubernetes job config. The README is explicit about what it does and thin about how, which matters if you plan to put it in a CI/CD pipeline.
Who is it for?
C3 is worth a look if you already run Kubernetes or OpenShift and want notebook and script assets to leave your repository as container images and KubeFlow components without hand-written Dockerfiles. It is the wrong tool if you are not on Kubernetes, if you need a documented CLI reference before you commit, or if your notebooks depend on interactive state that a batch container cannot reproduce.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 70 days ago.
What is it written in?
Mainly Jupyter Notebook, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap C3 is aimed at: notebooks that never leave the laptop

Data science code usually starts as a notebook and stays one. Moving it to a cluster means someone writes a Dockerfile, pins dependencies, decides on an entrypoint, and then repeats that work for every asset. The CLAIMED README frames the goal as letting low-code and no-code rapid prototyping style programming reach production through CI/CD, and C3 is the piece that performs the conversion. Its stated inputs are Jupyter notebooks, Python scripts and R scripts. Its stated outputs are container images pushed to a registry, KubeFlow Pipeline components, and Kubernetes job configs. The audience is therefore narrow and identifiable: teams that already have a container registry and a Kubernetes or OpenShift cluster, and that want the notebook-to-image step automated rather than hand-maintained. If your deployment target is a managed notebook service or a single VM, the output formats C3 produces are not what you need.

What c3_create_operator actually does with your file

The README describes a single command as the entry point. You pass it a Python script or notebook plus a repository argument naming the registry and namespace, and it builds and pushes a container image, installs the required dependencies into that image, and emits a KubeFlow Pipeline component. It also generates Kubernetes job configs for execution on Kubernetes or OpenShift. The workflow execution engine is described as pluggable, so KubeFlow is the default target rather than the only one. The README does not document the dependency resolution mechanism, so how C3 determines which packages to install is not something the supplied material answers. Treat that as the main unknown: dependency inference is where this class of tool usually breaks, and the documentation does not describe it. The component library repository is described as now maintained primarily as an example repository, with C3 as the place where active development happens. Anyone evaluating the framework should read that as a pointer: the library is a sample set, the compiler is the product.

Grid compute and the MLX backend

The README calls grid compute parallelization the most utilized and powerful feature of C3, enabling distributed execution of AI workloads across heterogeneous compute environments. The Machine Learning eXchange is now fully integrated as the backend for that grid system, and is described as responsible for tracking data, models, jobs and other related resources. That combination is the part of the framework with the most architectural weight: C3 does not only build images, it also has a tracking layer for the assets those jobs produce and consume. The README states that this integration lets C3 manage asset lifecycle, provenance and discovery within a unified infrastructure. It does not describe the MLX API, the deployment model for MLX itself, or what happens when MLX is unavailable. If you are evaluating C3 for provenance tracking rather than for image building, that absence is the first thing to resolve. The README also links a video for seeing the library in practice, which is the closest thing to a walkthrough in the supplied material.

Getting it running: one pip install and one command

Installation is a single pip command, pip install claimed. The documented invocation is c3_create_operator "<your-operator-script>.py" --repository "<registry>/<namespace>", where the repository argument carries the registry host and namespace that the image is pushed to. Beyond that, the README points to a separate GettingStarted.md for the requirements your code must satisfy, and states plainly that your code needs to follow certain requirements. That file is not reproduced in the material available here, so the exact constraints on an operator script, the expected entrypoint convention, and the notebook handling rules cannot be confirmed. Help is available through c3_create_operator --help, which is the only way to enumerate the remaining flags without reading source. Practical sequence: install a pinned version, run the help command, then read GettingStarted.md before pointing the tool at a real repository, because a failed push to a shared registry namespace is a visible failure.

A framework that ships as a notebook repository

The repository's primary language is Jupyter Notebook, which is consistent with the problem domain but unusual for a compiler. The README is also explicit that the component library has been demoted to an example repository while C3 carries active development. Two consequences follow. First, examples and compiler can drift apart, so a component library example that works today may not reflect what c3_create_operator currently emits. Second, the version history is compressed: the release list shows v0.2.6 and v0.2.7 on the same day, then a gap to v0.5.0 roughly two and a half months later. That is a large minor-version jump across a short window, and the material does not include release notes explaining what changed. Anyone pinning a version should check what moved between v0.2.7 and v0.5.0 before upgrading, since the CLI surface and the generated KubeFlow component format are the two things a pipeline depends on.

Where C3 is the wrong tool

The clearest limitation is the target environment. C3 emits container images, KubeFlow components and Kubernetes job configs. If you do not run Kubernetes or OpenShift, none of those outputs are directly usable, and the automation saves you nothing. A second constraint is the code requirements. The README states that operator scripts must follow certain rules and defers them to GettingStarted.md; until you have read that document, you cannot know whether your existing notebooks qualify or need rewriting. Third, notebooks carry interactive state, cell ordering and local file assumptions that a batch container does not reproduce, and the supplied material does not describe how C3 handles those cases. Fourth, the grid compute feature depends on MLX as its backend, so distributed execution inherits MLX as an operational dependency. Finally, the documentation available here describes capabilities at a summary level. There is no CLI reference, no configuration schema, and no failure-mode documentation in the material, which makes this a tool to prototype with before you make it a required step in a release pipeline.

Alternatives: Elyra, Kubeflow Pipelines, and hand-written Dockerfiles

The closest conceptual alternative is Elyra, a JupyterLab extension that turns notebook cells into pipeline nodes and produces Kubeflow Pipelines or Apache Airflow artifacts. The difference is where the work happens. Elyra keeps you inside JupyterLab and treats the notebook as the authoring surface, with pipelines assembled visually from notebooks. C3 is a command-line compiler that takes a file, builds and pushes an image, and emits a component, so it can be invoked from a CI/CD job with no JupyterLab session involved. The README states that C3 can be triggered from CI/CD pipelines, which is the distinction that matters: C3 is designed to run headless. Writing Dockerfiles yourself gives you full control over layers, base image and dependency pinning, and costs you the automation that C3 provides. Kubeflow Pipelines on its own gives you the component and pipeline model but expects you to supply the container image. C3 sits in the gap between those two, and the trade is control for automation.

Maintenance, licensing and what to verify

The project is released under Apache License v2.0, a permissive licence that allows commercial use and modification and includes an explicit patent grant. It also carries a patent termination clause, so if you initiate patent litigation over the software, the licence terminates. That is a summary of the licence text, not legal advice; get counsel to review it if you are embedding C3 in a product. On maintenance, the material shows a recent push and a v0.5.0 release, and the project is not archived. It is funded through the EU Horizon Europe program under Grant Agreement 101131841, with additional support from SERI and UKRI. Grant-funded projects have a funding horizon, and the README does not state what happens to maintenance after it. The repository also includes a VULNERABILITIES.md file for reporting security issues, which is a concrete process rather than a general statement. The bundled terratorch-iterate section appears in the same README, covering benchmarking and hyperparameter optimization with MLflow, optuna and ray, and supporting Slurm and LSF workload managers with Kubernetes, OpenShift and PBS listed as coming soon. That is a separate tool bundled into the same repository, and its presence in the README rather than its own document makes the project's scope harder to read at a glance.

Editorial conclusion

C3 is worth a look if you already run Kubernetes or OpenShift and want notebook and script assets to leave your repository as container images and KubeFlow components without hand-written Dockerfiles. It is the wrong tool if you are not on Kubernetes, if you need a documented CLI reference before you commit, or if your notebooks depend on interactive state that a batch container cannot reproduce. Before adopting, read GettingStarted.md, run c3_create_operator --help against a pinned version, and check the release notes for the jump between v0.2.7 and v0.5.0.

Official sources

  1. claimed-framework/claimed on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Community notes

Community notes