Check a record

Anyone with the record and the company’s public key can check it with the Koncernify verifier, on their own computer and without an account. Write to hello@koncernify.com for a copy of the verifier.

Koncernify verify books.jsonl --pub books.key.pub

The verifier checks that every entry matches its hash, that each entry points to the one before, and that every signature is valid. If one entry was changed or removed, it names the first one that fails.

Check the countersignature

Koncernify witness-key -o witness.pub
Koncernify verify books.jsonl --pub books.key.pub --witness-pub witness.pub

This also checks the service’s receipts. A record that was rewritten after it was countersigned fails here, even if the company signed the new version with its own key.

Check a report Koncernify made

Koncernify check evidence/

A report made in Koncernify comes with its evidence folder. The check verifies each signed statement in it against keys.json and compares each posting with the approval it names and with the entry in ledger.json.

What is signed on each path

Every journal that reaches the books through Koncernify leaves a signed approval. When Koncernify also posts the journal, it signs a posting statement that names the ledger entry, the figures sent and a hash of the approval it was posted on. A reader can follow each journal from the decision to the ledger without relying on Koncernify’s database.

PathApprovalPosting
An agent that posts itself, with the hookThe reviewer’s decisionKept in the agent’s own record, which Koncernify countersigns
An agent through the gatewayThe reviewer’s decision, or the note of the lane it posted inSigned by Koncernify and returned to the agent
A chat assistant through the connectorThe reviewer’s decision, or the lane noteSigned by Koncernify
The boxThe reviewer’s decision, or the lane noteSigned by Koncernify
A journal a person sendsThe reviewer’s decision, or the lane noteSigned by Koncernify

Changes to the controls

A report also shows whether the controls stayed the same during the period. Every change to the policy, an agent, an agent or admin key, a person’s role or authority, a standing approval or a ledger is kept as a statement Koncernify signs, naming who made the change and the value before and after. Each statement carries its number and the hash of the one before, so a change that is later removed, reordered or altered breaks the chain. The evidence folder holds the chain as controls.jsonl, and the check verifies every link and signature in it.

Try it on the sample

Download the sample record and its public key, then run the first command. Change any figure in the file and run it again.