Skip to main content

Python bindings for CIRISVerify hardware-rooted license verification

Project description

CIRISVerify Python Bindings

Python bindings for CIRISVerify, the hardware-rooted license verification module for the CIRIS ecosystem.

Installation

pip install ciris-verify

Note: The CIRISVerify binary must be installed separately. See the CIRISVerify documentation for installation instructions.

Quick Start

import os
from ciris_verify import CIRISVerify, LicenseStatus

# Initialize the verifier
verifier = CIRISVerify()

# Get license status with a fresh nonce
status = await verifier.get_license_status(
    challenge_nonce=os.urandom(32)
)

# Check if professional capabilities are available
if status.allows_licensed_operation():
    print("Professional license verified!")
    print(f"Tier: {status.license.tier}")
    print(f"Capabilities: {status.license.capabilities}")
else:
    print("Running in community mode")

# IMPORTANT: Always display the mandatory disclosure
print(status.mandatory_disclosure.text)

Mandatory Disclosure

Per the CIRIS ecosystem rules, agents MUST display the mandatory_disclosure.text to users. This ensures transparency about the agent's capabilities and licensing status.

# The disclosure MUST be shown to users
disclosure = status.mandatory_disclosure
print(f"[{disclosure.severity.upper()}] {disclosure.text}")

Capability Checking

For frequent capability checks, use the fast path:

result = await verifier.check_capability("medical:diagnosis")
if result.allowed:
    # Capability is available
    pass
else:
    print(f"Capability denied: {result.reason}")

Testing

For testing without the actual binary, use MockCIRISVerify:

from ciris_verify import MockCIRISVerify, LicenseStatus

# Create a mock that returns community mode
verifier = MockCIRISVerify(
    mock_status=LicenseStatus.UNLICENSED_COMMUNITY
)

# Use exactly like the real client
status = await verifier.get_license_status(os.urandom(32))
assert status.status == LicenseStatus.UNLICENSED_COMMUNITY

Error Handling

from ciris_verify import (
    CIRISVerifyError,
    BinaryNotFoundError,
    BinaryTamperedError,
    VerificationFailedError,
)

try:
    verifier = CIRISVerify()
    status = await verifier.get_license_status(os.urandom(32))
except BinaryNotFoundError as e:
    # Binary not installed
    print(f"CIRISVerify not found: {e.path}")
except BinaryTamperedError:
    # CRITICAL: Binary has been modified
    # Halt all operations immediately
    raise SystemExit("SECURITY ALERT: Binary integrity compromised")
except VerificationFailedError as e:
    # Verification failed - operate in restricted mode
    print(f"Verification failed: {e}")

License Status Codes

Status Code Description
LICENSED_PROFESSIONAL 100 Full professional license active
LICENSED_PROFESSIONAL_GRACE 101 License valid, in offline grace period
UNLICENSED_COMMUNITY 200 Community mode, no professional capabilities
RESTRICTED_* 300-399 Restricted mode due to verification issues
ERROR_* 400-499 Error states (revoked, expired, etc.)
LOCKDOWN_* 500+ Critical security failure, halt operations

Thread Safety

The client is thread-safe and can be used from multiple threads or async tasks concurrently.

License

AGPL-3.0-or-later - See LICENSE file in the CIRISVerify repository.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ciris_verify-5.2.0.tar.gz (72.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ciris_verify-5.2.0-py3-none-win_amd64.whl (6.3 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-5.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-5.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-5.2.0-py3-none-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-5.2.0-py3-none-macosx_10_12_x86_64.whl (5.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file ciris_verify-5.2.0.tar.gz.

File metadata

  • Download URL: ciris_verify-5.2.0.tar.gz
  • Upload date:
  • Size: 72.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciris_verify-5.2.0.tar.gz
Algorithm Hash digest
SHA256 3db7599a6ada8131179a3d6401dbb534b12b3b1f67bda76222f02c1c31171da3
MD5 06a1a8cdc15345843fdc418fb9eca968
BLAKE2b-256 7916416e8d3e8d2884bcf358b1cc798db548aa9fb679eb3ca2b80b2b7a2855a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0.tar.gz:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-5.2.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: ciris_verify-5.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciris_verify-5.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e76865388cb1fbcb20cd2c144bdbe6a1b7fea001ab7f6b81693c491f64e1cc5e
MD5 79df6a614e2f8f3cca7f4c94f2a90e5a
BLAKE2b-256 6ba202399dd9316b127aafbde5c286c2e8237a340e64e3ea8908b6b673ca1ae7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0-py3-none-win_amd64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-5.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1236c5778bcc793dae0f4a140ee8a7c48345b09e9626ccaba0ea433a3f07cb57
MD5 32573b183966d503504f44c15b92c742
BLAKE2b-256 218687417b0b766eecf7346fb54552e5d025083ae2439e25f37f1e69840bd300

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-5.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4dc79733edd0080ea5ed6d54f498d9b21a3263737afe4b4f9b6f61cee9e8be88
MD5 2a3232a893531f66b918aaefd1606eb8
BLAKE2b-256 6f9a6521316c9d8be60fa575867107c84e08854a1cf55ffc7a629e83ce7d37d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-5.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca1c7795a0351e3f1dd9fadf340615e90bee01c6b7fbab29e655a61bf8a87f64
MD5 7310f27876f42a32ed0d7aa294246c12
BLAKE2b-256 8a202c8686a0bb80cdf7e63816fa0ef1089b09f0a3e976144a4000b7c4d8fad5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-5.2.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5fb89617da4ee7a79735c59c86ab26ad85dfae3ee6da425e402d3de63a07f72a
MD5 9d2610b7e00bafb869be102f67c42b70
BLAKE2b-256 614f7cf29f21a9c8312a3c743cd8fa9772dc4efa48101c59514e3092ab9e2640

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.2.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page