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

Uploaded Python 3Windows x86-64

ciris_verify-6.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-6.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-6.5.0-py3-none-macosx_10_12_x86_64.whl (5.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-6.5.0.tar.gz
Algorithm Hash digest
SHA256 e9eb7da218312e006faa016585be6b2fd2cbc87c2318877a6457b7d52e0ea437
MD5 f3bd5964f348ba0a692a7781cd7f369a
BLAKE2b-256 ef383782ae37d8a20c790cddfb3ab1e643fa097bada63e3118646b8bf446173e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-6.5.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-6.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7b778a9a777b385dfad0c33865b62917d22ddd764a3f303f557df30d7b2f6bef
MD5 00bd938e793b51d31d0d2685b8fdeb63
BLAKE2b-256 d5cc86dfca977b13e39e4bf4678422032db05eeca512d01d6580dbad9717e65e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-6.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8d15393accc67382479db1a8703eac32f4051892c0dcb137d3cb31df93996aa
MD5 0bf87858648fe28333b76a98004e2faa
BLAKE2b-256 aada622377e330fe45c80d7bf039ef78f0fd7fb987efb330f9c46fd213973211

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-6.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ffff9e159e197dedc9f3f101010c5c0528fac1240fa3bc4c7932a15fc4ff0b61
MD5 2b72e77a12737ae7bcd4d32099f47b77
BLAKE2b-256 61753cfb7016a6afa538bb420659853e01d861e39a8742206c0d48d8463ad5fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-6.5.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af9e0c8b523bc3a955a9ba3e423702eec97b00f8dc481e94c3415afd91740763
MD5 a36927a7e020ee1d68a727ccfce104fe
BLAKE2b-256 9e8da4f35f1cd1cdcd9109e960ea9f1cc34461522c1144ee552d088b09481f66

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-6.5.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 adee5dd0b1ddf5b3fa59d13c480f12528b839c9670a6917856f6669d8b1cee01
MD5 2ba22e49e2425089741c92b5e54f675d
BLAKE2b-256 60e828621a9ca2d9012e19ae257677ed4ba394f3fe88ed4240fbb451802550c2

See more details on using hashes here.

Provenance

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