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-2.1.2.tar.gz (50.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-2.1.2-py3-none-win_amd64.whl (6.0 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-2.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-2.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-2.1.2-py3-none-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-2.1.2-py3-none-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-2.1.2.tar.gz
  • Upload date:
  • Size: 50.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-2.1.2.tar.gz
Algorithm Hash digest
SHA256 edbf294495e028ecde2308d64f8e025016eaf238b9270544cb8132221164a555
MD5 8a7919d924507eed8ec3db283fb18117
BLAKE2b-256 f45913ebd4e867e826c90f86be6b76ef79f62e3cc12f72eba1bf69020815a9c3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-2.1.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.0 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-2.1.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9f458683ee8ee205aaef37f1163b01cbf851329085fd75b4256bbafa18abb86d
MD5 339c839b2594cb5e9b55613cf97d65fb
BLAKE2b-256 8d811011a7759b34a596d1ce18e55487c52b4688362bd37ef5597818ed465851

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4fec68c23503deebf5ab5bc219e52649becc722e96517cbf9ce3052110c3a66c
MD5 8dc40668f7c20383bf095dbc41ed56b2
BLAKE2b-256 e5f364b6721aed76bacb0619cc8bbc4e153d5e27c6230a1b34850322f9a10692

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21005c20e003727eec32b32c204dc07185984b32d6c0c80e0a0df2a7a464d3a9
MD5 4b8625c1faac63a2f92d452827bd7730
BLAKE2b-256 3e5833db937b3419b179816eb7ae445d77d89d27536bcb29fab88aa072a216c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.1.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfe784fc03562c09637e87b7ed04084226e1a400d0617bcb25e7db8a8ad256aa
MD5 1d0b8723452d7991df21aab3bc96a075
BLAKE2b-256 c7645f8cc328cdec4a44e72cb41e0f93b836cdaa617b7d7fb1b6c7e6408225b9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.1.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 28f27cbcb0d997bb6ead9ad9a73f4b182d442a357cc030c5b3ad73e9eacc16d6
MD5 64ca03ebe008c9dde09e1c732dc861ba
BLAKE2b-256 2becb04a11c94bf42e6839ba0e4798ef79e6ca157f9947a2fc77aa600df01671

See more details on using hashes here.

Provenance

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