gaiaftcl — Python client for the GaiaFTCL substrate

Python client for the GaiaFTCL quantum-mathematical computational

substrate. Reads through Franklin's cell surface; the substrate

remains operationally autonomous through Franklin's heartbeat.

USPTO 19/460,960 · USPTO 19/096,071 — © 2026 Richard Gillespie

What this gives industry consumers

V184 heartbeat history, V160 research telemetry, V172 replay anchors,

V178 joint-variation evidence, V182 health observations, V183 healing

history, V181 algorithm evaluations, and Franklin-authorized

substrate-development items in V186 vocabulary.

self-custody QFOT + Euro stablecoin) and qfot_ledger() (V195 mesh QFOT). The

wallet private key is never read by the client.

strategic_shifts() (V203).

the recovered-key column is deliberately not surfaced — verification_match is the

proof), pq_migrations() (V189), and randomness_provenance() (V211 Rule 30).

canonical_witness + witness_hash_sha256 + signature_quintet

verifies bit-exact through gaiaftcl.federation.verify_signature_quintet.

rdkit, ase, pymatgen, root/uproot. Each bridge is an optional install

extra; the base package imports cleanly without them.

bridge distribution from the cell-mesh manifest cache.

substrate-development artifacts, wiki sections, and bridge releases.

Install

pip install gaiaftcl                          # base client
pip install gaiaftcl[numpy,pandas,sklearn]    # data-science bridges
pip install gaiaftcl[biopython,rdkit]         # life-science bridges
pip install gaiaftcl[ase,pymatgen]            # materials bridges
pip install gaiaftcl[root]                    # high-energy-physics bridge
pip install gaiaftcl[all]                     # everything

Prerequisites

The substrate operator must run the GaiaFTCL substrate daemon on the

same host that this Python client reads from. The substrate writes

append-only federation-cosigned rows to

~/Library/Application Support/GaiaFTCL/substrate.sqlite (macOS

standard location). The Python client reads through that path

read-only; Franklin's heartbeat is the only authorized substrate-

development path.

See the wiki's

Franklin-As-Cell-Surface

page for the substrate's operator-side setup.

Five-minute getting started

from gaiaftcl import FranklinClient

with FranklinClient.connect() as franklin:
    # Recent heartbeats — Franklin's per-60-second sovereign cycle
    for hb in franklin.heartbeat_history(limit=5):
        print(hb.tick_at_iso,
              "obs=", hb.observations_count,
              "sov_auth=", hb.commissions_franklin_authorized)

    # Franklin-authorized substrate-development in V186 vocabulary
    for item in franklin.list_substrate_development(limit=20):
        print(item.commission_id, item.status, item.tunable_name)

    # Substrate's federation authority summary
    summary = franklin.franklin_authority_show()
    print(summary["substrate_development_by_status"])

Industry bridges — one example per bridge

numpy

from gaiaftcl import FranklinClient
from gaiaftcl.bridges.numpy_bridge import leading_zero_histogram
import sqlite3

with FranklinClient.connect() as franklin:
    conn = sqlite3.connect(
        "file:" + str(franklin.substrate_db_path) + "?mode=ro", uri=True)
    conn.row_factory = sqlite3.Row
    rows = [dict(r) for r in conn.execute(
        "SELECT leading_zero_nibble_count FROM "
        "qc020_joint_variation_evidence ORDER BY row_id DESC LIMIT 1000")]
    hist = leading_zero_histogram(rows)
    print(hist[:8])

pandas

from gaiaftcl import FranklinClient
from gaiaftcl.bridges.pandas_bridge import heartbeats_to_dataframe, cadence_summary

with FranklinClient.connect() as franklin:
    df = heartbeats_to_dataframe(franklin.heartbeat_history(limit=500))
    print(cadence_summary(franklin.heartbeat_history(limit=500)))

scikit-learn

from gaiaftcl import FranklinClient
from gaiaftcl.bridges.sklearn_bridge import SubstrateFeatureExtractor
from sklearn.cluster import KMeans

with FranklinClient.connect() as franklin:
    X = SubstrateFeatureExtractor().fit_transform(
        franklin.research_telemetry(limit=1000))
    km = KMeans(n_clusters=4, n_init=10).fit(X)
    print(km.cluster_centers_)

biopython, rdkit, ase, pymatgen, root

See cells/python/gaiaftcl/docs/python_wrappers_user_guide.md for the

full bridge reference and example workflows.

Federation cosignature verification

Every row Franklin's surface emits carries a canonical witness, witness

hash, and federation cosignature quintet. Verify bit-exact:

from gaiaftcl import FranklinClient
from gaiaftcl.federation.cosignature import verify_signature_quintet

with FranklinClient.connect() as franklin:
    hb = franklin.heartbeat_history(limit=1)[0]
    ok = verify_signature_quintet(
        canonical_witness=hb.canonical_witness,
        witness_hash_sha256=hb.witness_hash_sha256,
        signature_quintet_json=hb.signature_quintet)
    assert ok

Mesh distribution

Industry bridges and substrate-development artifacts distribute through

the cell-mesh as federation-signed manifests:

from gaiaftcl import load_from_mesh, MeshLoader

# Default mesh cache: ~/.gaiaftcl/mesh_cache/
bridge = load_from_mesh("gaiaftcl.bridges.numpy_bridge")

# Or with explicit cache root + public keys
loader = MeshLoader(
    cache_root=Path("/srv/gaiaftcl/mesh_cache"),
    federation_public_keys=[...])
bridge = loader.load("gaiaftcl.bridges.numpy_bridge")

Subscriptions

Subscribe to live substrate events. Polling fallback works without a

NATS endpoint:

import asyncio
from gaiaftcl import FranklinClient

async def watch():
    with FranklinClient.connect() as franklin:
        async for event in franklin.subscribe(
                "gaiaftcl.substrate.franklin_heartbeat.sealed"):
            print(event["row"]["tick_at_iso"])

asyncio.run(watch())

What's forbidden across this client

Per CLAUDE.md doctrine:

propose_*, authorize_* methods. Franklin authorizes

substrate-development autonomously through bounded authority.

V186 substrate-development state names: franklin_proposed,

franklin_operator_authorized, substrate_developing,

substrate_development_complete, franklin_operating,

franklin_operator_rejected, franklin_operator_rolled_back.

Franklin's persisted substrate rows. The substrate daemon is the

authorized writer.

License

Proprietary; USPTO 19/460,960 and USPTO 19/096,071.

Federation cosignature: pending operator signing host (v26). Witness (sha256 of rendered body): 2fc3a4387501c3525bc18071aa6d0bdb8792ce65cff01448057fd7097d6c2f9d. This page serves with a substrate-honest pending-signature notice until the operator's Franklin signer cosigns it.