Skip to main content

signAI

Runtime behavioral integrity monitoring for PyTorch models.

signAI adds a small monitoring layer around training and inference so you can detect suspicious model behavior in real time — without exposing model weights, raw inputs, or gradients. The production layer supports:

  • Local artifact mode with no server
  • Daemon mode (localhost:7731, auto-discovered by the SDK)
  • Self-hosted server mode
  • Air-gapped private deployment mode

What signAI detects

signAI monitors a model's behavioral fingerprint rather than its accuracy. It catches anomalies such as:

  • distribution shift in inputs or activations
  • gradient manipulation and targeted poisoning during training
  • unexpected output distribution changes at inference time

Detection is based on a conditional behavioral model (CBM): for each operating state S, signAI learns the expected behavioral response Z and flags deviations.

What is in this repo

  • signai/core/: research and scoring core
  • signai/core/extractors/: S/Z feature extractors for classifiers, LLMs, and custom models
  • signai/core/detectors/: detector registry (Mahalanobis, neural, association)
  • signai/client/: production SDK
  • signai_server/: standalone REST server for hosted and self-hosted scoring

Install

SDK only, local mode:

pip install signai

SDK plus server dependencies:

pip install "signai[server]"

SDK plus server plus Postgres support:

pip install "signai[server,postgres]"

For local development in this repo:

python -m venv .venv
.venv\Scripts\activate
pip install -e ".[server]"

Quick Start

Local mode (any classifier)

from signai import monitor

m = monitor.attach(model, num_classes=10)
m.calibrate(clean_loader, device="cuda", phase="inference", calib_batches=200)
m.save("./integrity.json")

Load and score:

m = monitor.load(model, artifact="./integrity.json", device="cuda")

for x, y in test_loader:
    result = m.score_inference(x, y)
    if result.flagged:
        route_to_fallback(x)

LLM / large model quick start

For models above 200M parameters or HuggingFace generative models, use LLMExtractor and IntegrityMonitor directly:

from signai import IntegrityMonitor, LLMExtractor

extractor = LLMExtractor(llm)
m = IntegrityMonitor(llm, num_classes=None, extractor=extractor, detector_kind="v1")
m.calibrate_inference(clean_loader, calib_batches=200, device="cuda")
m.export_json("./integrity_llm.json")

Score LLM inference:

m = IntegrityMonitor(llm, num_classes=None, extractor=LLMExtractor(llm), detector_kind="v1")
m.import_json("./integrity_llm.json")

for batch in eval_loader:
    result = m.score_input(batch["input_ids"], None, device="cuda")

Remote mode

Start the server:

signai-server serve --host 0.0.0.0 --port 8000 --storage ./artifacts

Connect the SDK:

from signai import monitor

m = monitor.attach(
    model,
    num_classes=10,
    endpoint="http://localhost:8000",
    api_key="",
    monitor_id="demo-model",
    device="cuda",
)
m.calibrate(clean_loader, device="cuda", phase="inference", calib_batches=200)
m.save("./integrity.json")

Detector Kinds

signAI ships three detector algorithms. Choose by setting detector_kind:

Kind Algorithm Best for
"v1" Conditional Mahalanobis (sklearn) general purpose; fast; no GPU required
"nn" Neural conditional monitor complex activation geometry; higher accuracy
"assoc" Blockwise association neural monitor high-dimensional behavioral spaces

Use v1 as the default. Use nn or assoc when you need finer discrimination on complex models.

from signai import IntegrityMonitor, ClassificationExtractor

# Neural detector
m = IntegrityMonitor(
    model,
    num_classes=10,
    extractor=ClassificationExtractor(model),
    detector_kind="nn",
)

Extractor Kinds

signAI uses an extractor plugin system to support different model types. The right extractor is auto-selected when you use monitor.attach():

Extractor Auto-selected when Description
ClassificationExtractor ≤200M params, classification CNN/ViT classifier; tracks gradient geometry and activation depth
LLMExtractor >200M params or HF generative Per-module L2 norm delta tracking; constant memory

