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

This version

4.8.0

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-4.8.0.tar.gz (68.5 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-4.8.0-py3-none-win_amd64.whl (6.2 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-4.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-4.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-4.8.0-py3-none-macosx_11_0_arm64.whl (5.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-4.8.0-py3-none-macosx_10_12_x86_64.whl (5.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-4.8.0.tar.gz
Algorithm Hash digest
SHA256 238493130cef571b5b8a5b675abf95e7b6c068de76c82cc22bd19ea68aca65d0
MD5 ed2caa449b97d48c351420eeb6b84fac
BLAKE2b-256 db13f5907f0a2a9b21e9d772ccee5560ff789b6671703341f8caf904aaf6686e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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-4.8.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: ciris_verify-4.8.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.2 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-4.8.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f94f69245aad6e60949891c13dea8801f480e6f822ec9d24a45d2a641d64a2d9
MD5 5111b25a2684ef2273e6bf7b852e76cf
BLAKE2b-256 b213bb558d768d1afba4a67c158f3d6c9e79d608e751d1bda2e8dc91f22231dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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-4.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-4.8.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 42c10ea1180363c90e20d51ed24e3e71044d5c0ff12a1d638677804ca53603e8
MD5 bf691036717d628b296474a01818b93a
BLAKE2b-256 3f1f216ccb13aa6b2a64eccfa5896fe5072ee9ce1bdcdcf7f9a945af8ba54f27

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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-4.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ciris_verify-4.8.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 feb9a6fd3cec6d735d29aac8df911d53ac7a5fa77d27693ef745bad32164af05
MD5 f60ff0be84e9682517d8645452c798d1
BLAKE2b-256 502da9fc99d5eb1cc902e8253cf2a1a91a8ca27f66b8dc9b9e3b3c9c9f62aab3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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-4.8.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_verify-4.8.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2e579f2f670e073df3cd8bde2cced35736fe56492b9ee9515541c13ab98eec3
MD5 89e76edad61c3a1164ccfecf897fe6d7
BLAKE2b-256 9ea9d95a2fc539d48c8ff44d3e14a6fc3181b3ed3f6cb8eed4735940c54618b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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-4.8.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-4.8.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d9362d624aa7f4a892b94da3227a3d2e4b9b77ec32cbf6131bc331d1b3ddd03a
MD5 d4f2006cb8f84e172a28a5ea50b32b37
BLAKE2b-256 7972cf76a95730aeee4bb7e3dd1924cbedaa6f28979b1d183167bb7cdb22ce23

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-4.8.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