Skip to main content

Tamper-evident audit logging for Laravel

Laravel Chronicle

Verifiable audit trails for Laravel applications

Chronicle records immutable audit entries, chains them together with deterministic hashes, and gives you verification, checkpoints, and export tooling built for real operational review.

use Chronicle\Facades\Chronicle;

Chronicle::record()
    ->actor($user)
    ->action('order.created')
    ->subject($order)
    ->metadata([
        'total' => 14900,
        'currency' => 'EUR',
    ])
    ->tags(['orders', 'checkout'])
    ->commit();
Append-only

Entries are immutable after insert and cannot be updated or deleted.

Hash-chained

Every entry is linked to the previous chain head for tamper detection.

Verifiable

Run integrity checks, create checkpoints, and verify signed exports.

Built for ledgers that need to stand up to scrutiny

Deterministic recording pipeline

Entries move through canonicalization, payload hashing, chain hashing, and persistence in a fixed order so integrity checks are repeatable.

Readable query surface

Query by actor, subject, action, tag, correlation, or time range with model scopes or the built-in ledger reader.

Operational tooling included

Verify the ledger, create checkpoints, export datasets, and verify those exports independently from the source system.

From event recording to external verification

1. Record

Create entries with `Chronicle::record()` and add metadata, context, tags, and diffs.

2. Anchor

Use checkpoints to sign the current chain head and establish a trusted ledger state.

3. Verify

Run verification commands or export the dataset for external review and signature checks.

Install Chronicle and record your first immutable audit entry