Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

DataFog

DataFog Core

Find and transform sensitive data in your application.

PyPI version npm version crates.io version Rust CI status MIT license

Quickstart · Detection · Transformations · Local models · Documentation

DataFog Core is a Rust library with Python, Node.js, and browser WebAssembly bindings. Scan text or JSON for personal data and credentials, then redact, mask, remove, pseudonymize, or tokenize matched values. Findings use a consistent format across the bindings.

Rule-based scanning runs locally without model weights or downloads. Optional local model sessions add DataFog and GLiNER2 support in Rust, Python, and Node.js.

Stable: 0.4.4 · Model beta: 0.4.5-beta.4

Quickstart

Choose the package for your application:

SDK Install stable Requirements
Python python -m pip install datafog-core Python 3.10+
Node.js npm install @datafog/node Node.js 24.x
Rust cargo add datafog-core Rust 1.88+
Browser / WASM npm install @datafog/wasm Browser with WebAssembly support

Python

from datafog_core import scan, scan_and_transform

findings = scan("Email jane@example.com")
print(findings[0].entity_type)   # EMAIL
print(findings[0].matched_text)  # jane@example.com

result = scan_and_transform(
    "Email jane@example.com",
    {"transform": {"default": {"strategy": "redact"}}},
)
print(result.text)  # Email [EMAIL]
Node.js example
import { scan, scanAndTransform } from "@datafog/node";

const findings = scan("Email jane@example.com");
console.log(findings[0].entityType); // EMAIL
console.log(findings[0].matchedText); // jane@example.com

const result = scanAndTransform("Email jane@example.com", {
  transform: { default: { strategy: "redact" } },
});
console.log(result.text); // Email [EMAIL]
Rust example
use datafog_core::{
    scan, scan_and_transform, PrivacyError, ScanAndTransformConfig,
    TransformationConfig, TransformationStrategy,
};

fn main() -> Result<(), PrivacyError> {
    let findings = scan("Email jane@example.com");
    println!("{}", findings[0].entity_type); // EMAIL
    println!("{}", findings[0].matched_text); // jane@example.com

    let result = scan_and_transform(
        "Email jane@example.com",
        &ScanAndTransformConfig::new(TransformationConfig::new(
            TransformationStrategy::Redact,
        )),
    )?;
    println!("{}", result.text); // Email [EMAIL]
    Ok(())
}
Browser / WASM example
import { init, scan, scanAndTransform } from "@datafog/wasm";

await init();
console.log(scan("Email jane@example.com"));

const result = scanAndTransform("Email jane@example.com", {
  transform: { default: { strategy: "redact" } },
});
console.log(result.text); // Email [EMAIL]

Python and Node.js packages include prebuilt native binaries for Linux x64 and ARM64 (GNU), macOS Intel and Apple Silicon, and Windows x64 (MSVC).

Detection coverage

Coverage Entity types Activation
Personal and financial data EMAIL, PHONE, SSN, CREDIT_CARD, IP_ADDRESS, DATE, ZIP_CODE On by default
Credentials API_KEY, BEARER_TOKEN, JWT, PRIVATE_KEY, CREDENTIAL_URI On by default
Labeled US identifiers US_ROUTING_NUMBER, NPI On by default; requires a supported text label
German identifiers IBAN, VAT ID, tax ID, social security number, postal code, passport number, residence permit number Explicit German locale
UUIDs UUID Explicit detect_uuid setting
Names in JSON fields PERSON Structured scans, using name-field aliases or explicit JSON Pointer mappings

Use structured scans to find names by JSON field, or local models to detect names and street addresses in prose.

Each finding includes its entity type, matched text, byte and code-point ranges, optional confidence, and detector name/version. Ranges are zero-based and end-exclusive. Node.js and WASM also provide UTF-16 ranges for JavaScript slice. Rule-based findings have no confidence score. Findings and ranges →

For scanning files from AI agents, use DataFog MCP.

Detection settings
  • Select checks: scan(text, {"entities": ["EMAIL", "SSN"]}) in Python runs only the selected text detectors. Omit entities to use all enabled detectors. Selections must be nonempty, unique, exact entity names. Selecting a German type or UUID does not activate it; set locale or detect_uuid too.
  • German locale: {"locale": "de"} enables the seven German detectors. These use format/context rules; IBAN checksums and account existence are not verified. See the German reference for detector rules.
  • ENV and SQL: choose format: "env" or format: "sql" to handle email boundaries in assignments and quoted strings. Source-context rules →
  • Phone numbers: numbers without + use North American checks: ten digits, optionally preceded by 1, with area and exchange codes starting with 2–9. Numbers starting with + use a permissive 7–15 digit check, including shortened examples such as +1-555-1002. Country codes and assigned numbers are not validated; numeric identifiers can still match.
  • Decimal numbers and CSV: contiguous card digits after a digit and . or , are suppressed, so 3.4111111111111111 and 3,4111111111111111 do not produce card findings. Cards containing spaces or hyphens still undergo normal checks. Parse CSV/TSV into cells before scanning so delimiters and adjacent fields do not affect matching.

