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

Uploaded Python 3Windows x86-64

ciris_verify-7.3.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.3.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.3.0-py3-none-macosx_11_0_arm64.whl (5.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-7.3.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.3.0.tar.gz.

File metadata

  • Download URL: ciris_verify-7.3.0.tar.gz
  • Upload date:
  • Size: 76.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.3.0.tar.gz
Algorithm Hash digest
SHA256 81037d3ad8652cecd6822018b778cf1382254d268f4ff62474da16d522bb82d0
MD5 1f259523529abc32908422965ee362cc
BLAKE2b-256 64af8b42e6386d1ece43ebd20ba192118973d39b0b22dc7aa66da1cf9db85438

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-7.3.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.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2b794552f5a14c38174746224c2a44eb4cd6334760687aa77c02d950707c181a
MD5 9c82df096868fb7de907e5105014f518
BLAKE2b-256 66fc447917e7fa3b8d08e8be4bd8cf7763c909493dcb57b5e81b42cbddf287f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e8fe9bfcd3294966cf817c7437270118f0acc3b90bee931db7ad0c6447d31c1
MD5 ada25c735c2cc29c063a21005c4cb04e
BLAKE2b-256 f66be3b296e14c685cd349867cd227b48632369b3240e0119ab915113cd5e3ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccce00e08153abbaa1493bcee5919a391df5f595851589b8a9e54ec259755ca7
MD5 cb3221a31ee8a83b22b7a787c35a5b6d
BLAKE2b-256 1bce3f856f78a3b57cade3444f9282e3841eb2ce2b425773a45be03ff186457c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.3.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a5c3eb4e78973036b5d27baca56936e8c5d6de663a17483ed3a1dec5f658cb8
MD5 99baf431df85294c6cc77a2a7af268e5
BLAKE2b-256 4b20fb32473c2170388b6c55cc40b18645d91a9ff4b2334449a50b35e7e262b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-7.3.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e9c013de4512580c14252e168dc4eb97eb67e6811f5f0da341d506ae10090ff9
MD5 22ed7a09c43709f47be7bad491c54fbe
BLAKE2b-256 b2915fbca5af39a9d81321aa71a0799dfa5f749e096a7e116333ab8218ccf80c

See more details on using hashes here.

Provenance

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