Diffgram: a self-hosted datastore for schemas, BLOBs and predictions
The AI Datastore for Schemas, BLOBs, and Predictions. Use with your apps or integrate built-in Human Supervision, Data Workflow, and UI Catalog to get the most value out of your AI Data.
At a glance
- What is it?
- Diffgram is a Python application you install yourself to hold AI data (schemas, binary objects and model predictions) in one place, with human annotation and a browsing UI on top. The judgement: it fits teams that need self-hosted control over sensitive training data and are willing to run and upgrade their own deployment, and it is the wrong tool for anyone who wants a managed labeling service with no operational work.
- Who is it for?
- Adopt Diffgram if you have a fixed deployment target and need annotation plus a datastore inside your own infrastructure, particularly for image, video, 3D, text, audio or geospatial work. Do not adopt it if you cannot own an upgrade cycle, since the release history shows long gaps between versions and the docs point to a separate update procedure.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 86 days ago.
- What is it written in?
- Mainly Python, 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
What Diffgram actually stores, and for whom
The README describes Diffgram as "The AI Datastore for Schemas, BLOBs, and Predictions". That phrasing is the product definition. It is not only an annotation tool. The datastore is the primary object, and human labeling is one of several front ends over it. The README lists four use cases: use with your AI apps, human supervision (data labeling), AI data application workflow, and a UI catalog for visually exploring the datastore. The audience is teams that produce training data and want it held in one place rather than scattered across object storage buckets, CSV exports and annotation spreadsheets. The README also positions the project around compliance, describing one use case as "One place for Compliant PII AI data", and states plainly that Diffgram is installed by you and you have control over your data. That sentence is the whole pitch for self-hosting: the data does not leave infrastructure you operate. Commercial firms have used it since 2018 according to the README, and the project reports 706 tests across E2E and unit categories. The test count is a claim about the maintainers' practice, not a measure of whether the tool suits your workflow.
The media types decide whether it fits your data
Diffgram's annotation surface is broad, and the README is explicit about which parts are shipped and which are not. Shipped, with documentation links: grid and multi-modal, image, video, 3D, text, audio, and geospatial. Conversational and LLM annotation exists but is marked Preview. Document, HTML and DICOM are listed as Roadmap, alongside a custom or other category. That split matters more than any feature list. If your data is scanned documents or DICOM studies, the README does not claim working support, and you should treat those as absent until the roadmap items ship. If your data is images, video or 3D point clouds, the documentation covers it directly. The multi-modal entry is the interesting one for teams whose records combine a photo with a caption or a sensor reading, because it implies a record can carry more than one media type rather than forcing a single-format pipeline. The README does not explain how multi-modal records are stored or how labels attach across modalities, so that is a question to answer in the docs before you design a schema around it.
How the pieces fit together
The repository is Python, the default branch is master, and the topics list includes Kubernetes alongside annotation and labeling. The README points to a page titled Development System and another titled Updating Existing Install, which tells you the project expects you to run it as a long-lived deployment rather than a local script. The README also references ML program integrations under a page on automation and prelabels. That is the mechanism worth understanding: predictions enter the datastore as prelabels, humans review and correct them in the annotation interface, and the corrected labels become the training data. The datastore holds the schema, the binary objects and the predictions, which is why the product name lists all three. The README does not publish an architecture diagram or an API reference in the material available here, so the exact request flow between your application and the datastore is something you will need to read out of the docs site. What is confirmable is the intended loop: your app or model writes predictions, the UI catalog and annotation views read and correct them, and the result stays in your own installation.
Getting it running, and what the install path implies
The README does not inline install commands. It links to a documentation page at diffgram.readme.io/docs/install, and separately to a page on updating an existing installation. It also links a video explainer and the licence file in the repository at LICENSE.md. So the honest answer to how you run it is: the commands live in the docs, not in the README, and this article cannot reproduce them without inventing them. What the README does establish is the shape of the deployment. The topics include Kubernetes, the project ships a development system page, and it has a documented upgrade path, all of which point to a containerized service you host rather than a pip install you run once. The README's own framing supports this: "Diffgram is installed by you and you have control over your data." Control over data is the benefit; operating the stack is the cost, and the README does not hide that cost, it just moves it to the docs. Before you start, read the install page and the development system page together, because the second one tells you what the first one assumes about your environment.
The licence is not a standard open source licence
The repository licence field reads NOASSERTION, which in practice means GitHub could not match the file to a known licence template. The README explains why: on Sept 28 2023 the project introduced Diffgram license version 2 (DLv2), alongside a contributor license (CL) described as available at no financial cost, with the note that MSA customers receive a financial credit for all contributions. The README calls the project "commercial open source" and links the licence text on the docs site. None of this is a standard permissive licence, and the practical consequences for you depend on how you intend to use and modify the software. This article cannot give legal advice, and it should not try. The concrete step is to read the DLv2 text and the contributor licence before you build a product on top of Diffgram, and to check whether your intended use is covered. A project that changes its licence mid-life, as this one did in 2023, is also telling you something about how the terms may evolve. Treat the licence as a design constraint you evaluate alongside the technical ones, not as a formality at the end.
Where it is the wrong tool
The clearest failure mode is operational. If nobody on your team owns a deployment, Diffgram is the wrong choice, because the README's own links assume you will install it, run it and update it. A managed labeling service removes that burden and charges for it. The second case is scope. The README lists Document, HTML and DICOM as roadmap, so a medical imaging or document-processing pipeline is not served by the shipped feature set today. The third case is conversational data: the README marks conversational and LLM annotation as Preview, which is a signal that the interface may change and that you should not build a production labeling queue on it without checking the current state in the docs. There is also a maintenance signal in the release history. The most recent release listed is 1.25.3 from October 2024, with 1.25.2 and 1.25.1 in June 2024, while the repository shows a push in June 2026. Activity on the repository and tagged releases are not the same thing, and the gap between them means you should confirm which version the install docs target before you deploy. If you need frequent tagged releases as a proxy for support responsiveness, this pattern will frustrate you.
What to compare it against
Label Studio is the natural comparison for the annotation half. It is also self-hosted and Python-based, and it is built around a configuration format that lets you define a labeling interface declaratively, so a new project type is largely a config exercise rather than a code change. Diffgram's approach is different: the README frames the product as a datastore first, with the annotation UI as one consumer of that store, and it ships opinionated interfaces per media type (image, video, 3D, audio, geospatial, multi-modal) rather than a generic template language. The trade-off follows from that. If you want to define a bespoke labeling task quickly, a configurable interface is less work. If you want a place where schemas, binary objects and model predictions live together and a catalog UI sits on top, Diffgram's framing is closer to that problem. For teams already inside a cloud provider's ecosystem, the provider's own labeling and dataset services are the other comparison, and the difference there is control: those services keep your data in the provider's account, which is precisely what Diffgram's self-hosted model avoids. Pick based on where the data must live, then on how much interface customization you need.
Editorial conclusion
Adopt Diffgram if you have a fixed deployment target and need annotation plus a datastore inside your own infrastructure, particularly for image, video, 3D, text, audio or geospatial work. Do not adopt it if you cannot own an upgrade cycle, since the release history shows long gaps between versions and the docs point to a separate update procedure. Before committing, read the DLv2 licence text on the Diffgram docs site, confirm which media types you need are shipped rather than roadmap, and check the install docs against your environment.
Community notes