To override auto-selection:

from signai import IntegrityMonitor, LLMExtractor

# Force LLMExtractor on a model below the size threshold
m = IntegrityMonitor(model, extractor=LLMExtractor(model), detector_kind="v1")

To implement a custom extractor for a novel architecture:

from signai import SignatureExtractorBase
import numpy as np

class MyExtractor(SignatureExtractorBase):
    def prepare(self, example_batch): ...
    def reset_state(self): ...
    def extract_training(self, logits, loss) -> tuple[np.ndarray, np.ndarray]: ...
    def extract_inference(self, x, y, device="cpu", use_sensitivity=True) -> tuple[np.ndarray, np.ndarray]: ...

Deployment Modes

1. Local artifact

m = monitor.load(model, artifact="./integrity.json")

2. Daemon (localhost:7731)

The SDK auto-discovers a running signai-server on localhost:7731. No endpoint config needed:

m = monitor.attach(model, num_classes=10)  # connects to daemon if running

3. Self-hosted

m = monitor.load(
    model,
    endpoint="http://signai.internal:8000",
    api_key="...",
    monitor_id="my-model",
)

4. Air-gapped

m = monitor.load(
    model,
    endpoint="http://10.0.1.5:8000",
    api_key="...",
    monitor_id="my-model",
)

Training Loop Integration

First calibrate for the training phase — optimizer and criterion are required:

from signai import monitor
import torch

optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.CrossEntropyLoss()

m = monitor.attach(model, num_classes=10)
m.calibrate(
    train_loader,
    device="cpu",
    phase="training",
    optimizer=optimizer,
    criterion=criterion,
)
m.save("./integrity_train.json")

Then score each training step after optimizer.step():

m = monitor.load(model, artifact="./integrity_train.json", device="cpu")

for x, y in train_loader:
    optimizer.zero_grad()
    logits = model(x)
    loss = criterion(logits, y)
    loss.backward()
    optimizer.step()

    result = m.score_training(logits, loss)
    if result.flagged:
        quarantine_update(result)

Inference Loop Integration

from signai import monitor

m = monitor.load(model, artifact="./integrity.json", device="cuda")

for x, y in test_loader:
    result = m.score_inference(x, y)
    if result.flagged:
        route_to_fallback(x)

Public API

Top-level exports from signai:

Symbol Description
monitor.attach(model, num_classes, ...) Create a new monitor
monitor.load(model, artifact, ...) Load from artifact or remote
Monitor Monitor class with calibrate, save, score_inference, score_training
MonitorResult Score result dataclass
IntegrityMonitor Advanced: unified monitor with extractor + detector_kind params
SignatureExtractorBase Advanced: ABC for custom extractor plugins
ClassificationExtractor Classifier extractor (CNN, ViT, HF classification)
LLMExtractor LLM extractor (generative transformers, >200M param models)

Run The Server

CLI

signai-server serve \
  --host 0.0.0.0 \
  --port 8000 \
  --storage ./artifacts \
  --store-backend file

Shortcut through the main CLI:

signai serve --host 0.0.0.0 --port 8000 --storage ./artifacts

Docker

docker build -t signai .
docker run -p 8000:8000 -v %cd%\artifacts:/data signai

docker-compose

docker compose up --build

Licensing

All usage requires a license key. A bundled trial key is active on fresh installs — no purchase needed to get started.

signai apply-key sk_...    # activate or renew a key
signai status              # show seat, plan, features, expiry, usage

Visit https://umarjanjua.github.io/signai/ to purchase or renew.

API Summary

Server endpoints:

  • GET /health
  • POST /v1/artifacts
  • GET /v1/artifacts/{monitor_id}
  • DELETE /v1/artifacts/{monitor_id}
  • POST /v1/score/inference
  • POST /v1/score/training
  • POST /v1/score/batch
  • POST /v1/calibrate/start
  • POST /v1/calibrate/push
  • POST /v1/calibrate/commit
  • GET /v1/history/{monitor_id}
  • POST /v1/notify/configure
  • GET /v1/audit/export
  • GET /v1/status
  • GET /v1/monitors
  • POST /v1/license

