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-0.8.16.tar.gz (25.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-0.8.16-py3-none-win_amd64.whl (3.6 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-0.8.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.8.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.8.16-py3-none-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.8.16-py3-none-macosx_10_12_x86_64.whl (3.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-0.8.16.tar.gz
Algorithm Hash digest
SHA256 a1c190e649c686eb51c93870e6ba0895c3a9f72d5515f074960332d2f2263a93
MD5 08c2954ae8eb0c23e6174414680ed732
BLAKE2b-256 34a33e6c17490c0629f16ef9b5223d23cc5036062bc3e66db610f9fe7b86fc9e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.16-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a62edaf4e532a930568e5ae8323e6a7befa07e28d3deb06b291a7d190079888d
MD5 040836c478f0c267780012de4fef2c0a
BLAKE2b-256 e5056b39005939b8e12beacfba2b7666e00a04ee6785e0ba2b200b6ed56451bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 224478ffebf0525e907ba7a053f6af9c0ae0a67f6192dc0b75c8c801e62389ba
MD5 4c89ce5b8564f43fb6ca223f31ffa477
BLAKE2b-256 74155f253bf0cc1233927b20239f72afc7d15ac4d75b368d7293929efd3397e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 50e69bf5f18f29910ca2d8d225a45198f16eca778ee25a77ea262a84a3003458
MD5 20c6c15a8162542e1a5137645de89f6f
BLAKE2b-256 5f91b4cd3c06e455f0ea4a69447dc31cfc6c7e5de05b69af8b77fcfde2ad82d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.16-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d80ed53518310e945d46bcc8e3d55ecfbf6ec9bae80a18406a0efa87e8d84c68
MD5 0dde5bfa898cf511d572c8724949c3d3
BLAKE2b-256 ac4634d0385302a9001bb432c1456413698caa1b4a0bba5535c090919923d721

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.16-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 069e2d86572deac7e28a9337df0871f9c00090244539268ccc296eb3fc93aeac
MD5 3d30c09b0a194d4aa459e49ba0fdb0a4
BLAKE2b-256 2ee95650b9ec879a0e283522f03a993865139e5cd9aee3acbe5b35891783f34a

See more details on using hashes here.

Provenance

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