Safety-first synthetic data generation agent
Project description
Agent Paranoid Android
Safety-first, deterministic synthetic test data generation from CSV structure,
safe profiles, reviewed DatasetSpec files, and allowlisted Trino metadata.
Source rows are profiled, never shuffled or copied into generated output.
Read the documentation for tutorials, concepts, configuration, MCP setup, and troubleshooting.
Current package version: 0.7.0. The package is
agent-paranoid-android; the CLI is test-data-agent.
Install
Python 3.11 or newer is required.
python3 -m pip install agent-paranoid-android
test-data-agent doctor
Install only features you use:
python3 -m pip install "agent-paranoid-android[parquet]"
python3 -m pip install "agent-paranoid-android[mcp,trino]"
python3 -m pip install "agent-paranoid-android[all]"
Quickstart
Clone the repository to use its safe fictional fixture:
git clone https://github.com/wa-pis/agent-paranoid-android.git
cd agent-paranoid-android
test-data-agent generate-from-csv tests/fixtures/customers.csv \
--count 25 \
--seed 12345 \
--format csv \
--output out/customers.csv
A successful run reports:
Generated synthetic dataset: out | rows: customers=25 | seed: 12345 | validation: passed | source rows copied: no
The output folder contains the generated data plus:
csv_profile.json;dataset_spec.json;validation_report.json;generation_manifest.json.
Review the manifest and effective spec before accepting a new dataset.
Choose A Guide
| Goal | Documentation |
|---|---|
| Generate from one CSV | First CSV Dataset |
| Generate related tables | Related Tables |
| Review specs and output | Review The Output |
| Add deterministic business rules | Business Rules |
| Connect an AI client | MCP Setup |
| Understand the trust boundaries | Safety Model |
| Configure limits and Trino | Configuration |
| Recover from an error | Troubleshooting |
| Upgrade from 0.5.x | Migrating To 0.6 |
Safety
The project derives bounded metadata such as field types, null ratios, ranges, masked patterns, and safe low-cardinality distributions. It rejects or bounds:
- raw detected PII, credentials, tokens, and private keys in profiles;
- source-row copying and source/output path reuse;
- path traversal and symlink escapes through generator MCP tools;
- unrestricted SQL and write operations through Trino tools;
- oversized input, output, rule, query, and generation work.
Human review is still required for ambiguous identifiers, rare free text, inferred relationships, and organization-specific privacy policy.
Development
python3 -m pip install "uv==0.11.23"
uv sync --frozen --all-extras --no-install-project
uv sync --frozen --all-extras --no-editable --no-build-isolation
uv run --no-sync scripts/check_release.sh
See Contributing, Security Policy, and Changelog.
Releases use tokenless PyPI Trusted Publishing and include verified wheel and source distributions, checksums, SBOMs, and GitHub attestations.
AI-Assisted Development
This project is developed with substantial assistance from AI coding tools. All changes remain subject to human review, automated testing, and the same security requirements as manually written code. Do not send production data, raw PII, credentials, or tokens to an AI system while working with the project.
The name is a nod to Radiohead's "Paranoid Android". This project is unaffiliated with Radiohead or related rights holders.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_paranoid_android-0.7.0.tar.gz.
File metadata
- Download URL: agent_paranoid_android-0.7.0.tar.gz
- Upload date:
- Size: 325.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62939d7e6963cd20ccfeede3230d86f3a4ee06c93ba74bd61167be44c01f02e7
|
|
| MD5 |
9d2a6187d0ba85cc3113d2b4d60d3c85
|
|
| BLAKE2b-256 |
3c2c9453a511b6df97c3e7375e3ddd71aa353e67d0cfe96b5016ee20db614455
|
Provenance
The following attestation bundles were made for agent_paranoid_android-0.7.0.tar.gz:
Publisher:
publish-pypi.yml on wa-pis/agent-paranoid-android
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_paranoid_android-0.7.0.tar.gz -
Subject digest:
62939d7e6963cd20ccfeede3230d86f3a4ee06c93ba74bd61167be44c01f02e7 - Sigstore transparency entry: 2238027227
- Sigstore integration time:
-
Permalink:
wa-pis/agent-paranoid-android@277a87d09c6ffd1586881724aee627d18f33cc28 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/wa-pis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@277a87d09c6ffd1586881724aee627d18f33cc28 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file agent_paranoid_android-0.7.0-py3-none-any.whl.
File metadata
- Download URL: agent_paranoid_android-0.7.0-py3-none-any.whl
- Upload date:
- Size: 106.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d47bd1ade65144f64f751a62303e2f8eb0e2d1c79dfdd6fc7f54f6985ed59fe8
|
|
| MD5 |
291599a45c613a481ad1b49cc8966cb9
|
|
| BLAKE2b-256 |
6e1db4daf75dc714f446c98dcda07d545722a2124ffbc156a1347da798d64bee
|
Provenance
The following attestation bundles were made for agent_paranoid_android-0.7.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on wa-pis/agent-paranoid-android
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_paranoid_android-0.7.0-py3-none-any.whl -
Subject digest:
d47bd1ade65144f64f751a62303e2f8eb0e2d1c79dfdd6fc7f54f6985ed59fe8 - Sigstore transparency entry: 2238027681
- Sigstore integration time:
-
Permalink:
wa-pis/agent-paranoid-android@277a87d09c6ffd1586881724aee627d18f33cc28 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/wa-pis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@277a87d09c6ffd1586881724aee627d18f33cc28 -
Trigger Event:
workflow_dispatch
-
Statement type: