Skip to main content

Digital Twin Synchronicity Guard — deterministic sync verification between physical and virtual systems with TIBET provenance

Project description

tibet-twin — Digital Twin Synchronicity Guard

No action without proven synchronization.

Every deviation is an alert. Every decision is a TIBET token.

tibet-twin ensures physical and virtual systems are synchronized before allowing any action. When a digital twin's view of reality diverges from actual sensor data, tibet-twin blocks the action and creates a TIBET audit trail.

The Deadly Scenario

Factories and ports build digital twins — virtual 3D copies of physical machines. But there's always latency between the physical sensor and the virtual model.

[Physical Crane]                    [Digital Twin]
  sensor: FAULT t=14:32:01.003       status: OK t=14:32:00.500
        |                                  |
        └──── tibet-twin compares ─────────┘
              Δt = 503ms, status ≠ sync
              → BLOCK action
              → TIBET token: audit trail

If the digital twin authorizes a "move left" command while the physical crane has a fault... people die.

Install

pip install tibet-twin

Quick Start

from tibet_twin import SyncGuard, PhysicalState, TwinState

guard = SyncGuard(max_drift_ms=200)  # Port crane: max 200ms drift

# Physical crane reports: FAULT
guard.update_physical("crane-01", PhysicalState(
    device_id="crane-01",
    timestamp="2026-02-27T14:32:01.003+00:00",
    values={"position_x": 12.5, "load_kg": 2500.0},
    status="fault",
))

# Digital twin still thinks: OK
guard.update_twin("crane-01", TwinState(
    device_id="crane-01",
    timestamp="2026-02-27T14:32:00.500+00:00",
    values={"position_x": 12.5, "load_kg": 2500.0},
    status="operational",
))

decision = guard.check("crane-01", intent="move_left")
print(decision.blocked)  # True
print(decision.reason)   # "BLOCKED: status mismatch: physical=fault, twin=operational"

Demo

tibet-twin demo        # Interactive crane safety demo
tibet-twin info        # The deadly scenario explained
tibet-twin profiles    # Industry profiles with sync thresholds

Why TIBET Is Unique Here

Other synchronization systems check: "Is the data there?"

tibet-twin checks:

  1. Is it the right data? (value comparison)
  2. From the right device? (JIS identity)
  3. At the right time? (temporal drift)
  4. Does the intent match the state? (TIBET provenance)

All four must pass. One failure = BLOCK.

Industry Profiles

Profile Sector Max Drift Safety Critical Example Assets
port Maritime 200ms Yes Container cranes, AGVs
manufacturing Factory 100ms Yes CNC, robot arms (KUKA/ABB)
energy Power Grid 500ms Yes Wind turbines, substations
steel Heavy Industry 300ms Yes Blast furnaces, hot strip mills
semiconductor Chip Fab 50ms Yes ASML EUV, etch tools
building Smart Building 5000ms No HVAC, fire detection
tibet-twin profiles --json

TIBET Provenance

Every sync decision creates a TIBET token:

Layer Content
ERIN Decision (allowed/blocked, drift, value deltas)
ERAAN Device JIS identity, parent tokens
EROMHEEN Guard node, timestamp, environment
ERACHTER Intent (what action was attempted), safety flag

The token chain is an immutable safety audit trail. When an inspector asks "was the twin in sync when the crane moved?" — the TIBET chain proves it.

Python API

from tibet_twin import SyncGuard, PhysicalState, TwinState

guard = SyncGuard(
    max_drift_ms=200,
    value_tolerances={
        "crane-01": {"position_x": 0.5, "load_kg": 100.0},
    },
)

# Update states continuously
guard.update_physical("crane-01", PhysicalState(...))
guard.update_twin("crane-01", TwinState(...))

# Check before every action
decision = guard.check("crane-01", intent="move_left")
if decision.blocked:
    handle_block(decision)
else:
    execute_action()

# Audit trail
for token in guard.export_audit():
    print(token["erin"]["details"]["reason"])

# Status
print(guard.status())
# {'checks': 150, 'allowed': 142, 'blocked': 8, 'block_rate': 5.3}

Part of the TIBET ecosystem

Package Purpose
tibet-core Protocol core
tibet-y2k38 Y2K38 Time Bridge
tibet-pol Process Integrity Checker
tibet-pqc Post-Quantum Crypto Router
tibet-overlay Identity Overlay
tibet-twin Digital Twin Guard

License

MIT — Humotica AI Lab 2025-2026

Authors

Credits

Designed by Jasper van de Meent. Built by Jasper and Root AI as part of HumoticaOS.


Stack-positie: Groep safety · Bootstrap = OSAPI-handshake naar tibet + jis (fail → snaft-rule + tibet-pol-rapport) · ← tibet-workload · tibet-pol → · See STACK.md · See demo/golden-path/ for the spine end-to-end.

Enterprise

For private hub hosting, SLA support, custom integrations, or compliance guidance:

Enterprise enterprise@humotica.com
Support support@humotica.com
Security security@humotica.com

See ENTERPRISE.md for details.

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

tibet_twin-0.1.1.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

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

tibet_twin-0.1.1-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file tibet_twin-0.1.1.tar.gz.

File metadata

  • Download URL: tibet_twin-0.1.1.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_twin-0.1.1.tar.gz
Algorithm Hash digest
SHA256 030862d4733f47c47d67ec303b9d0e9abba0d456fff8272b87a8e4c2536dfb5a
MD5 39aa7fd47e97db44669165b35ab2ae7c
BLAKE2b-256 09a9a9d39bcdb668470a05ae50e5f6faa9f0c57a6e240d0cd94e8e4e6b18c34a

See more details on using hashes here.

File details

Details for the file tibet_twin-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tibet_twin-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_twin-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f6dd603fa0286d2c860128b3ac7608ab3435ce9794c2144c712292eb85a91817
MD5 5c0f73cdde054ee9bae3e55e2ca45b21
BLAKE2b-256 748e579081a58782c349ecc863e507d5d99a16ba642bb803281927058538a3e1

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