JarvisX Connected-Evidence Agent
Reconcile your migration on your OWN engines, at scale, without your data or credentials ever leaving your network — then get a signed certificate.
Run this inside your perimeter. It connects to your source + target warehouses with your own read-only credentials, checks that each converted query returns the same rows as the source, and emits only counts + hashes + a verdict. Optionally it sends that verdict (never your rows) to JarvisX for an Ed25519-signed, ledgered Connected-Evidence certificate.
Why it scales to 1 TB
It does not pull your data. In --mode pushdown (default) it computes a fingerprint
inside the warehouse — COUNT(*) + an order-independent sum of per-row hashes — and
compares two one-row fingerprints. A 1 TB result reconciles by moving a few bytes. A
mismatch is definitive; a match is high-probability equal. --mode full pulls rows for a
row-level diff (small data only).
Install
pip install jarvisx-evidence-agent # core (stdlib only)
pip install "jarvisx-evidence-agent[bigquery]" # + BigQuery client
pip install "jarvisx-evidence-agent[snowflake,duckdb,postgres]"
Configure (recon.json)
{
"source": {"engine": "bigquery", "project": "my-legacy-proj"},
"target": {"engine": "snowflake", "account": "...", "user": "...", "warehouse": "...", "database": "...", "schema": "..."},
"pairs": [
{"name": "daily_sales", "source_sql": "SELECT id, SUM(amt) t FROM sales GROUP BY id",
"target_sql": "SELECT id, SUM(amt) t FROM SALES GROUP BY id"}
]
}
Engines: duckdb (local file / parquet / csv via setup_sql), bigquery (ADC),
snowflake (env/config), postgres (dsn), or callable (point at your own
module.connect(cfg) -> fn(sql)->(cols, rows) adapter for anything else).
Credentials come from your environment (ADC / env / DSN) — this tool never stores them.
Run
# reconcile → JSON report (counts + hashes only)
jarvisx-evidence-agent --config recon.json --out report.json
# reconcile AND get a signed certificate (Enterprise plan; only the fingerprint is sent)
jarvisx-evidence-agent --config recon.json --submit https://gojarvisx.ai --token jvx_xxx \
--source-type bigquery --target-type snowflake
Exit code is non-zero if any pair is a definite mismatch — drop it straight into your
migration CI. The signed certificate can be independently verified at
https://gojarvisx.ai/api/proof/verify against the public key at /api/proof/pubkey.
What leaves your network
Only: query name, engines, row counts, hashes, and the verdict. Never raw rows, never SQL text (in the signed cert), never credentials.
Also: jarvisx verify — a CI/dev correctness gate for SQL changes
Same package ships a second command that verifies an AI-made (or any) SQL change is behavior-preserving — credential-free, no warehouse needed. Give the original + changed SQL; JarvisX runs both on a synthetic fixture and row-diffs them, returning a gate with a CI-friendly exit code.
# exit 0 = pass (preserved) · 1 = block (changed) · 2 = review (unproven) · 3 = error
jarvisx verify -o before.sql -c after.sql -d bigquery
jarvisx verify --original-sql "SELECT id,SUM(amt) t FROM s GROUP BY id" \
--changed-sql "SELECT id,SUM(amt) AS t FROM s GROUP BY 1" -d bigquery
# add a signed certificate (metered; needs a jvx_ token):
jarvisx verify -o before.sql -c after.sql -d bigquery --sign --token jvx_xxx
Drop it in a pre-commit hook or CI step to block a merge when gate != pass. It calls the hosted
verify_change tool over HTTPS (set --url/JARVISX_URL to override); only the SQL text leaves
your machine. A review result means JarvisX could not prove equivalence — escalate to a human,
never treat it as a pass.
As a PR gate (CI)
jarvisx ci verifies every changed *.sql file between the PR base and HEAD and fails the
check on a behavior change:
jarvisx ci -d bigquery # exit 1 if any change blocks; add --fail-on-review to also fail on unproven
Ready-made GitHub Action: jarvislistens/jarvisx/.github/actions/jarvisx-verify@main
(check out with fetch-depth: 0). Copy-paste workflow: docs/examples/jarvisx-verify-pr.yml.
Per-file results show up as PR annotations + a job summary.
License
Proprietary — © JarvisX.
Metadata
Release files for jarvisx-evidence-agent 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jarvisx_evidence_agent-0.1.0.tar.gz | 564.4 kB | Without provenance | Details for jarvisx_evidence_agent-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jarvisx_evidence_agent-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for jarvisx_evidence_agent-0.1.0-py3-none-any.whl |
Total release size: 583.2 kB
Release files / jarvisx_evidence_agent-0.1.0.tar.gz
| Download URL | jarvisx_evidence_agent-0.1.0.tar.gz |
|---|---|
| Size | 564.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4aaf2de0da7aca5c44a73b230714542a6a0a159cb6d55c4f607817d56a0bfae
|
|
BLAKE2b-256 checksum How to use checksums |
b4a3fe5145754159c22aba1f7f7681f59329b12d737b69bd26156154fa06f8d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Release files / jarvisx_evidence_agent-0.1.0-py3-none-any.whl
| Download URL | jarvisx_evidence_agent-0.1.0-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab77afbe6f01f4845c9969d4d806ec9faf8cc7822e0816e677e9609c8771bd56
|
|
BLAKE2b-256 checksum How to use checksums |
767d4ba30c5119c76abe1ee9df93e828f2f13a77aca9b8fceea68e63f8af09d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.15
|
Security for jarvisx-evidence-agent 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.