Skip to main content

Python SDK for QuantaWatch — AI agent security gateway

Project description

QuantaWatch Python SDK

License

Python SDK for QuantaWatch — the post-quantum security layer for AI agents.

Route your AI SDK traffic through the QuantaWatch gateway for threat detection, policy enforcement, and tamper-evident audit logging — all signed with post-quantum cryptography (ML-DSA-65).

Installation

Not yet published to PyPI. Install from source until the first release.

git clone https://github.com/dyber-pqc/QuantaWatch.git
pip install -e QuantaWatch/sdk/python

Requirements: Python 3.10+

Quick Start

Option 1: Protect an existing AI client (recommended)

The protect() wrapper transparently routes your existing SDK's HTTP traffic through the gateway. No code changes needed beyond the wrap call.

from anthropic import Anthropic
from quantawatch import protect

# One line — all API calls now flow through QuantaWatch
client = protect(Anthropic(), gateway_url="http://localhost:9090")

# Use the client exactly as before
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)

Works with any httpx-based SDK, including OpenAI:

from openai import OpenAI
from quantawatch import protect

client = protect(OpenAI(), gateway_url="http://localhost:9090")
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}],
)

Option 2: Use the gateway client directly

The QuantaWatchClient gives you direct access to the gateway proxy and admin API.

import asyncio
from quantawatch import QuantaWatchClient

async def main():
    async with QuantaWatchClient() as qw:
        # Proxy a raw request through the gateway
        response = await qw.proxy_request(
            "POST",
            "/v1/messages",
            headers={
                "x-api-key": "sk-ant-...",
                "anthropic-version": "2023-06-01",
                "Content-Type": "application/json",
            },
            body=b'{"model":"claude-sonnet-4-20250514","max_tokens":1024,"messages":[{"role":"user","content":"Hello!"}]}',
        )
        print(response.status_code, response.text)

        # Query the admin API
        sessions = await qw.get_sessions()
        stats = await qw.get_stats()
        audit = await qw.get_audit_entries(limit=10)

        # Verify audit chain integrity
        result = await qw.verify_audit_chain()
        print("Audit chain valid:", result.get("valid"))

asyncio.run(main())

API Reference

protect(client, *, gateway_url="http://localhost:9090")

Wraps an AI SDK client so its HTTP traffic flows through the QuantaWatch gateway.

Parameter Type Default Description
client Any An AI SDK client (Anthropic, OpenAI, or any httpx-based client)
gateway_url str http://localhost:9090 URL of the QuantaWatch gateway

Returns a proxy object that behaves identically to the original client.

QuantaWatchClient

Async client for the QuantaWatch gateway and admin APIs.

QuantaWatchClient(
    gateway_url="http://localhost:9090",
    admin_url="http://localhost:9091",
    timeout=30.0,
)
Method Description
proxy_request(method, path, headers, body) Proxy an HTTP request through the gateway
get_sessions() List all gateway sessions
get_audit_entries(limit=100) Fetch recent audit log entries
get_stats() Fetch aggregate gateway statistics
verify_audit_chain() Verify cryptographic audit chain integrity
close() Close the underlying HTTP client

Types

All response types are Pydantic models:

  • SessionInfo — Gateway session with agent name, token count, PQC key fingerprint
  • AuditEntry — Signed audit log entry with sequence number and hash chain
  • GatewayStats — Aggregate stats (sessions, requests, threats, audit entries)
  • ThreatAssessment — Threat analysis result with severity and blocked status
  • DetectedThreat — Individual threat with category, severity, confidence, and pattern name

Prerequisites

The SDK requires a running QuantaWatch gateway. Start one with Docker:

git clone https://github.com/dyber-pqc/QuantaWatch.git
cd QuantaWatch
cp quantawatch.yaml.example quantawatch.yaml
export ANTHROPIC_API_KEY=sk-ant-...
docker compose up -d

Or build from source:

cargo run -p qw-gateway -- quantawatch.yaml

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Type checking (if mypy installed)
mypy quantawatch/

License

Apache License 2.0

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quantawatch-0.1.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quantawatch-0.1.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file quantawatch-0.1.0.tar.gz.

File metadata

  • Download URL: quantawatch-0.1.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for quantawatch-0.1.0.tar.gz
Algorithm Hash digest
SHA256 81961042f9cb9f37623ee05cbfafe259e63a1cda6d726a15c304c383f889a544
MD5 79a86183f2012492161cab45a9105d4c
BLAKE2b-256 e49d84f8ad9abd057ab192f0863a401c401c8d42fdb726909ee732f3562c7370

See more details on using hashes here.

File details

Details for the file quantawatch-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: quantawatch-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for quantawatch-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37f4fdb51b41311ca06607d6fb4c62f41efcc28f1cb4b691f7bf7813186d6be4
MD5 4a0895325a29b0af0c47588a3192864c
BLAKE2b-256 2ab98d350fe18b880807d11e4f6ece1430ea500241206a2f5bf1edbc2072c050

See more details on using hashes here.

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