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.10.0.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.10.0-py3-none-win_amd64.whl (6.0 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-2.10.0-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.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-2.10.0-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.10.0.tar.gz.

File metadata

  • Download URL: ciris_verify-2.10.0.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.10.0.tar.gz
Algorithm Hash digest
SHA256 d0c3d0c526984348526defeedc7451cb6c42f5da157d1035297d553f6b5dd8f2
MD5 122b24aedbfa49609604a861ad5e2743
BLAKE2b-256 dfb4eedfc1bc1adb3f35be320c98e62feaa60d8d680c83a054fe29353dd40469

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7dbfca3e599a19cadaa30dac3f9e899ceafb200ca9f6cbaa3863a041c7b75668
MD5 a43326e5703a52646a1701b63827c7e1
BLAKE2b-256 6497b4721431b75829e89fb570ad570395b79a60e79f6ae1802fecadb5f5a890

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.10.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a92e1c2d123ce9a80b03a6b19fd3ee591c91f3c77b2358e6012a744ec8f4b906
MD5 8891e3d0207f8f5cb88fc72ed3146b57
BLAKE2b-256 00d06d6894185fc389a9c92fed9a3c89ab7241af9eee947fb6a02cf2deecb259

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ffff2f0b3892583d727f18f9e84e2ef0f9850a6dd37539d29155da8819a680da
MD5 7a67f26a051d9e6845c68880bdc0bd7b
BLAKE2b-256 b115c4bb244ec1858387c14923c4d14a10570fbe600d2b141da3125ac8fbeb80

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.10.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e69ae1d6ba9dcc88fc5569a307b78829029813546296f6ca2d08be3099c02889
MD5 067a47c60b8866ce321051423ab8311e
BLAKE2b-256 024120cef06b865aa87885f5d3e7f5670297bab4499222e689b21fbd6fd76348

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-2.10.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2351e295292ff3bbe43147b6fdaba554eb351f9a14a9fec658da0546e7cbfe68
MD5 68cf41fb1e2e3565aa93f5ef49c606a5
BLAKE2b-256 6238e36aa64cc5ff064e27a46550096490d13d59961a20c58e74383e9a66c208

See more details on using hashes here.

Provenance

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