BioEchemgrows togetherEpochCore Partner verifier

Proprietary Technologies × No AI Training

Verify what we say. With your own keys.

The router at https://router.epochcoreqcs.com/ publishes signed sync ticks and proof bundles for self-powered biological monitoring nodes deployed in controlled-environment agriculture. The BioSwarm Attestor is a stateless Python sidecar that re-fetches live data, re-computes KPIs from raw node readings, walks the signature chain, and produces its own Ed25519 + ML-DSA-65 attestation envelope you can archive or forward. It does not require write access. It does not need our private keys. It produces verifiable environmental data on its own.

At a glance

Language
Python 3.10+ · stdlib + cryptography · optional httpx, oqs
Network surface
GET /swarm/{zone} · POST /swarm/{zone}/sync · GET /proof/{zone}
Required header
X-Tenant: bioechem
Inner signature
Ed25519 (RFC 8032) over canonical JSON
Outer signature
ML-DSA-65 (FIPS 204) via liboqs · or labeled deterministic stub
Audit format
RFC 6962-style Merkle tree over canonical-JSON SHA-256 leaves
Lines of code
~1.8k Python across five focused modules + CLI
Tests
120+ unit tests across the five modules

Three commands.

After cloning the router repo and installing dependencies. Replace bioechem and field-a with whatever tenant and zone you're auditing.

# Required + optional dependencies
cd epochcore-quantum-router/dispatcher
pip install cryptography           # required
pip install httpx oqs              # optional: faster HTTP, real ML-DSA-65
1Run a full attestation cycle
python3 bioswarm_attestor_cli.py run-once \
    --tenant  bioechem \
    --zone    field-a \
    --out-dir ./attestations

Fetches the live snapshot, re-computes KPIs from raw node readings, walks the signature chain, builds an Ed25519-signed inner envelope, wraps it with an ML-DSA-65 co-signature, appends a battery sample to local history, and writes a forecast. Output verdict: match / mismatch / stale / no_data.

2Verify a co-signed envelope
python3 bioswarm_pq_signer.py verify \
    --cosigned-file attestations/cosigned-*.json \
    --key-file      attestations/pq_keypair.json

Returns a JSON verdict with schema_ok, ed25519_ok, pq_ok, backend, and a reason list. ed25519_ok is the load-bearing third-party check: it confirms the recomputed envelope was signed by the public key embedded inside it. Bring your own liboqs for NIST-grade post-quantum.

3Bundle 24 hours of evidence into a Merkle root
python3 bioswarm_audit_bundle.py bundle \
    --tenant bioechem --zone field-a \
    --inputs attestations/ \
    --out    bundle.json

python3 bioswarm_audit_bundle.py prove \
    --bundle-file bundle.json \
    --inputs      attestations/ \
    --index       0 \
    --out         proof.json

python3 bioswarm_audit_bundle.py verify --proof-file proof.json
# {"ok": true, "merkle_root": "..."}

Records a single 32-byte SHA-256 root over canonical-JSON digests of every co-signed envelope, attestation, sync tick, or proof in the input set. Anyone can later prove that a specific event was part of that 24-hour window.

Worked example: Flood Sentinel.

A real trace from the working prototype. ALS-PT19 light sensor on A0 of an Arduino UNO R4 — when standing water bridges the sensor pad the photodiode signal jumps. Threshold: alarm fires above 0.6 V sustained for two consecutive samples.

t = 0 min · drynode flood-n03, reading 0.10 V, severity nominal
t = 5 min · dryreading 0.12 V (slight thermal drift), severity nominal
t = 18 min · wetstanding water bridges sensor pad → reading jumps to 1.34 V, severity medium
t = 19 min · corroborationneighbors flood-n02 + flood-n04 elevate to 0.7–0.9 V, raising zone severity
t = 20 min · signedPOST /swarm/greenhouse-1/sync → signed coherence tick; phone alert fires; proof bundle ready

Total elapsed from physical water → operator phone alert: under 20 minutes against a < 1 cm water depth. The proof bundle from this exact trace is what the three commands above verify — without giving the verifying party any tenant secrets, the chain of signatures and the consistency between router KPIs and raw readings can be re-derived on their own infrastructure.

What the attestor checks.

The attestor surfaces the gap between what the router reports and what the raw per-node readings imply. The KPI block in every envelope contains a kpi_match map with four entries:

onlineRouter-reported online count vs. nodes seen within 5 min.
weak_batteriesRouter-reported low-battery count vs. nodes < 2800 mV.
wet_nodesRouter-reported wet count vs. nodes with wet=true.
coherence_deltaRouter-reported coherence vs. modal-wet agreement fraction.

Verdicts emitted per cycle:

match mismatch stale no_data

A mismatch verdict fires whenever the router's claimed counts diverge from the recomputation. stale means the snapshot timestamp is older than five minutes — the recomputation is still delivered. no_data means the snapshot returned no nodes (useful for zone-empty vs zone-broken). The chain check walks prev_signature links in the sync-tick history and confirms timestamps move monotonically forward. Any break or reordering is flagged in the envelope's chain block.

Module map.

Five focused Python modules plus a CLI. Every module is fully unit-tested.

bioswarm_attestor.pyFetch + verify chain + recompute KPIs + Ed25519 sign.
bioswarm_forecaster.pyLinear-regression battery decline + EWMA wet-share probability.
bioswarm_pq_signer.pyML-DSA-65 co-signature wrapper (liboqs or labeled stub).
bioswarm_audit_bundle.pyMerkle bundle + inclusion proofs over signed evidence.
bioswarm_attestor_cli.pyOperator-facing orchestrator: attest, attest-cosign, forecast, audit-bundle, run-once, serve.

Trust model.

See it run live Sample monthly evidence package Take the 10-stop walkthrough Investor brief