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-7.2.0.tar.gz (75.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-7.2.0-py3-none-win_amd64.whl (6.5 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-7.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-7.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-7.2.0-py3-none-macosx_11_0_arm64.whl (5.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-7.2.0-py3-none-macosx_10_12_x86_64.whl (6.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-7.2.0.tar.gz
  • Upload date:
  • Size: 75.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-7.2.0.tar.gz
Algorithm Hash digest
SHA256 5e27fa06591afbdf79aee60f3035af802ce7ad2d29cac8a2b611d5d7e8447839
MD5 ff1a81bdd50e333b21025c18eff4c6cf
BLAKE2b-256 63be6d18113835d1d53dcb0433738a3c1541b267f965248adaa947519e995005

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-7.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.5 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-7.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 49cce5b5a269415f4d3ff3407d10e0a150e37c789e521b3fd9579b2687e50390
MD5 5c693ccc117ea34c9da4ff4931214590
BLAKE2b-256 43540bb5803f75788ab002e4f3912c6e8a634f0a87c6fed63c83584057691656

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0c2e1055946fcf67f81f6e215eea6842ea914090f96486a53cce1db5987c13d1
MD5 4b2d80079c2a459e4fcc0caf22ba22c9
BLAKE2b-256 843b427ba80a9c534f7d15747f60e45ed1e507ae253938ec52e725ed5628370b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b4c57e689e725a20a309981e9f94f9a8bf49a11299402e1fc3768b043f28771a
MD5 04fc3f6d31a8cb12521f3c167c9866a9
BLAKE2b-256 a56da04b74ac7f692dec585b03db4eea0b151cbf956ebd58ba9b198018ea5782

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2da2d437455398987a8db1e152e9f2aa180392e98b01042f086f001cbcc5daa
MD5 6f485de710a6b041a4d934ec4a0b0115
BLAKE2b-256 2d76b62427f4f38bae6fae1ea77abecd02829c93c6880e7bbd5b062702dbeac2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d60a7212f0027670a4285cb3cf8ba536a2f3f71b249af3912bd04c03877cdc9b
MD5 9fbb4bb744b39b5e5907ec754ec1cb10
BLAKE2b-256 ada04c3dd89372886e2fa2ee0c3500ce814b1b4b4aa843c89ac28332cd8f890b

See more details on using hashes here.

Provenance

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