1. Five Regulations, One Facility
Consider a data center operator in Frankfurt. The facility draws 2.4 MW of IT load, runs 120 UPS battery packs, manages 847 hardware components across 40 racks, and operates 12,000 service accounts connecting BMS controllers, DCIM platforms, fire suppression systems, and SCADA interfaces.
By Q1 2027, this operator faces five EU regulatory obligations simultaneously:
| Regulation | Requirement | Deadline |
|---|---|---|
| EED Art. 12 | Annual reporting of PUE, WUE, waste heat recovery, renewable energy share | May 2024 (active) |
| EU Battery Regulation (2023/1542) | Digital Product Passports for industrial battery packs (UPS systems) | February 2027 |
| CSRD / ESRS | Auditable sustainability data: energy (E1), water (E3), waste (E5), supply chain (S2) | FY 2025+ (phased) |
| Cyber Resilience Act (CRA) | Hardware bills of materials with vulnerability tracking for connected products | 2027 (phased) |
| NIS-2 Directive | Cybersecurity risk management for essential services (data centers qualify) | October 2024 (active) |
And optionally, for operators participating in grid flexibility markets:
| Regulation | Requirement |
|---|---|
| FERC Order 2222 / EU CEP Art. 17 | Demand response event evidence for market settlement |
| EU CBAM / RED III | Carbon credit and REC provenance for sustainability claims |
Today, the compliance team manages these obligations with separate systems. The BMS produces thermal logs. The DCIM tracks inventory. SCADA records power consumption. The IAM platform manages credentials. The DR aggregator handles settlement. Each system has its own export format, its own retention policy, and its own definition of "audit trail."
The result is a compliance operation that scales linearly with the number of regulations. Every new requirement adds another spreadsheet, another quarterly export, another vendor relationship, and another system that an auditor must independently trust.
2. The Evidence Gap
The real problem is not data collection. Modern data centers are among the most instrumented facilities on earth. BMS sensors produce thousands of readings per minute. DCIM platforms track every component from commissioning to decommission. SCADA systems log power consumption at sub-second granularity.
The problem is that none of these systems produce independently verifiable evidence.
When an EED auditor reviews your PUE data, they are trusting that your BMS software reported the numbers accurately, that no one modified the database between measurement and export, and that the export tool itself did not introduce errors. If the DCIM database is altered -- whether by a bug, a migration script, or a deliberate edit -- there is no independent mechanism to detect the change.
This is the "actor is the record-keeper" problem. The same system that produces the data also stores, manages, and exports the evidence about that data. There is no separation between the thing being measured and the thing doing the measuring.
This is exactly the same gap that exists in AI governance (where the model provider is the record-keeper for inference logs), in financial compliance (where the trading platform is the record-keeper for transaction records), and in supply chain transparency (where the manufacturer is the record-keeper for provenance claims).
SWT3 was built to close this gap. It does not replace your BMS, DCIM, or SCADA systems. It sits alongside them and creates a parallel, tamper-evident record of every value they report.
3. One Witness, Every Domain
SWT3 is a cryptographic witness protocol. When your BMS reports a PUE reading, your integration code calls a witness method. The SDK computes a SHA-256 fingerprint of the reported values, timestamps the record, and transmits the witness anchor to a tamper-evident ledger. The anchor format is identical regardless of whether you are witnessing a thermal profile, a battery health snapshot, a curtailment event, or a credential rotation.
One SDK. One anchor format. One verification endpoint. Four namespaces covering every domain a data center operator needs:
| Namespace | Domain | Regulations Addressed |
|---|---|---|
HBOM | Hardware inventory, energy, water, thermal, supply chain | EED Art. 12, CSRD/ESRS E1/E3/E5/S2, CRA Art. 10 |
DPP | Digital Product Passports for batteries | EU Battery Regulation 2023/1542 |
ADR | Demand response, settlement, carbon credits | FERC 2222, EU CEP Art. 17, CBAM, RED III |
NHI | Non-human identity and credential governance | NIS-2, CRA (software identity), Zero Trust |
The convergence looks like this:
Five source systems. Five witness calls. Five anchors. One verification tool for the assessor. The anchor fingerprint is computed identically in every case: a SHA-256 hash of the tenant, procedure, reported values, and millisecond timestamp. If a single bit changes after the anchor is minted, the hash breaks, and the assessor knows it.
4. Energy and Water: EED Art. 12 and CSRD
EED Art. 12 requires data centers above 500 kW to report Power Usage Effectiveness (PUE) and Water Usage Effectiveness (WUE) annually. CSRD requires auditable sustainability data under ESRS E1 (climate/energy) and E3 (water). These are different regulations with different reporting timelines, but they draw from the same underlying measurements.
Today, most operators export a CSV from their BMS at the end of each reporting period. That CSV is the entire evidence chain. If the BMS database was modified at any point during the year, there is no way to detect it after the fact.
With SWT3, you witness each measurement at the moment it is taken:
from swt3_ai import Witness
witness = Witness(
tenant_id="datacenter-eu-fra1",
api_key="axm_...",
endpoint="https://sovereign.tenova.io/api/v1/witness"
)
# After each PUE measurement cycle (e.g., every 15 minutes)
witness.witness_power_usage(
total_facility_kw=2400.0,
it_load_kw=1800.0,
pue_x1000=1333 # PUE 1.333, integer to avoid floating-point drift
)
# After each WUE measurement cycle
witness.witness_water_consumption(
liters_consumed=12500.0,
wue_ratio_x1000=1800, # WUE 1.800
source_type="recycled"
)
Each call produces a witness anchor with procedure HBOM-PUE.1 or HBOM-WATER.1. At the end of the year, the assessor does not need to trust the BMS export. They can query the SWT3 ledger for all HBOM-PUE.1 anchors, verify each fingerprint independently, and reconstruct the facility's energy profile from tamper-evident records.
HBOM-PUE.1 anchor satisfies both EED Art. 12 (energy efficiency reporting) and CSRD ESRS-E1 (climate and energy disclosure). You witness the measurement once. Two regulatory obligations are evidenced by the same anchor. This is the core advantage of a unified evidence layer -- you stop duplicating work across frameworks.
Seasonal variance in PUE is expected and actually strengthens the evidence chain. A facility that reports PUE 1.33 in January and PUE 1.41 in August is more credible than one reporting a flat 1.35 year-round. The witness trail preserves the natural variation, which gives assessors confidence that the data reflects reality rather than a manufactured average.
5. Battery Passports: EU Battery Regulation
The EU Battery Regulation (2023/1542) requires Digital Product Passports for industrial batteries by February 2027. Data centers operate dozens to hundreds of UPS battery packs, each of which will need a traceable lifecycle record from commissioning through recycling. The DPP must include state of health (SoH), cycle count, capacity, and end-of-life disposition.
Most data center operators have never had to track individual battery health at this level of granularity. The BMS reports aggregate UPS status, but per-pack SoH histories are often lost during BMS upgrades, vendor transitions, or facility expansions.
SWT3's DPP namespace witnesses four lifecycle stages:
Stage 1: Commissioning
When a new battery pack is installed, witness its initial state:
# New UPS battery pack installed in rack B-14
witness.witness_battery_soh(
soh_percent=100.0,
cycle_count=0,
capacity_kwh=50.0
)
witness.witness_charge_cycle(
event_type="charge_complete",
energy_kwh=50.0,
peak_temp_c=28.5
)
Stage 2: Operational Monitoring
Periodic SoH snapshots create the health trajectory that the DPP requires:
# Quarterly SoH snapshot
witness.witness_battery_soh(
soh_percent=92.3,
cycle_count=1247,
capacity_kwh=48.6
)
Stage 3: Degradation Events
When a battery experiences accelerated degradation (thermal stress, deep discharge, or unexpected capacity loss), the event is witnessed with its cause:
# Cooling failure caused thermal stress event
witness.witness_degradation_event(
degradation_type="thermal_stress",
soh_delta_percent=0.8,
ambient_temp_c=42.0
)
Stage 4: End of Life
When a battery is decommissioned, the final SoH and disposition are recorded:
# Battery decommissioned, sent to certified recycler
witness.witness_end_of_life(
disposition_type="recycling",
handler_id="Umicore-BE-0471",
final_soh_percent=72.1
)
DPP-SOH.1, DPP-CYCLE.1, DPP-DEGRADE.1, and DPP-EOL.1 anchors for a single facility. Every anchor is independently verifiable. No vendor lock-in. No proprietary export format.
The February 2027 deadline is approaching. Operators who begin witnessing battery health now will have 12+ months of historical SoH data in their DPP evidence chain before the regulation takes effect. Operators who wait will start with an empty history.
6. Hardware Inventory: CRA and CSRD
The Cyber Resilience Act (CRA) requires manufacturers and operators of connected products to maintain hardware bills of materials with vulnerability tracking. CSRD ESRS-E5 (resource use and circular economy) requires disclosure of hardware lifecycle management, including sourcing and disposal. These are different regulatory lenses on the same underlying inventory.
DCIM platforms already track hardware. The problem, again, is evidence integrity. If a component is removed from the DCIM database, was it decommissioned, lost, or simply deleted? Without an independent record, there is no way to distinguish these scenarios.
SWT3's HBOM namespace witnesses three aspects of hardware management:
Inventory Baselines
# Weekly hardware inventory snapshot
witness.witness_hardware_inventory(
component_count=847,
manifest_hash="a1b2c3d4e5f6...", # SHA-256 of the full inventory export
delta_from_baseline=3 # 3 components changed since last snapshot
)
The manifest_hash is the SHA-256 of your complete hardware inventory at the moment of the snapshot. If any component is added, removed, or modified in the DCIM and the inventory is re-exported, the hash will differ from the witnessed value. The assessor can detect inventory modifications by comparing the current export hash against the anchored hash.
Component Lifecycle
# New GPU installed in rack A-07
witness.witness_component_lifecycle(
event_type="installed",
component_id="GPU-A100-SN-00421",
age_days=0
)
Supply Chain Provenance
# Component sourcing verification
witness.witness_supply_chain_provenance(
supplier_id="Samsung-SDI-Korea",
provenance_verified=True,
country_of_origin="KR"
)
Supply chain provenance is especially relevant for CSRD ESRS-S2 (workers in the value chain) and for operators subject to conflict mineral or forced labor due diligence requirements. The witness anchor does not verify the supply chain claim itself -- it records that the claim was made and fingerprints the reported values at a specific moment in time.
delta_from_baseline=0 and then suddenly show delta_from_baseline=47, the assessor has an objective signal that something changed. The SWT3 ledger does not explain why the delta spiked. But it ensures the assessor sees it, rather than relying on the DCIM operator to self-report the discrepancy.
7. Demand Response: Revenue and Compliance
Data centers above 2 MW are increasingly participating in demand response (DR) programs. Under FERC Order 2222 (US) and EU Clean Energy Package Art. 17, aggregated distributed resources -- including data center UPS and cooling systems -- can participate in wholesale energy markets. The revenue opportunity is real: a 500 kW curtailment commitment during peak hours can generate meaningful income per event.
But DR participation creates a compliance obligation. The grid operator, the aggregator, and the settlement platform all need verifiable evidence that the curtailment actually occurred, that the baseline was accurately measured, and that the settlement quantities match the delivered reduction. Today, each party maintains its own records. Disputes are resolved by comparing spreadsheets.
SWT3's ADR namespace witnesses the complete DR lifecycle:
Step 1: Signal Receipt
# DR signal received from grid operator
witness.witness_demand_response(
event_phase="signal_received",
committed_kw=500.0,
signal_source="PJM-Signal-2847"
)
Step 2: Baseline Measurement
# Baseline consumption established
witness.witness_baseline_consumption(
baseline_kw=2400.0,
measurement_method="metered_10day_avg",
confidence_x1000=950 # 95.0% confidence
)
Step 3: Curtailment Execution
# Actual curtailment measured
witness.witness_curtailment(
actual_reduction_kw=520.0,
committed_kw=500.0,
compliance_ratio_x1000=1040 # 104% of commitment
)
Step 4: Settlement
# Financial settlement recorded
witness.witness_settlement(
settlement_kwh=1560.0,
price_usd_per_mwh=45.25,
event_count=3
)
Step 5: Carbon Credits (Optional)
# REC generated from curtailment
witness.witness_carbon_credit(
credit_type="rec",
quantity_mwh=1.56,
registry_id="M-RETS-12345"
)
Carbon credit provenance (CBAM, RED III) follows the same pattern. The witness anchor does not validate that the REC is legitimate. It records that the operator claimed a specific credit from a specific registry at a specific time. If the claim is later found to be fraudulent, the anchor provides a forensic timestamp of when the claim was first made.
8. Credential Governance: NIS-2 and Zero Trust
A mid-sized data center operates 12,000 or more non-human identities: service accounts for BMS controllers, DCIM API tokens, SCADA integration credentials, DR platform service principals, battery management system accounts, fire suppression controllers, and environmental monitoring sensors. Each of these identities has access to critical infrastructure systems.
NIS-2 requires cybersecurity risk management for essential services, and data centers qualify as essential infrastructure. Credential governance -- knowing what every service account can access, when it was last rotated, and who authorized its permissions -- is a core NIS-2 obligation.
The challenge is that IAM platforms are the record-keepers for their own credential events. If a credential was silently re-scoped, or if a rotation was backdated in the IAM logs, the security team would have no independent way to detect it.
SWT3's NHI namespace witnesses four credential lifecycle events:
Scope Declaration
# BMS controller credential with defined permissions
witness.witness_nhi_scope(
credential_id="svc-bms-controller",
scope="read:sensors write:alerts",
ttl_seconds=86400
)
Credential Issuance
# New credential issued by Vault
witness.witness_nhi_lifecycle(
event_type="issued",
credential_id="svc-bms-controller",
issuer="Vault"
)
Scheduled Rotation
# Credential rotated per 90-day policy
witness.witness_nhi_rotation(
old_credential_id="svc-dcim-v3",
new_credential_id="svc-dcim-v4",
reason="scheduled"
)
Emergency Revocation
# Credential revoked after policy violation
witness.witness_nhi_revocation(
credential_id="svc-legacy-monitor",
reason="policy_violation",
cascade=True
)
Cross-referencing NHI anchors with other namespace anchors creates powerful audit narratives. When a BMS credential is rotated (NHI-ROTATE.1), the subsequent thermal readings (HBOM-THERMAL.1) from that BMS should appear with the new credential context. If readings continue arriving under the old credential after its rotation was witnessed, the assessor has an objective signal that something is wrong.
9. The Assessor's View
What does a compliance assessment look like when all four namespaces feed into a single SWT3 ledger?
The assessor opens the verification interface. One tenant. One ledger. Four namespaces. Every anchor verifiable with the same tool. No vendor-specific export formats. No proprietary APIs. No "trust us, the data is accurate."
EED Art. 12 -- Energy Efficiency
"Show me all PUE readings for Q3 2026."
The assessor queries HBOM-PUE.1 anchors between July 1 and September 30. Each anchor contains the reported total facility load, IT load, and PUE ratio. Each has an independent SHA-256 fingerprint that the assessor can recompute. The seasonal profile is visible in the data: PUE rising in August as cooling demand increases, falling in September as temperatures drop.
EU Battery Regulation -- DPP
"Show me the UPS battery health trajectory for rack B-14."
The assessor queries DPP-SOH.1 anchors for the relevant battery identifier. The complete health curve appears: 100% SoH at commissioning, gradual decline over 1,200+ cycles, a thermal stress event in month 8, and a recovery to stable degradation afterward. Every data point is fingerprinted at the moment the BMS reported it.
Demand Response -- Settlement Verification
"Show me the curtailment evidence for the July 15 DR event."
The assessor retrieves ADR-DR.1 (signal receipt), ADR-BASE.1 (baseline), ADR-CURT.1 (curtailment), and ADR-SETTLE.1 (settlement) anchors. The complete event chain is independently verifiable: the signal was received at 14:02, the baseline was 2,400 kW, the actual reduction was 520 kW (104% of the 500 kW commitment), and settlement was processed for 1,560 kWh.
NIS-2 -- Credential Governance
"Show me credential rotation compliance for the last 90 days."
The assessor queries NHI-ROTATE.1 anchors. Every rotation is timestamped and fingerprinted. Credentials that were not rotated within the 90-day policy window are conspicuous by their absence -- there is no NHI-ROTATE.1 anchor for them. The assessor can identify non-compliant credentials without needing access to the IAM platform itself.
10. Cross-Domain Integrity
Individual namespace verification is valuable. Cross-domain analysis is transformative.
When all four namespaces feed into a single ledger for a single tenant, patterns emerge that no single-domain audit could reveal:
Inventory vs. Credentials
The DCIM says 847 hardware components. The credential audit shows 900+ active service accounts. If each component should have roughly one primary service account, the 53-account surplus warrants investigation. Are there orphaned credentials from decommissioned hardware? Are there components with multiple unsanctioned service accounts?
Energy vs. Curtailment
PUE readings show total facility load of 2,400 kW throughout a DR event. But the curtailment anchor claims a 500 kW reduction. If the PUE anchors do not reflect the load decrease during the curtailment window, the assessor has grounds to question the curtailment claim.
Thermal vs. Battery Health
A degradation event on a UPS battery pack coincides with thermal profile readings showing ambient temperatures above 40 degrees Celsius for 72 hours. The causal link is visible in the ledger timeline. The facility can demonstrate that the degradation had a documented environmental cause rather than a manufacturing defect.
Credential Rotation vs. System Availability
A BMS credential rotation was witnessed at 03:00 on Tuesday. Thermal readings from that BMS resume at 03:04. The four-minute gap is consistent with a clean rotation. If the gap were four hours, the assessor would want to understand why the BMS was offline that long during a credential change.
11. Getting Started
The SDK is available via pip. A single Witness instance covers all four namespaces.
pip install swt3-ai
from swt3_ai import Witness
# One instance, all namespaces
witness = Witness(
tenant_id="datacenter-eu-fra1",
api_key="axm_...",
endpoint="https://sovereign.tenova.io/api/v1/witness"
)
# HBOM: Energy, water, thermal, inventory, supply chain
witness.witness_power_usage(total_facility_kw=2400.0, it_load_kw=1800.0, pue_x1000=1333)
witness.witness_water_consumption(liters_consumed=12500.0, wue_ratio_x1000=1800, source_type="recycled")
witness.witness_thermal_profile(ambient_temp_c=22.5, component_temp_c=68.3, threshold_exceeded=False)
witness.witness_hardware_inventory(component_count=847, manifest_hash="a1b2c3...", delta_from_baseline=3)
witness.witness_supply_chain_provenance(supplier_id="Samsung-SDI-Korea", provenance_verified=True, country_of_origin="KR")
# DPP: Battery lifecycle
witness.witness_battery_soh(soh_percent=92.3, cycle_count=1247, capacity_kwh=48.6)
witness.witness_charge_cycle(event_type="charge_complete", energy_kwh=42.1, peak_temp_c=35.2)
witness.witness_degradation_event(degradation_type="thermal_stress", soh_delta_percent=0.8, ambient_temp_c=42.0)
witness.witness_end_of_life(disposition_type="recycling", handler_id="Umicore-BE-0471", final_soh_percent=72.1)
# ADR: Demand response lifecycle
witness.witness_demand_response(event_phase="signal_received", committed_kw=500.0, signal_source="PJM-Signal-2847")
witness.witness_baseline_consumption(baseline_kw=2400.0, measurement_method="metered_10day_avg", confidence_x1000=950)
witness.witness_curtailment(actual_reduction_kw=520.0, committed_kw=500.0, compliance_ratio_x1000=1040)
witness.witness_settlement(settlement_kwh=1560.0, price_usd_per_mwh=45.25, event_count=3)
witness.witness_carbon_credit(credit_type="rec", quantity_mwh=1.56, registry_id="M-RETS-12345")
# NHI: Credential governance
witness.witness_nhi_scope(credential_id="svc-bms-controller", scope="read:sensors write:alerts", ttl_seconds=86400)
witness.witness_nhi_lifecycle(event_type="issued", credential_id="svc-bms-controller", issuer="Vault")
witness.witness_nhi_rotation(old_credential_id="svc-dcim-v3", new_credential_id="svc-dcim-v4", reason="scheduled")
witness.witness_nhi_revocation(credential_id="svc-legacy-monitor", reason="policy_violation", cascade=True)
Demo Mode
Omit the api_key parameter to run in demo mode. Witness anchors are computed locally and printed to the console. No network calls, no account required. This lets your engineering team evaluate the integration pattern before committing to a deployment.
# Demo mode -- no API key, no network, full local evaluation
witness = Witness(tenant_id="demo")
witness.witness_power_usage(total_facility_kw=2400.0, it_load_kw=1800.0, pue_x1000=1333)
TypeScript, Go, and Other Languages
The same witness methods are available in TypeScript (npm install @tenova/swt3-ai), Go (go get github.com/tenova-labs/swt3-ai-go), and eight other language SDKs. The fingerprint formula is identical across all implementations, ensuring cross-language verification parity.
Next Steps
- SDK Documentation -- full API reference for all four namespaces
- NHI Governance Guide -- deep dive into non-human identity witnessing
- UCT Registry -- browse all 266 procedures across 9 namespaces
- Verify Anchors -- try the public verification endpoint
- Create a Free Account -- get an API key and start persisting anchors