Skip to main content

Corium Python client

corium is the asynchronous Python API for both Corium deployment modes:

  • LocalPeer runs a full peer in-process.
  • RemotePeer connects to corium peer-server.

Both satisfy the same runtime-checkable Peer protocol and return immutable Db values. The native extension connects LocalPeer directly to Corium's peer library and RemotePeer to corium peer-server.

from corium import LocalPeer, Query

async with await LocalPeer.connect(
    "http://127.0.0.1:4334",
    database="people",
) as peer:
    db = await peer.db()
    rows = await db.query(Query.find("?name").where("?entity", ":person/name", "?name"))

Explicit close() (or async with) is required for deterministic shutdown. Wall-clock database views accept timezone-aware, millisecond-precision datetime values only. Custom Tagged values may use any tag except bytes, eid, inst, and uuid, which are reserved for dedicated boundary types. https:// endpoints automatically enable platform TLS roots, and bearer tokens are rejected for plaintext http:// endpoints by default. Local development may opt in explicitly with allow_insecure_token=True. Every endpoint must include an http:// or https:// scheme. Datom scans use limit=None for an explicitly unbounded scan.

Query, Pull, and transaction builders

All builders are immutable: every fluent method returns a new value, and Db.query, Db.pull, and Peer.transact accept either builders or the existing raw data-form escape hatches.

from corium import (
    EntityMap,
    Pull,
    Query,
    TxBuilder,
    data,
    gte,
    lookup,
    tempid,
)

tx = (
    TxBuilder()
    .entity(
        EntityMap.with_id(tempid("ada")).set("person/name", "Ada").set("person/age", 36)
    )
    .build()
)
report = await peer.transact(tx)

adults = (
    Query.find_collection("?name")
    .in_scalar("?minimum")
    .where(data("?entity", ":person/name", "?name"))
    .where("?entity", ":person/age", "?age")
    .where(gte("?age", "?minimum"))
)
names = await report.db_after.query(adults, 18)

person = await report.db_after.pull(
    Pull().db_id().attr("person/name").attr("person/age"),
    lookup("person/name", "Ada"),
)

Query builders cover relation, collection, tuple, and scalar results; scalar, tuple, collection, relation, database, and rule inputs; data patterns; predicates and functions; not, not-join, or, and or-join; rules; Pull find expressions; and aggregates. Strings beginning with ? are variables, strings beginning with : are keywords, and _ is the blank term. Use lit(...) when one of those spellings must remain a string literal.

Pull builders cover wildcard and entity-id selections, reverse references, nested patterns, bounded and unbounded recursion, aliases, defaults, and limits. Transaction builders cover entity maps, temporary IDs, lookup references, explicit EntityId values, add/retract/CAS/retract-entity operations, and arbitrary raw forms.

See examples/people.py for a complete topology-neutral example. The package includes py.typed, so these APIs are visible to static type checkers without a separate stub distribution.

Private PKI deployments can add a PEM certificate authority and override the certificate DNS name without replacing the platform trust store:

from pathlib import Path

peer = await RemotePeer.connect(
    "https://127.0.0.1:4336",
    database="people",
    token="secret",
    tls_ca=Path("ca.pem").read_bytes(),
    tls_domain="corium.internal",
)

Direct storage

LocalPeer normally reconstructs its in-process database from the transactor's gapless transaction stream. For faster cold starts, DirectStorage asks the transactor for a separately usable, read-only storage connection and loads the latest published snapshot before subscribing to the remaining transaction tail:

from corium import DirectStorage, LocalPeer, SegmentCache

peer = await LocalPeer.connect(
    "https://transactor.example.com",
    database="people",
    token=token,
    storage=DirectStorage(
        cache=SegmentCache(
            "/var/cache/corium/people",
            capacity_bytes=256 * 1024**3,
        )
    ),
)

Filesystem storage is present in the corium package. Install the package for the storage backend that the transactor uses:

python -m pip install corium corium-turso
# Or install corium-postgres or corium-s3.

Install all packages before the Python process starts. Corium loads each installed plugin through the corium.store_plugins entry-point group.

Make sure that the required backend is available:

from corium import available_storage_backends

assert "turso" in available_storage_backends()

Then pass DirectStorage to LocalPeer.connect, as shown in the first example. The transactor supplies the separate read-only configuration for the backend. You do not import the plugin package or give Corium a library path.

available_storage_backends() reports all loaded backends. A missing backend causes a StorageError when LocalPeer connects.

WARNING: Install plugins only from trusted publishers. A plugin runs native code in the Python process and can receive storage credentials.

Filesystem and Turso advertise local paths, so their direct-storage peers must run on a host that can reach the same path as the transactor. Corium rejects a missing store with StorageError; it does not create an empty store or silently fall back to replaying the full transaction stream.

PostgreSQL and S3 discovery never reuses the transactor's write credentials. The transactor must advertise its separately configured read-only PostgreSQL URL or S3 credentials. Temporary S3 credentials are refreshed through GetStorageInfo, and a refresh is rejected if the bucket, prefix, region, or endpoint changes.

The native integration suite uses the same workload for local and remote peers: query result conversion, Pull, datom scans, immutable views, stable caller-error mapping, transactions, and deterministic close. Set CORIUM_TEST_LOCAL_ENDPOINT and/or CORIUM_TEST_REMOTE_ENDPOINT to run it against live services. The dedicated private-CA and bearer-auth test uses CORIUM_TEST_REMOTE_TLS_ENDPOINT, CORIUM_TEST_REMOTE_TLS_TOKEN, CORIUM_TEST_REMOTE_TLS_CA, and optionally CORIUM_TEST_REMOTE_TLS_DOMAIN/CORIUM_TEST_REMOTE_BAD_TOKEN.

Metadata

Release files for corium 0.1.90

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for corium 0.1.90
File
corium-0.1.90-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
corium-0.1.90-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
corium-0.1.90-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
corium-0.1.90-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
corium-0.1.90-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 16.5 MB

Release files / corium-0.1.90-cp310-abi3-win_amd64.whl

Download URL corium-0.1.90-cp310-abi3-win_amd64.whl
Size 3.0 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e9fae96025f1ee5811bdb02d5c8d418a5cd3773851809e801d68e2fb1b46260a
BLAKE2b-256 checksum
How to use checksums
b8725f0a00b9d4da0017e4cfbc30a495cc59288228966c3da291c12fc0320cef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / corium-0.1.90-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL corium-0.1.90-cp310-abi3-manylinux_2_28_x86_64.whl
Size 3.5 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
d4c2ca6ab4dff20171533dd1a42426bffa8bef4b6589e179c9b83cf2c1768d7c
BLAKE2b-256 checksum
How to use checksums
99997136c5b8d7a96177466989fca9dd7e3a715345df03f09dc0c49a6f4b95db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / corium-0.1.90-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL corium-0.1.90-cp310-abi3-manylinux_2_28_aarch64.whl
Size 3.6 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
0e3da1b4081ed0c7fcd0b9e55556768b85c1b75d0665f1c5cdd4e485a203ac52
BLAKE2b-256 checksum
How to use checksums
a7f3de5aa200cef3452c3671d0741ea98ae3753bd09489cdae0da694fc957bd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / corium-0.1.90-cp310-abi3-macosx_11_0_arm64.whl

Download URL corium-0.1.90-cp310-abi3-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7ac0db12b9cb8d4e738afd9ab21c76e17782ceae1c4576e4c299aabd6887a0c5
BLAKE2b-256 checksum
How to use checksums
77a4d0b510b015b42ef6599552246570c58e36c457d048154f3b9a505be06eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / corium-0.1.90-cp310-abi3-macosx_10_12_x86_64.whl

Download URL corium-0.1.90-cp310-abi3-macosx_10_12_x86_64.whl
Size 3.2 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8b1decf2dafda11589c8d429921ee1090d55542ca8160504d4f84c20ef51ca88
BLAKE2b-256 checksum
How to use checksums
3783bc914354de75419feca9b752534ae00115075786265f2d1621aed02dff2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Security for corium 0.1.90

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.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for corium-0.1.90-cp310-abi3-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page