This release is a pre-release and may not be stable for production use.
Agent Paranoid Android
Safety-first, deterministic synthetic test data generation from CSV structure, safe profiles, reviewed
DatasetSpec files, and allowlisted PostgreSQL or Trino metadata. The CLI and Python library are primary; PostgreSQL, MCP, Trino, and AI providers are optional integrations. The base package supports CSV/JSON workflows without installing a database client, SQL parser, or MCP SDK. Source rows are profiled, never shuffled or copied into generated output.
Read the documentation for tutorials, concepts, configuration, MCP setup, and troubleshooting.
Stable release: 1.1.0 (recommended). Preview release: 1.2.0rc1 (explicit opt-in): python3 -m pip install "agent-paranoid-android==1.2.0rc1". Package: agent-paranoid-android; CLI: test-data-agent.
What It Preserves
From bounded evidence and a reviewed DatasetSpec, generation can preserve schema
and types, nullability, ranked distribution and scale shape, approved FK graphs,
temporal dependencies, and executable business rules. AI may propose relationships
and rules; human review and deterministic validation remain the authority boundary.
It never copies source rows or preserves real PII. Exact source literals remain off by default; an explicit field-scoped allowlist may preserve only a reviewed, bounded, non-sensitive business enum or constant in local profiles, deterministic generation, and local SQL export. External providers and default MCP responses remain source-literal free. The project does not certify statistical anonymity, protection from every re-identification attack, or cross-environment byte identity. A seed provides logical reproducibility under the recorded package, dependency, locale, and serializer environment.
Install
Python 3.11 or newer is required. CI tests CPython 3.11 through 3.14. Most users should install the stable release:
python3 -m pip install "agent-paranoid-android==1.1.0"
test-data-agent doctor
Install only the stable optional features you use:
python3 -m pip install "agent-paranoid-android[parquet]==1.1.0"
python3 -m pip install "agent-paranoid-android[mcp]==1.1.0"
python3 -m pip install "agent-paranoid-android[trino]==1.1.0"
python3 -m pip install "agent-paranoid-android[postgres]==1.1.0"
python3 -m pip install "agent-paranoid-android[mcp,trino]==1.1.0"
python3 -m pip install "agent-paranoid-android[openai]==1.1.0"
python3 -m pip install "agent-paranoid-android[gigachat]==1.1.0"
The postgres extra provides the Psycopg driver for direct read-only PostgreSQL profiling. The trino extra contains the Trino client and safe SQL
parser; add mcp when using the Trino MCP server. The experimental GigaChat advisor is an explicit opt-in through the gigachat extra; OpenAI remains the
default provider.
The default aggregate-only tools return summaries, not source rows. The explicit opt-in row-returning tools include run_safe_select, which requires TRINO_ENABLE_SAFE_SELECT=true; bounded, masked rows may contain allowed source values and are not source-free, PII-free, anonymous, or privacy-safe.
First Offline Run
Run the installed package with its bundled fictional customer fixture. No checkout, network, Trino, MCP, or provider is required:
test-data-agent demo --output out/demo
A successful run reports:
Generated synthetic dataset: out/demo | rows: customers=12 | seed: 20260801 | validation: passed | source rows copied: no
Representative deterministic output:
customer_id,email,segment,signup_date
syn_customers_00000001,amber21@example.test,category_1,2024-02-10
The demo preserves evidenced column names and types, non-null shape, category rank, and date range. Its fixture has no relationship or business-rule evidence, so the demo makes no claim about those properties. The output folder contains:
customers.csv;csv_profile.json;dataset_spec.json;validation_report.json;generation_manifest.json.
The destination must not already exist. Review the manifest and effective spec before accepting any dataset. Then follow First CSV Dataset to profile your own input.
Choose A Guide
| Goal | Documentation |
|---|---|
| Validate the workflow with a real development or analytics task | Product Validation Pilot |
| Generate from one CSV | First CSV Dataset |
| Generate related tables | Related Tables |
| Profile PostgreSQL and export executable SQL | PostgreSQL workflow · Runnable disposable example |
| Profile through Trino | Trino workflow · Runnable local example |
| Review specs and output | Review The Output |
| Add deterministic business rules | Business Rules |
| Use the review-first agent flow | Agent Design |
| Use the experimental GigaChat advisor | GigaChat workflow |
| Connect an AI client or provider | AI Integration · Provider Adapter · Runnable MCP example |
| Run isolated OCI images | Container Deployment |
| Understand the trust boundaries | Safety Model |
| Configure limits and database access | Configuration |
| Inspect CSV, JSON, SQL, and Parquet output | Runnable output-format example; use export-postgres-sql for one executable PostgreSQL DDL+INSERT file |
| Recover from an error | Troubleshooting |
| Automate JSON, exit codes, and shell completion | CLI Reference |
| Decide whether this tool fits | Choose An Approach |
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;
- exact literals outside an explicit local field allowlist and its bounded non-sensitive content checks;
- 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, Support, Governance, Code Of Conduct, Security Policy, Changelog, and License.
Releases use tokenless PyPI Trusted Publishing with verified wheels/source distributions, checksums, SBOMs, and GitHub attestations.
AI-Assisted Development
AI-assisted changes require human review and tests; never send production data, raw PII, credentials, or tokens to AI. The name nods to Radiohead's "Paranoid Android"; this project is unaffiliated.
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-1.2.0rc1.tar.gz.
File metadata
- Download URL: agent_paranoid_android-1.2.0rc1.tar.gz
- Upload date:
- Size: 882.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57fffc8f38ceebf5c6fca4b9be9a5a63be3b86a4a457bbfeaa10283223c300ad
|
|
| MD5 |
fc6baf8dfc9ac2a2f705f3373046778e
|
|
| BLAKE2b-256 |
8c419f28909f0ab17b2392911afaf329a7761b5679de87004300380fc2da0d7a
|
Provenance
The following attestation bundles were made for agent_paranoid_android-1.2.0rc1.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-1.2.0rc1.tar.gz -
Subject digest:
57fffc8f38ceebf5c6fca4b9be9a5a63be3b86a4a457bbfeaa10283223c300ad - Sigstore transparency entry: 2473515260
- Sigstore integration time:
-
Permalink:
wa-pis/agent-paranoid-android@3edcfc3d63e04bd727136506e734eaf1d237dd54 -
Branch / Tag:
refs/tags/v1.2.0rc1 - Owner: https://github.com/wa-pis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@3edcfc3d63e04bd727136506e734eaf1d237dd54 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file agent_paranoid_android-1.2.0rc1-py3-none-any.whl.
File metadata
- Download URL: agent_paranoid_android-1.2.0rc1-py3-none-any.whl
- Upload date:
- Size: 225.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
435b96eec15f99ccd9cd7b80ce423dd48cdccf176d1808b0488d9864fb20cf45
|
|
| MD5 |
c40f879f4ae8b5fd6eacc226cb3d18b4
|
|
| BLAKE2b-256 |
fd2bcc84215712c2a250e49f49d3a9e1c56860de0da60c2c43e391b8f40d5488
|
Provenance
The following attestation bundles were made for agent_paranoid_android-1.2.0rc1-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-1.2.0rc1-py3-none-any.whl -
Subject digest:
435b96eec15f99ccd9cd7b80ce423dd48cdccf176d1808b0488d9864fb20cf45 - Sigstore transparency entry: 2473515270
- Sigstore integration time:
-
Permalink:
wa-pis/agent-paranoid-android@3edcfc3d63e04bd727136506e734eaf1d237dd54 -
Branch / Tag:
refs/tags/v1.2.0rc1 - Owner: https://github.com/wa-pis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@3edcfc3d63e04bd727136506e734eaf1d237dd54 -
Trigger Event:
workflow_dispatch
-
Statement type: