TransparencyKit

Transparency reports anyone can verify.

TransparencyKit keeps a tamper-evident record of government requests, abuse notices, subprocessor changes and where your infrastructure sits. From it, it publishes signed reports, including the disclosures the EU Data Act and the DSA require.

go install github.com/transparencykit/transparencykit/cmd/tkit@latest

So Sovereign Cloud SA (fictional), transparency report 2026

Government and authority requests
29
Requests rejected
13
Accounts specified in requests
53
Disclosures to third-country authorities
0

Signature valid, key ed25519:393c7a476c60c098
117 ledger records, open the full report

One ledger, every disclosure

Record each event once. Every publication is derived from the same chain of records, so the numbers in your report, your Data Act page and your DSA filing cannot drift apart.

  1. Voluntary, following Ranking Digital Rights P11a

    Transparency report

    Government and authority requests by country, outcome, data type and customer notification, with third-country requests such as CLOUD Act orders shown on their own. Abuse notices by category and action.

  2. Regulation (EU) 2023/2854, Art. 28

    Data Act disclosure

    The jurisdiction of every zone and the technical, organisational and contractual measures against foreign governmental access, on a stable URL your contracts can reference.

  3. Regulation (EU) 2022/2065, Art. 15

    DSA transparency data

    Orders, notices and own-initiative measures for hosting providers, with exact figures in CSV files that follow the tab structure of the Commission's template.

  4. GDPR Art. 28 practice

    Subprocessor list and feed

    The current list and a dated change history, with an Atom feed customers can subscribe to instead of scraping your website.

How it works

Three commands, run by your legal or trust team. Nothing to host but a bucket.

  1. Record

    Append each request or change when it happens. Records are validated, hash-chained and stored in an object-locked bucket. Case details stay private.

    tkit record add gov_request -f req.json
  2. Publish

    Aggregate a period, render every output and sign a manifest that lists each file's hash. Small counts are shown as ranges; zeros stay exact.

    tkit publish --period 2026
  3. Verify

    Customers, auditors and journalists check the signature and every file with your public key. A rewritten past report fails the check.

    tkit verify --pubkey acme.pub --chain \
      https://transparency.acme.example

Proof, not prose

Most transparency pages are text a provider can change at any time. Each TransparencyKit publication commits to the one before it, so history can be extended but not rewritten.

Every file is listed in a manifest with its SHA-256 hash and signed with Ed25519. Change one byte and verification fails, naming the file.

Each manifest also commits to the head of your private ledger, so an auditor can prove which records a report was built from.

Built for providers who host in Europe