SPIFFE/SPIRE bridge with TIBET provenance — your server thinks it's talking to SPIRE, but gets auditable trust
Project description
tibet-spiffe
SPIFFE/SPIRE Bridge with TIBET Provenance — your server thinks it's talking to SPIRE, but gets auditable trust.
Part of the TIBET protocol suite by Humotica AI Lab.
The Problem
SPIFFE/SPIRE tells you WHO a workload is. But not WHAT it did, or WHY.
When relay station 3 gets compromised, SPIRE says "yes, this is relay-3." But it can't tell you that relay-3 modified a drone command, changed a payment amount, or poisoned an AI pipeline.
The Solution
tibet-spiffe bridges SPIFFE identities with TIBET provenance:
| SPIFFE/SPIRE | tibet-spiffe adds |
|---|---|
| Workload identity (SVID) | + TIBET provenance chain |
| Node attestation | + Full audit trail |
| SVID rotation | + Rotation history with intent |
| Federation | + Cross-domain trust scoring |
| Trust domain | + FIR/A behavioral trust |
Your existing infrastructure sees standard SPIFFE IDs. TIBET adds the provenance layer underneath.
Install
pip install tibet-spiffe
Quick Start
from tibet_spiffe import AttestationEngine
engine = AttestationEngine(trust_domain="humotica.com")
# Node attestation (like SPIRE node-attestor)
node = engine.attest_node("relay-3", trust_score=0.8)
print(node.svid.spiffe_id) # spiffe://humotica.com/node/relay-3
# Workload attestation (like SPIRE workload-attestor)
api = engine.attest_workload("api-server", node_svid=node.svid)
print(api.svid.spiffe_id) # spiffe://humotica.com/workload/api-server
print(api.svid.jis_did) # jis:api-server
# Identity bridge (SPIFFE ↔ JIS)
did = engine.bridge.spiffe_to_did(api.svid.spiffe_id)
spiffe = engine.bridge.did_to_spiffe(did)
# Full audit trail
for token in engine.audit_trail():
print(f"[{token['action']}] {token['erachter']['intent']}")
CLI
# Interactive demo
tibet-spiffe demo
# Attest a node
tibet-spiffe attest-node relay-3 -d humotica.com -t 0.8
# Attest a workload
tibet-spiffe attest-workload api-server -d humotica.com -j
Architecture
┌─────────────────────────────────────────────────┐
│ Your Infrastructure │
│ (sees standard SPIFFE IDs) │
│ │
│ spiffe://humotica.com/workload/api-server │
│ spiffe://humotica.com/node/relay-3 │
│ │
├─────────────────────────────────────────────────┤
│ tibet-spiffe bridge │
│ │
│ SPIFFE ID ←→ JIS DID (bidirectional) │
│ SVID issuance = TIBET token │
│ SVID rotation = TIBET provenance chain │
│ Attestation = TIBET-audited │
│ Federation = trust-scored │
│ │
├─────────────────────────────────────────────────┤
│ TIBET Layer │
│ • ERIN: what was attested │
│ • ERAAN: what it depends on │
│ • EROMHEEN: where it happened │
│ • ERACHTER: why it was needed │
└─────────────────────────────────────────────────┘
Integration with tibet-workload
from tibet_spiffe import AttestationEngine
from tibet_workload import WorkloadEngine
spiffe = AttestationEngine(trust_domain="humotica.com")
workload = WorkloadEngine()
workload.connect_spiffe(spiffe) # Link workload steps to SPIFFE SVIDs
IETF Drafts
License
MIT — Humotica AI Lab 2025-2026
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tibet_spiffe-0.1.0.tar.gz.
File metadata
- Download URL: tibet_spiffe-0.1.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e96533d6a9cb1029c6b5612ddc70758ee81a8ecf8ddd156b8b77259cc47fb955
|
|
| MD5 |
cd1294df650163a5cdbb93c198e10425
|
|
| BLAKE2b-256 |
13735677818d9b4ca5f937cb72c1ad03ec15105894094c4ba2f041bcb79e3503
|
File details
Details for the file tibet_spiffe-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tibet_spiffe-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7186cc5a101c2f60f0ee610994f7c6bae75305e377090201699807c0e6100ec8
|
|
| MD5 |
d7b9fe5eac55612b489e4e90014adb77
|
|
| BLAKE2b-256 |
a66e8bfde175cff16c13fd7ad6d6145ed14f930445b6444c1ac6ed8ad60c291d
|