Model Support

Framework Status
PyTorch (CNN, ViT, ResNet, etc.) ✅ Supported
HuggingFace Transformers (BERT, GPT, LLaMA, etc.) ✅ Supported
Custom PyTorch architectures via extractor plugin ✅ Supported
TensorFlow / Keras Planned
JAX / Flax Planned
ONNX Planned
XGBoost / LightGBM / CatBoost Planned
PyG / DGL (graph neural networks) Planned

Privacy Model

signAI is built so that privacy is enforced structurally:

  • feature extraction runs on the customer machine
  • remote scoring receives only s and z float vectors (compact; typically <100 bytes per score call)
  • the server discards raw vectors after scoring
  • only {ts, score, flagged, phase} is stored in history
  • model weights, raw inputs, and gradients never leave the customer machine

Documentation

Development

Run the targeted test suite:

python -m pytest tests\test_imports.py tests\test_local_backend.py tests\test_monitor.py tests\test_server.py

Run the end-to-end and security test suite (isolated — does not touch ~/.signai):

python scripts\test_e2e.py

Licensing System

signAI uses Ed25519 asymmetric key signing. Keys are offline-verifiable — no network call on validation.

Key format: sk_<base64url(json_payload)>.<base64url(ed25519_sig)>

Payload fields: seat_id, email, plan, features[], model_limit, history_days, issued_at, expires_at

Enforcement: two checkpoints — signai/licensing.py (SDK client) and signai_server/usage.py (daemon). Both embed the public key as a hardcoded constant; the SIGNAI_PUBLIC_KEY_B64 env var is intentionally ignored (P0 bypass fix).

Clock integrity: both checkpoints carry a monotonic date ratchet (last_checked / last_validated). The effective date is max(today, last_recorded) — setting the system clock backwards has no effect on trial or key expiry.

Trial: 3 days from first install, tracked in ~/.signai/install.json.

Key Generation

Keys are generated via GitHub Actions only — the private key never leaves the keygen environment:

Actions → Generate License Key → Run workflow

For local testing with an ephemeral keypair:

python scripts\keygen.py genkeypair
python scripts\keygen.py generate --seat alice@acme.com --email alice@acme.com --plan individual --duration-days 30
python scripts\keygen.py verify sk_...

SIGNAI_PRIVATE_KEY_B64 must be set for generate. Never commit it.

Fulfillment

Automated: fulfill-orders.yml polls Stripe every 5 minutes, generates keys, and emails customers.

Manual fallback: see FULFILLMENT.md.

Stripe setup (one-time):

set STRIPE_SECRET_KEY=sk_live_...
python scripts\setup_stripe.py --update-index

GitHub Secrets required in the keygen environment: STRIPE_SECRET_KEY, SIGNAI_PRIVATE_KEY_B64, SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, NOTIFY_EMAIL. Add the STRIPE_PAYMENT_LINK_IDS environment variable printed by the setup script.

Release

Wheels are built via Cython + cibuildwheel on GitHub Actions — Python source is compiled into .so/.pyd binaries before publishing to PyPI. No source code ships in the wheel.

Tag a release: git tag v0.x.y && git push origin v0.x.y

The publish.yml workflow handles PyPI upload and Docker push to GHCR automatically.

License

Commercial license required. The private key and source code are confidential — do not share outside the team.

Metadata

