Skip to main content

DataJig

DataJig is an agent-native data control plane that turns raw datasets into verified, versioned, training-ready inputs.

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.

Version 0.8.4 makes active changeset selectors consistent, publishes the full JSONL quality-policy schema and example, and allows guarded patch application on filesystems that explicitly do not support extended attributes.

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 single files and deterministic recursive datasets in CSV, flat Parquet, or keyed JSONL, plus 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

For a complete local training-data delivery, install the DuckDB extra and use a single reviewed pipeline:

datajig artifact-schema pipeline-config
datajig artifact-schema jsonl-quality-policy
datajig pipeline plan --config pipeline.yaml --plan pipeline-plan.json
datajig pipeline apply pipeline-plan.json --accept-plan pipe_...
datajig pipeline info deliveries/my-training-data/pipeline-receipt.json --verify
datajig lineage pipe_... --state workspace/.datajig --format text

The plan binds source bytes, SQL, target paths, export splits, and external run IDs. Apply uses OS locks, a durable recovery journal, detached revision sealing, HEAD compare-and-swap, and a delivery commit marker. Interrupted work requires explicit --resume; an identical update still delivers a bundle and consumer plans without inventing a new revision.

lineage resolves committed pipeline receipts and related pipeline artifacts. For an atomic manual workflow, inspect its transform receipt and workspace log separately; a bare manual revision is not a pipeline lineage root.

An abbreviated configuration looks like this:

schema_version: 1
pipeline: {name: papers-train, provider: duckdb}
target: {dataset: data/papers.jsonl, state: workspace/.datajig, mode: create}
delivery: {output: deliveries/papers-train}
inputs:
  - {alias: papers, path: raw/papers.parquet, format: parquet}
transform:
  sql: SELECT paper_id AS id, title FROM papers ORDER BY id
  id_field: id
export: {split: [train=9, test=1], max_shard_records: 10000}
consumption_plan:
  - {consumer: huggingface, split: train, run_id: experiment-42}

Atomic commands remain available when a pipeline is not the right abstraction:

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.

Metadata

Release files for datajig 0.8.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for datajig 0.8.4
File
datajig-0.8.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
datajig-0.8.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
datajig-0.8.4-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
datajig-0.8.4-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 36.7 MB

Release files / datajig-0.8.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL datajig-0.8.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 9.9 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
76dd70d5adff533c2b1357cfc988926371aa8b7f1e00d404fdb3afdb8e5b2150
BLAKE2b-256 checksum
How to use checksums
78bbf0e9018931ec81e03e711eb30282e165ef69345446bd29d8287fa91698ce
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 7, 2026.

Transparency log

Release files / datajig-0.8.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL datajig-0.8.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 9.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
a575fdfc72c6cdf50334094d104b60b39c0908f5be9cbc48b6e57946828f7c64
BLAKE2b-256 checksum
How to use checksums
78780c265923d1c8dad3ca33dd47c57b6beaedaec48614440827dd2a85ae5b8c
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 7, 2026.

Transparency log

Release files / datajig-0.8.4-py3-none-macosx_11_0_arm64.whl

Download URL datajig-0.8.4-py3-none-macosx_11_0_arm64.whl
Size 8.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b1f638852c9bbd033cf6aaa2d37a763f9e19835e6de801b89aed4d320a89631b
BLAKE2b-256 checksum
How to use checksums
ceadde37bb6a9b4c6a9eabcfc884a8b596347a10693a3a19c3677b039bf8c51d
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 7, 2026.

Transparency log

Release files / datajig-0.8.4-py3-none-macosx_10_12_x86_64.whl

Download URL datajig-0.8.4-py3-none-macosx_10_12_x86_64.whl
Size 9.4 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
72f2d2e64acf9f354f0ebb9dc4b450d22611ab0a67a994c4a33f68705bf513eb
BLAKE2b-256 checksum
How to use checksums
d762ccab53514bf7734d5e3cc72d2d1f6e6abb997a010d74ce20f71eed2e08ea
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 7, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page