Use capabilities() in Rust or Python to discover supported entities and their activation rules.

Transformations

Strategy Result Application provider Browser / WASM
redact Replace with a label such as [EMAIL] None Supported
mask Replace characters, optionally revealing the first or last characters None Supported
remove Delete the matched span None Supported
pseudonymize Create a stable keyed HMAC-SHA-256 pseudonym Key provider Unsupported
tokenize Issue an opaque token that can be restored under the same scope Token provider Unsupported

Use transform with existing findings, or scan_and_transform / scanAndTransform to scan and transform together. Transformation records include source/output ranges and replacement metadata, without the original matched text.

Keep scan settings under scan and transformation policy under transform. A default strategy is required; entity selection, per-type overrides, and allowlists are optional. Configuration guide → · Strategy details →

Local models (beta)

0.4.5-beta.4 adds local sessions for the DataFog PII model and GLiNER2 in Rust, Python, and Node.js on all five native platforms.

Install the beta for your runtime:

python -m pip install 'datafog-core==0.4.5b4'
npm install @datafog/node@beta
cargo add datafog-core@0.4.5-beta.4 --features models

For GLiNER2, install its optional dependencies in the Python environment used by the runner:

python -m pip install 'datafog-core[gliner2]==0.4.5b4'

GLiNER2 supports the PII checkpoint and compatible general-purpose span models with caller-defined labels. The GLiNER2 runner ships in the Python package and also serves Node.js and Rust callers. Download and verify model files separately, then use ModelSession.open, text scan, and close. Reuse sessions across calls. Both backends return consistent results and errors, with cancellation and cleanup support.

DataFog setup and session API → · GLiNER2 setup →

Documentation and development

For existing datafog Python applications, follow the migration guide for changes to imports, results, and transformations.

For Rust development, run:

cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-features

See the development guide for the repository layout and Python, Node.js, and WASM package checks.

License

MIT. Built by DataFog.

Metadata

Release files for datafog-core 0.4.5b4

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

Source distribution (sdist)

Source distribution for datafog-core 0.4.5b4
File Size Uploaded Provenance
datafog_core-0.4.5b4.tar.gz 145.2 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for datafog-core 0.4.5b4
File
datafog_core-0.4.5b4-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
datafog_core-0.4.5b4-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
datafog_core-0.4.5b4-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 9.6 MB

Release files / datafog_core-0.4.5b4.tar.gz

Download URL datafog_core-0.4.5b4.tar.gz
Size 145.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5c5f7009bd135f267b33d8f199091e533057202fa8f2e1f2df6be3778a6ce0aa
BLAKE2b-256 checksum
How to use checksums
73b8a9ca8018260f2425878522d14a75a3ad90ed2f53287b37da61f416aa181a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Release files / datafog_core-0.4.5b4-cp310-abi3-win_amd64.whl

Download URL datafog_core-0.4.5b4-cp310-abi3-win_amd64.whl
Size 1.7 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
6896d4c11d5c34e81838bc75a9480d41089ebf7d39841e8f530339b4d101fd4e
BLAKE2b-256 checksum
How to use checksums
43cfc9af524dd5dd5a75902821dbc7fdd250bd68c42cd67bf3663044df51dfd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Release files / datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
ad6a537e4e44fe0ee4a5d0198e6d49b2c5b0b27a6c09ac6b7275601d94c763bb
BLAKE2b-256 checksum
How to use checksums
13c4d699c964164cd2cbcf001df602bc5673517c6c4eb82f3275467db93edc0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Release files / datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL datafog_core-0.4.5b4-cp310-abi3-manylinux_2_28_aarch64.whl
Size 2.0 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
a6c3d9f80f52e7935f8d6b008755caadb49f8dc48ec92a4f38a51f40d84da030
BLAKE2b-256 checksum
How to use checksums
961d34ed588b5cfec041f53052c74ad635b183278b9557bf96920bb17c5a13fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Release files / datafog_core-0.4.5b4-cp310-abi3-macosx_11_0_arm64.whl

Download URL datafog_core-0.4.5b4-cp310-abi3-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f40a0bbc42d5c3ca452beecc1cfea94924c561f1ec90904c25d35e3ccc0b0af6
BLAKE2b-256 checksum
How to use checksums
9d3bb648575b2d2a89424dd2f4300eb8214e3a3951c79c8189e8ea9bd74762ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Release files / datafog_core-0.4.5b4-cp310-abi3-macosx_10_12_x86_64.whl

Download URL datafog_core-0.4.5b4-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
07a88fc45bdd4e7eeba6f53111d33de5628ea7b9c934264d8722412976f9e0cb
BLAKE2b-256 checksum
How to use checksums
bc81c235d9226525e8a2b76c76bcd6465562611759eed85d29735dc6afff1bdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 21, 2026.

Transparency log

Security for datafog-core 0.4.5b4

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.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for datafog_core-0.4.5b4.tar.gz

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 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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