Release files for signai-sdk 0.4.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for signai-sdk 0.4.16
File Actions
signai_sdk-0.4.16-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for signai_sdk-0.4.16-cp313-cp313-win_amd64.whl
signai_sdk-0.4.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for signai_sdk-0.4.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
signai_sdk-0.4.16-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for signai_sdk-0.4.16-cp313-cp313-macosx_11_0_arm64.whl
signai_sdk-0.4.16-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details for signai_sdk-0.4.16-cp313-cp313-macosx_10_13_x86_64.whl
signai_sdk-0.4.16-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for signai_sdk-0.4.16-cp312-cp312-win_amd64.whl
signai_sdk-0.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for signai_sdk-0.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
signai_sdk-0.4.16-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for signai_sdk-0.4.16-cp312-cp312-macosx_11_0_arm64.whl
signai_sdk-0.4.16-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details for signai_sdk-0.4.16-cp312-cp312-macosx_10_13_x86_64.whl
signai_sdk-0.4.16-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for signai_sdk-0.4.16-cp311-cp311-win_amd64.whl
signai_sdk-0.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for signai_sdk-0.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
signai_sdk-0.4.16-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for signai_sdk-0.4.16-cp311-cp311-macosx_11_0_arm64.whl
signai_sdk-0.4.16-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details for signai_sdk-0.4.16-cp311-cp311-macosx_10_9_x86_64.whl
signai_sdk-0.4.16-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for signai_sdk-0.4.16-cp310-cp310-win_amd64.whl
signai_sdk-0.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for signai_sdk-0.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
signai_sdk-0.4.16-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for signai_sdk-0.4.16-cp310-cp310-macosx_11_0_arm64.whl
signai_sdk-0.4.16-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details for signai_sdk-0.4.16-cp310-cp310-macosx_10_9_x86_64.whl

Total release size: 129.2 MB

Release files / signai_sdk-0.4.16-cp313-cp313-win_amd64.whl

Download URL signai_sdk-0.4.16-cp313-cp313-win_amd64.whl
Size 5.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
14443477c080249ebc929c1dbe657269ba1529b8df34ad61bc38a41307de11ed
BLAKE2b-256 checksum
How to use checksums
c0298f4b869dfd4907619e3bf933e04c15584d453a295cf4f6cda79d41b39895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL signai_sdk-0.4.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 15.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f8e35f5157324c7a9ece7430992250e94b999ed3534c896483c7da1713699a9b
BLAKE2b-256 checksum
How to use checksums
8a2c54b27df4d1ca7f0318e4c3c6db3e7f6241de7c8fd7917f09d8ba5c39402a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp313-cp313-macosx_11_0_arm64.whl

Download URL signai_sdk-0.4.16-cp313-cp313-macosx_11_0_arm64.whl
Size 5.7 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
87bbddac02a631307077ff48770b1046e2d2e066b03310245626ea42c7ae4cea
BLAKE2b-256 checksum
How to use checksums
93917a32c37027ea2d3a9c6f403257e49d136ddf4793e35cdd5fe78e4cdd11d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp313-cp313-macosx_10_13_x86_64.whl

Download URL signai_sdk-0.4.16-cp313-cp313-macosx_10_13_x86_64.whl
Size 5.7 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
718d0b149ce531c0872b7962a8c7ea8694e7abb707ee0463ecc04727d16d4979
BLAKE2b-256 checksum
How to use checksums
75cd264f635ca6c3572f856122691fb12d8d00a01e13195a8e7352ef2848f16f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp312-cp312-win_amd64.whl

Download URL signai_sdk-0.4.16-cp312-cp312-win_amd64.whl
Size 5.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a5a2989f8a43ac4cf3e840c31d3d77ac8f2da2bb525c23716120c8eebd1fe664
BLAKE2b-256 checksum
How to use checksums
20a30bd6f2f5d51d1d596c69a4aaa650270c7c228951d14852e88201bea13e93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL signai_sdk-0.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 15.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7e76a031a65468e7279c1809fa6e8b030cfcd83e2eb10e75ded388f3ddd2d32b
BLAKE2b-256 checksum
How to use checksums
b18b409cbc41be91d0012882825c8516e1870c5563b60e917c5adc6c536ec13e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp312-cp312-macosx_11_0_arm64.whl

