DataJig
The agent-native data control plane for reproducible model training.
DataJig gives AI agents a safe, auditable path from raw data to model training. It wraps data work in explicit plans, deterministic identities, semantic checks, immutable revisions, and evidence of which records crossed a verified training adapter boundary.
raw source -> pin -> prepare/transform -> review -> seal -> export -> train
`------ content-addressed evidence -------' `-> receipt
DataJig is local-first and ships as a Python wheel containing its Rust core. It supports CSV, flat Parquet, keyed JSONL, and ImageFolder workflows.
Install
python -m pip install datajig
datajig --version
datajig capabilities
datajig tutorial ./datajig-tutorial
Add the exactly pinned DuckDB provider for bounded joins, projections, filters, and aggregations:
python -m pip install 'datajig[duckdb]'
Where it fits
DataJig does not replace Git, DVC, Oxen, lakeFS, DuckDB, Polars, Spark, PyTorch, or Hugging Face. It sits between those systems as an agent-facing control plane:
- pin exact upstream bytes and preserve provenance;
- authorize bounded preparation and SQL transform plans;
- scope agent edits and reject stale review evidence;
- seal content-addressed, immutable dataset revisions;
- export deterministic subsets, splits, and training shards;
- verify records at the training adapter boundary and write an at-least-once receipt for that boundary.
Every task, candidate, review, revision, subset, transform, and training bundle receives a deterministic identity. If data changes after review, a plan drifts, or an agent touches bytes outside its declared task, DataJig fails closed.
Agent-native interface
Commands return bounded JSON with actionable next_actions. Discovery exposes
a deterministic agent_contract_id, machine-readable command descriptors, and
artifact schemas. repository-install can install a version-matched Agent Skill,
pre-commit guard, SHA-pinned GitHub Actions workflow, and content-addressed lock
into another repository.
datajig repository-install --root .
datajig repository-check --root .
Typical workflow
datajig inspect data/papers.parquet --id-field paper_id
datajig prepare-plan data/papers.parquet \
--recipe recipes/papers.prepare.json \
--output data/papers.jsonl \
--plan artifacts/papers.prepare.plan.json
datajig prepare-apply artifacts/papers.prepare.plan.json \
--accept-plan prep_...
datajig init data/papers.jsonl --id-field paper_id
The optional DuckDB provider follows the same plan-and-accept pattern. SQL is authorized by the Rust core before execution, input aliases are staged privately, resources are bounded, and canonical JSONL output is independently verified.
Project links
- Repository: https://github.com/liukejun7/DataJig
- Releases: https://github.com/liukejun7/DataJig/releases
- Changelog: https://github.com/liukejun7/DataJig/blob/main/CHANGELOG.md
- Security policy: https://github.com/liukejun7/DataJig/blob/main/SECURITY.md
- License: Apache-2.0
Metadata
Release files for datajig 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| datajig-0.6.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| datajig-0.6.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| datajig-0.6.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| datajig-0.6.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 36.3 MB
Release files / datajig-0.6.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | datajig-0.6.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 9.8 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
9f9e691108ff3fcad87b1e48411d94193eeeb3ec84a8208996864e54c477a797
|
|
BLAKE2b-256 checksum How to use checksums |
7d508f819706eeb813bdfcf1d876441fcdedfec64020de7d7bfe0e4ce9e301e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / datajig-0.6.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | datajig-0.6.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
8375f498a7d58cc8d5effd30dbdfe50b9297a8e3e4bc501de2639347fc5e25e3
|
|
BLAKE2b-256 checksum How to use checksums |
ffd411f0e55f389e6f314f3bf83022c1ba27ee4949e5869be9dd3520ed16f401
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / datajig-0.6.1-py3-none-macosx_11_0_arm64.whl
| Download URL | datajig-0.6.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.3 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dee555d60f1cc89de8169dd75bf8735e6f703edd94b820710a31eeca1be5b179
|
|
BLAKE2b-256 checksum How to use checksums |
2895f8c77a2a69aad4fa46f60c92fbe53376df8b4f74895672cf52654996214f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / datajig-0.6.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | datajig-0.6.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
5512efe3e90c90d5eb64c613218973415fb51f88d3f6a09f8d4824f2d36a9402
|
|
BLAKE2b-256 checksum How to use checksums |
0c22b2051c173c0ed923f2325c80249167fe98bf9e5c2b7dcd1e9de60a73eac5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency log