How It Works
From key registration to verified approval — every step is signed, chained, and auditable.
A tenant admin calls POST /keys to generate an Ed25519 keypair. The private key is stored securely server-side; the public key is registered for the tenant's namespace and returned for client verification.
The Trust Engine hashes the record payload (SHA-256), appends the previousHash from the chain tip, then signs the resulting hash with the tenant's Ed25519 private key. The record is atomically appended to the chain.
Verifiers call POST /trust/verify to confirm a record's signature against the public key. Approvers cast signed votes via POST /approvals. When the policy quorum is met, the record status transitions to 'trusted'.
Architecture
API Reference
Base: /api/v2/tenants/:tenantId/ — all endpoints require JWT auth with RBAC scope enforcement.
Chain Integrity
Each record includes a previousHash — the hash of the record before it. Any tampering breaks the chain immediately.
Policy Engine
Every action in KTL can require multiple approvers from a defined allowlist. The policy engine enforces quorum before any record transitions to "trusted."
Attach an approval policy to a record type or tenant namespace. Specify N (required votes) from M (allowlist members). Policies can be per-action, per-tenant, or global.
{
"policyId": "policy_contract_approval",
"required": 2,
"allowlist": [
"user_alice",
"user_bob",
"user_carol"
],
"action": "contract.*"
}Each approver in the allowlist calls POST /approvals with their vote. Every vote is signed with the approver's identity token. Votes are immutable once cast.
// Approver casts signed vote
POST /api/v2/tenants/:id/approvals
{
"recordId": "rec_4c1d87ea",
"vote": "approve",
"approverId": "user_alice"
}
// Quorum status: 1/2 receivedWhen the Nth vote is received and the quorum threshold is met, KTL atomically updates the record status to 'trusted'. Webhooks fire. The audit log entry is sealed.
// Quorum reached — record transitions
{
"recordId": "rec_4c1d87ea",
"quorum": { "required":2, "received":2 },
"status": "trusted",
"trustedAt": "2026-04-22T10:09:00Z",
"webhookFired": true
}Security & Compliance
Every layer of KTL is built with security as a first-class constraint — not a compliance checkbox.
Pricing
No per-seat pricing. No surprise overages. Pay for what your organization actually uses.