Download URL signai_sdk-0.4.16-cp312-cp312-macosx_11_0_arm64.whl
Size 5.7 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bb4772741c0587e881e07b0f0276f9df97679a63f503901f9996ab722710eb19
BLAKE2b-256 checksum
How to use checksums
9b2f18a1c4b4ab1ebaf433d8c81dc94c2ed2f5b4499fb73ffc9749ed07aa7504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp312-cp312-macosx_10_13_x86_64.whl

Download URL signai_sdk-0.4.16-cp312-cp312-macosx_10_13_x86_64.whl
Size 5.7 MB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
fd12fa9c84483ec0d73807aaaacbd1999f6389153ff026f86b84516036ac653c
BLAKE2b-256 checksum
How to use checksums
e6f1a954e29c8a9870c837a326b37b5444746ec647b1d1642d6b98471d04064b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp311-cp311-win_amd64.whl

Download URL signai_sdk-0.4.16-cp311-cp311-win_amd64.whl
Size 5.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a7712df3b7ebd575bef81727c1499d5e071eef9872fd0ec619ca51f7f1c74597
BLAKE2b-256 checksum
How to use checksums
9f0906b5f23492d9f7ad56dfb8765475b044e8dc827fe80cefafb067e02eb297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL signai_sdk-0.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 15.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a1179c695a76852799aaa5a9bc73822132b5792448997b119b844eb22be8a016
BLAKE2b-256 checksum
How to use checksums
638efc34de3328cf2f58e32d6582f0b5b7014943223484b66e5973b29bb3db99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp311-cp311-macosx_11_0_arm64.whl

Download URL signai_sdk-0.4.16-cp311-cp311-macosx_11_0_arm64.whl
Size 5.7 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
82d79332dc99b4795550772c754b27265f4fc27c91761c3f8ec4796405c8fdd5
BLAKE2b-256 checksum
How to use checksums
c2c691ac32e053a7dd52c7f263453a7965c51828d97b73044fa46f268ff7b7a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp311-cp311-macosx_10_9_x86_64.whl

Download URL signai_sdk-0.4.16-cp311-cp311-macosx_10_9_x86_64.whl
Size 5.7 MB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
3ca352243ddd41bd98cb010527d1a37dd3ed2ccb33a790508c012d98fdec50cc
BLAKE2b-256 checksum
How to use checksums
9be3de3871a83a992713b45697d9381212af7cdb72c29d7967e309e22a1b1bf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp310-cp310-win_amd64.whl

Download URL signai_sdk-0.4.16-cp310-cp310-win_amd64.whl
Size 5.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
de84f646fc6d5387bfa29eeb145fac21dc170a1258d5893924ab0b1690e9bd49
BLAKE2b-256 checksum
How to use checksums
31c8e31759b9895283bb5947bd2873fa3319d501482f7a7166821101d5a928b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL signai_sdk-0.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 14.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
068ab7159d8c5424ee00f3c0881eb6d2d2a252b2c4f737b5b0bee501f7c0bc21
BLAKE2b-256 checksum
How to use checksums
d8a4fbd3e85cf6920963a07548bbd3f0e3fee206d466016f4471616034ea6389
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp310-cp310-macosx_11_0_arm64.whl

Download URL signai_sdk-0.4.16-cp310-cp310-macosx_11_0_arm64.whl
Size 5.7 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a8126db58755bc5f84b89cf5f1bc1b345200810bcfd4f26b04414679b201277d
BLAKE2b-256 checksum
How to use checksums
6aa9533606a8c81ce6e1d5e9c155251d09ce1d8e4549957eed782437a0a15a56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / signai_sdk-0.4.16-cp310-cp310-macosx_10_9_x86_64.whl

Download URL signai_sdk-0.4.16-cp310-cp310-macosx_10_9_x86_64.whl
Size 5.7 MB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
aff6dfdbc812515e9aeb571b6ed84dafce9572c98c9e2802b704f71b7cd12906
BLAKE2b-256 checksum
How to use checksums
d76a90ef423cc26d4d657d510214139c8d8f4eb6aa0f906b3acff4c8daf41a65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for signai-sdk 0.4.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page