Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Sengol

Signed, offline-verifiable evidence for AI agents in regulated institutions.

Sengol evaluates every agent response against a ControlBook (a regulation expressed as configuration), gates deployments in CI, and writes each verdict as an HMAC-signed, hash-chained, Ed25519-countersigned record. An auditor verifies the exported evidence pack months later, on a laptop, without Sengol: the gate verdict and the audit record are the same signed object.

Sengol is self-hosted and single-tenant: one install is one tenant, inside your own network. Nothing leaves it.

Regulations arrive as configuration: OSFI E-23, FINTRAC, PIPEDA, SR 11-7, EU AI Act, GDPR, HIPAA, NIST AI RMF, ISO 42001 and more, 29 cataloged total in sengol/policies/catalog.yaml; a custom internal policy is one more entry.

Fifteen-minute quickstart

make keys          # Ed25519 evidence signing key into .env
make demo          # Postgres + API + Console, seeded with a five-agent demo fleet, the OSFI E-23 ControlBook and a review queue
open http://localhost:8000
sengol gate --config sengol.yaml                      # verdict = signed record
sengol export --agent rag-advisor-001 --out pack.zip
# Published on PyPI (see docs/evidence/offline-verification.mdx):
pip install "sengol-verify>=2.1.0"
sengol-verify pack.zip --trusted-key "<key_id>=<appliance-key.pem>"   # verify without Sengol
# <key_id> and the Ed25519 public key come from the operator, not from pack.zip. Without
# --trusted-key the countersignature step is UNVERIFIABLE and the exit code is 3
# (see docs/evidence/offline-verification.mdx).

The full walk-through, Entra ID and SCIM setup, and the operator references are in docs/ (quickstart.mdx first). Product scope is in PRODUCT.md; current state in STATUS.md.

Licence

Sengol 2.0 is proprietary software. A signed licence file (SENGOL_LICENSE_FILE) is verified offline at boot against the public keys in sengol/governance/trusted_keys/; the API and sengol worker run refuse to start without one. The sengol CLI is otherwise an API client and needs no local licence. There is no free tier. A lapsed licence never costs access to evidence: export and verification keep working, including with the separate sengol-verify. Fourteen-day trials and licences are issued at https://sengol.io/signup.html.

A build trusts only the anchors it ships. From the first release carrying the 2026-09-prod anchor, production licences verify; releases cut before it have an empty trusted_keys/MANIFEST.json and verify nothing. Check STATUS.md for the release you are installing.

The verifier, sengol-verify, is Apache-2.0 and has no dependency on this package.

Development

uv sync --all-extras, then uv run pytest --timeout=60. Tests marked postgres need a live database (docker compose up postgres). Invariants and review rules are in AGENTS.md; session rules in CLAUDE.md.

Metadata

Release files for sengol 2.0.1a21

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

Source distribution (sdist)

Source distribution for sengol 2.0.1a21
File Size Uploaded Provenance
sengol-2.0.1a21.tar.gz 13.5 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for sengol 2.0.1a21
File Interpreter ABI Platform
sengol-2.0.1a21-py3-none-any.whl Python 3 none any Details

Total release size: 16.5 MB

Release files / sengol-2.0.1a21.tar.gz

Download URL sengol-2.0.1a21.tar.gz
Size 13.5 MB
Tags Source
SHA-256 checksum
How to use checksums
8a1e33776b6f704e9efbaba7a3a2bcfb0b13e9e60cdedc065eef41b3a9ef5a85
BLAKE2b-256 checksum
How to use checksums
100d608fb9e95b54ef0435a5d0a5d7b9ad9f50edd5ef6efc0b13e2aa192ac488
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / sengol-2.0.1a21-py3-none-any.whl

Download URL sengol-2.0.1a21-py3-none-any.whl
Size 3.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d21aa7e58c7f9fbdb51576fb27a63b6b7414d984cdc109cc9376a00ef0991042
BLAKE2b-256 checksum
How to use checksums
619ab6d8990dbb650c2201c0602a07fd9cca279000a74c17763a6ce00c3e4840
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for sengol 2.0.1a21

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.

Release history Release notifications | RSS feed

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