A VectorGuard Labs Product

A Cryptographically Verifiable
Database Engine for Institutions That Can't Afford to Trust Their Own Database.

VectorLedger is a purpose-built, append-only financial ledger written entirely in Rust. Every journal entry is linked by a tamper-evident BLAKE3 hash chain, every page of data is encrypted at rest with AES-256-GCM, and every query result can carry a cryptographic Merkle proof that the returned data has not been modified since it was written.

Historical tampering is cryptographically detectable.
Any modification to a past record invalidates every hash in the chain from that point to the present - provided that verification checkpoints are independently protected, which the HSM architecture is specifically designed to enforce.

$ curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/pavondunbar/VectorLedger/main/install.sh | bash
The Problem

Traditional Databases Treat Audit Trails as an Afterthought

Triggers that can be disabled. Log tables that can be truncated. Backup files that can be silently replaced. For organizations operating under SOC 2, PCI-DSS, financial regulation, or internal zero-trust policies, this is not good enough.

📒 Journal entries
💳 Account balances
🔑 Encryption keys
🖊️ Commit signatures
📋 Audit trails
🏦 Multi-entity domains

VectorLedger makes tampering cryptographically detectable: a row written five years ago cannot be changed without invalidating every hash in the chain from that point to the present. Every SELECT response optionally carries a Merkle proof that any client can independently verify. The audit log is WORM-append-only - each event is hashed into the next, forming a second independent tamper-evident chain.

The compliance engine generates machine-generated technical evidence supporting SOC 2 Type II and PCI-DSS v4 control assessments - not pre-written documentation. This evidence supports an auditor's work; it does not by itself make an organization compliant. Organizational compliance requires additional controls, policies, and independent auditor assessment beyond what any database engine can provide.

Feature Overview

Everything You Need. Nothing Pre-Written.

A complete cryptographically verified ledger engine - not a wrapper around a plain database.

BLAKE3 Hash Chain

Every journal entry contains H(sequence || prev_hash || content_hash), forming an unbroken chain from the first entry to the last. Any modification to a historical record invalidates every subsequent hash - detectable immediately with SELECT VERIFY_CHAIN().

📘

Double-Entry Accounting

Enforced at the type level - every journal entry must balance (debits == credits) before it is accepted. Corrections are made through reversal entries that are themselves chained entries. Records are never modified or deleted.

🔐

AES-256-GCM Encryption at Rest

Per-table keys derived via HKDF-SHA256 from a master key - compromising one table key does not expose others. Each ciphertext includes a random 96-bit nonce and authenticated AAD binding it to its location.

✍️

Ed25519 Commit Signing

Every WAL commit record is signed with Ed25519 so any external auditor can verify the transaction log without trusting the server. All sensitive key material uses ZeroizeOnDrop - private keys are erased from memory when dropped.

🌲

Merkle Proofs on Every SELECT

Every SELECT response optionally carries a Merkle proof. Clients can verify the exact set of rows returned matches the committed database state - without downloading the entire database.

🏦

HSM Key Management

Pluggable Pkcs11Provider trait with three backends: SoftHSM (PyHSM) via Unix socket, AWS CloudHSM via bridge sidecar, and Azure Dedicated HSM (Thales Luna Network HSM 7). Raw key material never leaves the HSM.

👁️

Four-Eyes Dual-Control Workflow

Accounts flagged require_four_eyes = true route entries into a durable approval queue. A second, different principal must approve - self-approval is explicitly rejected at the server layer. All approvals and rejections are recorded in the audit log.

📝

WORM Audit Log

Every security-relevant event is written as a signed JSON line and BLAKE3-hashed into the next, forming a tamper-evident chain independent of the ledger chain. Events include: query_executed, entry_posted, auth_event, key_rotated, four_eyes_approved, backup_created, and more.

💾

Write-Ahead Log (WAL)

Per-record mode fsyncs every record before returning Ok - zero data loss on crash. Group-commit mode (default) flushes every 2 ms. CRC-32 integrity check on every WAL record plus a BLAKE3 hash on every row payload - two independent integrity layers. Torn write detection stops recovery at the point of corruption.

🐘

PostgreSQL Wire Protocol

PgWire server on port 5432 - compatible with psql, pgAdmin, DBeaver, Metabase, and any PostgreSQL client library. Both listeners share the same UserStore, session state, and role enforcement.

🔄

WAL Replication

Synchronous hot-standby WAL replication with three security layers: TLS 1.3, optional mTLS, and BLAKE3-keyed HMAC challenge-response inside TLS. Replicas verify the BLAKE3 hash of every received WAL record before applying it. Divergence detection via periodic DivergenceCheckpoint messages.

📊

Compliance Reporting

Built-in compliance engine generates machine-generated technical evidence for SOC 2 Type II (CC6.1–CC8.1, A1.1) and PCI-DSS v4 (Req 2.2, 3.4, 3.5, 4.2, 7.1, 10.2, 10.3, 10.5, 11.5). Reports run checks against real filesystem state - not pre-written text. Output as Markdown or JSON.

🔑

Secrets Management

Master key sourced from environment variable, disk file (dev only), HashiCorp Vault KV v2, AWS KMS GenerateDataKey, PyHSM local (Unix socket), or PyHSM remote (mTLS). Configuration file contains only metadata - the key itself never appears in config.

🔒

Authentication & Authorization

Four built-in roles: admin, operator, auditor, read_only. Privilege enforcement on the resolved query plan - immune to comment/whitespace bypass. 5-attempt brute-force lockout with 5-minute cooldown and exponential back-off. Auth bypass is compile-gated behind --features dev-no-auth.

🗄️

Encrypted Backups & Restore

Point-in-time backup creates a .tar archive with a BLAKE3 manifest. Private key material is excluded - only public keys are archived. Restore verifies every file's BLAKE3 hash against the manifest before completing. --force required to overwrite an existing data directory.

🌐

Multi-Language Client SDKs

Native client libraries in Python (clients/python/), TypeScript / Node.js (clients/typescript/), and Go (clients/go/) - all with TLS 1.3 enforcement and thread-safe connection handling.

Performance

Benchmark Results

Measured on Apple Silicon (MacBook, macOS) in group_commit WAL mode with a mixed read/write workload - 10 concurrent clients, 1,000 transactions each, 70% INSERT / 30% SELECT.

Metric Value
Throughput430 TPS
Min latency311 µs
p50 latency23 ms
p95 latency36 ms
p99 latency42 ms
Errors0 / 10,000

These numbers represent a conservative baseline on development hardware. Production performance has not yet been independently characterized on server-class hardware. The primary bottleneck in the write path is fsync latency, which varies significantly between storage devices and operating systems.

Do not use the 430 TPS figure for production capacity planning. It was measured on a single MacBook with 10 concurrent clients. Server-class NVMe storage, higher concurrency, and network-attached clients will produce materially different numbers - in both directions depending on workload shape.

Benchmark Environment Matrix

The table below will be populated as benchmarks are run on server-class hardware. Contributions and independent reproduction are welcome.

Environment Storage Concurrency TPS p50 p95 p99
Apple M-series (dev baseline)NVMe1043023 ms36 ms42 ms
AWS Graviton3 (c7g)EBS gp310
AWS Graviton3 (c7g)EBS gp3100
AWS x86 (c6i)EBS gp310
AWS x86 (c6i)EBS gp3100
AWS x86 (c6i)EBS gp31,000
Bare metalNVMe100
Bare metalNVMe1,000

All measurements use --wal-sync-mode group_commit (default) with a 70% INSERT / 30% SELECT mixed workload unless noted otherwise. per_record mode will show lower TPS and lower p99.

WAL Sync Modes

VectorLedger ships with three WAL sync modes selectable at startup.

Mode Durability Typical Use
group_commit Up to one flush window of data loss on hard crash Default - recommended for most deployments
per_record Zero data loss - every write fsynced immediately Strict regulatory environments
no_sync None Development and CI only
Architecture

Architecture at a Glance

VectorLedger is a layered system - each component handles one concern and passes cryptographic guarantees upward.

┌─────────────────────────────────────────────────────────────┐
│                        vledger binary                        │
│                                                              │
│  ┌──────────────┐    ┌──────────────────────────────────┐   │
│  │  TLS Server  │    │   PostgreSQL Wire Protocol       │   │
│  │  port 5433   │    │   port 5432                      │   │
│  │  JSON proto  │    │   psql / pgAdmin compatible      │   │
│  └──────┬───────┘    └──────────────┬───────────────────┘   │
│         │                           │                        │
│         └──────────────┬────────────┘                        │
│                        │                                      │
│              ┌─────────▼──────────┐                         │
│              │  UserStore (auth)  │  Argon2id · RBAC        │
│              │  4-role RBAC       │  Brute-force protection  │
│              └─────────┬──────────┘                         │
│                        │                                      │
│              ┌─────────▼──────────┐                         │
│              │  SQL Engine        │  SELECT · INSERT        │
│              │  Parser · Planner  │  BALANCE · VERIFY_CHAIN │
│              │  Executor          │  Joins · Aggregates      │
│              └─────────┬──────────┘                         │
│                        │                                      │
│              ┌─────────▼──────────┐                         │
│              │  LedgerStore       │  Hash chain             │
│              │  Double-entry      │  Idempotency            │
│              │  accounting core   │  Four-eyes enforcement  │
│              └──────┬──────┬──────┘                         │
│                     │      │                                  │
│          ┌──────────▼──┐ ┌─▼────────────┐                  │
│          │  WAL Writer  │ │  Page Store  │                  │
│          │  group_commit│ │  AES-256-GCM │                  │
│          │  (default)   │ │  per-table   │                  │
│          │  CRC-32      │ │  encryption  │                  │
│          └─────────────┘ └──────────────┘                  │
│                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐  │
│  │  Audit Log   │  │  HSM Client  │  │  Replication     │  │
│  │  WORM BLAKE3 │  │  Model 1 or  │  │  WAL streaming   │  │
│  │  chain       │  │  Model 2     │  │  TLS + HMAC      │  │
│  └──────────────┘  └──────┬───────┘  └──────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                             │
             ┌───────────────┴───────────────┐
             │                               │
   Model 1 - same server          Model 2 - separate server
                                   (same-region private subnet)
             │                               │
   ┌─────────▼─────────┐         ┌──────────▼──────────┐
   │  PyHSM daemon     │         │  PyHSM daemon        │
   │  Unix socket      │         │  TLS 1.3 + mTLS      │
   │  /tmp/pyhsm.sock  │         │  port 8443           │
   │                   │         │  private subnet only │
   │  dev / CI /       │         │                      │
   │  single-server    │         │  production          │
   │  production       │         │  recommended         │
   └───────────────────┘         └─────────────────────┘

PyHSM Deployment Models

VectorLedger supports two HSM deployment models. Choose based on your security requirements and infrastructure.

M1

Model 1: Local PyHSM (same server)

PyHSM and VectorLedger run on the same host. Communication uses a Unix domain socket at /tmp/pyhsm.sock. Zero network overhead. Suitable for development, CI, and single-server production deployments. Start with vledger init --key-source pyhsm.

M2

Model 2: Remote PyHSM (same-region, separate server)

PyHSM runs on a dedicated server in the same region's private subnet. VectorLedger connects over TLS 1.3 with mutual certificate authentication (mTLS) on port 8443. PyHSM's private key material is never accessible from the VectorLedger host. Recommended for production. Start with vledger init --key-source remote-pyhsm --pyhsm-endpoint https://pyhsm.internal.example.com:8443.

M3

Model 3: Remote PyHSM (separate region, separate server)

COMING SOON

How It Works

Each layer adds one cryptographic guarantee before passing control to the next.

01

Connect & Authenticate

TLS 1.3 on every connection. Argon2id password hashing at 64 MiB / 3 iterations / 4 lanes - above OWASP minimums. 5-attempt brute-force lockout with exponential back-off (200 ms–3 s per attempt). RBAC enforced on the resolved query plan, not raw SQL text - immune to comment/whitespace bypass.

02

Submit a Transaction

SQL is parsed, validated, and routed through the compliance engine. Double-entry balance (debits == credits) is enforced at the type level. Accounts with require_four_eyes=true are placed into a durable approval queue. The submitter cannot approve their own entry - checked against the authenticated session identity.

03

Commit & Sign

The transaction is written to the WAL, BLAKE3 hash-chained to the previous entry via H(sequence || prev_hash || content_hash), and Ed25519-signed. Idempotency keys detect duplicate submissions without double-posting.

04

Encrypt & Store

Page data is encrypted with AES-256-GCM using a per-table key derived from the HSM master key via HKDF-SHA256. The relative file path is used as AAD - ciphertext is bound to its location and cannot be moved without detection. Compromising one table key does not expose the master or other tables.

05

Audit & Verify

Every security-relevant event is appended to a WORM audit log with its own BLAKE3 chain hash. Run SELECT VERIFY_CHAIN() at any time to prove the entire ledger is intact. Export PCI-DSS or SOC 2 evidence as Markdown or JSON with vledger compliance-report.

06

Backup & Rotate Keys

Point-in-time backups create a .tar archive with a BLAKE3 manifest - every file's hash is verified before restore completes. Key rotation is non-destructive; the old key version is archived so existing ciphertext remains decryptable. Every rotation is recorded in the WORM audit log.

Why Not Use a Plain Database?

PostgreSQL vs. VectorLedger

PostgreSQL gives you storage and queries. VectorLedger gives you a cryptographically verifiable financial record.

Capability PostgreSQL VectorLedger
SQL queries & aggregatesYesYes + PgWire compatible
Tamper-evident hash chainNot includedBLAKE3 chain, VERIFY_CHAIN()
Commit signingNot includedEd25519 on every WAL commit
Encryption at restFilesystem only (pg_crypto optional)AES-256-GCM, per-table HKDF keys
HSM key managementNot includedSoftHSM, AWS CloudHSM, Azure HSM
Dual-control approvalNot includedFour-eyes queue, self-approval blocked
Immutable audit logWAL only (not WORM)BLAKE3-chained WORM audit log
Merkle membership proofsNot includedPer-SELECT Merkle proofs
Double-entry enforcementNot includedType-level, debits == credits required
Key rotationManual / externalNon-destructive, HSM-backed, audited
PCI-DSS / SOC 2 reportsNot includedBuilt-in compliance engine
WAL replication integrityPlain streamingBLAKE3-HMAC verified, divergence detection
Brute-force lockoutExternal / pg_hba5-attempt lockout, Argon2id, exp. backoff

VectorLedger speaks the PostgreSQL wire protocol; existing Postgres clients connect without modification.

Security Model

Built for Security Teams

What VectorLedger guarantees and what it honestly does not.

In-Scope

Tamper Detection

Any modification to a historical journal entry breaks the BLAKE3 hash chain at a specific sequence number. SELECT VERIFY_CHAIN() recomputes every hash and detects it immediately.

In-Scope

Encryption at Rest

AES-256-GCM with random 96-bit nonces, AAD binding ciphertext to its page context, and per-table HKDF-SHA256-derived keys. Compromising one table key does not compromise the master or other tables.

In-Scope

HSM Key Isolation

Raw key material never leaves the HSM. All cryptographic operations run inside the device. Key rotation via vledger rotate-keys - old key version archived for decryption of existing data; new version used for all new writes.

In-Scope

Four-Eyes Insider Protection

Dual-control approval, WORM audit log with cryptographic chaining, RBAC on query plans, and brute-force lockout collectively raise the cost of insider abuse to require active log manipulation that is itself cryptographically detectable.

In-Scope

Credential Security

Argon2id at 64 MiB / 3 iterations / 4 lanes - above OWASP minimums. Session tokens use BLAKE3(server_secret || username || role || 32-byte OsRng nonce) - no sequential or timestamp-based tokens. Auth bypass is compile-gated behind --features dev-no-auth; impossible to ship an unauthenticated production binary.

In-Scope

Replication Integrity

Every WAL record received by a replica is verified against its BLAKE3 hash before being applied. A corrupted or tampered record is rejected, the connection closed, and the primary marks that replica dead. Periodic divergence checkpoints carry a rolling BLAKE3 WAL chain hash - a mismatch means the replica must be re-seeded.

Acknowledged Limit

Replication Failover is Manual

There is no automatic primary election. If the primary crashes, an operator must explicitly reconfigure a replica as the new primary. Automated promotion via consensus (Raft/Paxos) is planned but not yet implemented. This does not affect WAL integrity or tamper-evidence guarantees.

Acknowledged Limit

Split-Brain Prevention is Network-Layer Only

VectorLedger relies on the operator's network segmentation (e.g. AWS security groups, private subnets) to prevent two nodes from simultaneously acting as primary. There is no fencing or STONITH mechanism in the replication layer itself.

Acknowledged Limit

Replica Lag is Observable but Not Bounded

Heartbeat ACKs carry the replica's last applied LSN, allowing the primary to compute lag. There is no automatic write-pause when lag exceeds a threshold.

Frequently Asked Questions

Architecture & Security Questions

pgcrypto gives you encryption functions. VectorLedger gives you a complete cryptographically verifiable ledger system. The distinction matters when an auditor asks you to prove no record was silently altered between two dates.

With pgcrypto you have encrypted columns, but no hash chain, no commit signatures, no tamper-evident audit log, no Merkle proofs, and no compliance report. You would need to build all of that yourself, correctly, on top of PostgreSQL.

VectorLedger provides all of it out of the box and still speaks the PostgreSQL wire protocol, so your existing Postgres clients connect without changes.

Every journal entry contains H(sequence || prev_hash || content_hash). If any byte of any historical entry is modified, that entry's hash changes, which invalidates every subsequent hash in the chain all the way to the present.

Running SELECT VERIFY_CHAIN() recomputes every hash in the chain and checks every Ed25519 signature. If even one byte was changed, the command reports exactly which sequence number the chain breaks at. A third party with only the public key can independently verify - without trusting the server.

When a journal entry targets an account with require_four_eyes = true, the entry is not posted immediately. It is persisted to a durable approval queue and an ApprovalId (UUID) is returned to the submitter.

A second, different principal approves the entry. The server verifies approver_id != submitter_id - this check is performed on the authenticated session identity, so it cannot be bypassed by whitespace or case tricks. Self-rejection is also blocked. On approval, the entry is posted atomically with idempotency protection against double-posting on crash recovery.

Both the original submission, the approval (or rejection), and the approver identity are permanently recorded in the WORM audit log.

VectorLedger supports three HSM backends through a unified Pkcs11Provider trait:

SoftHSM (PyHSM) - a VectorGuard Labs product. The TypeScript daemon listens on a Unix domain socket. Key material is AES-256-GCM-SIV encrypted inside PyHSM's keystore and never touches disk in plaintext. Suitable for development, CI, and production deployments without dedicated hardware.

AWS CloudHSM - via a bridge sidecar that translates VectorLedger's IPC protocol to PKCS#11 calls inside the CloudHSM cluster.

Azure Dedicated HSM - via a bridge sidecar wrapping the Thales Luna Network HSM 7 PKCS#11 library. Raw key material never leaves the hardware boundary on either cloud provider.

Model 1 - Local PyHSM (same server): PyHSM and VectorLedger run on the same host. VectorLedger connects via a Unix domain socket at /tmp/pyhsm.sock. Zero network overhead. Suitable for development, CI, and single-server production. Initialise with vledger init --key-source pyhsm.

Model 2 - Remote PyHSM (same-region, separate server): PyHSM runs on a dedicated server in the same region's private subnet. VectorLedger connects over TLS 1.3 + mTLS on port 8443. PyHSM's private key material is never accessible from the VectorLedger host. Recommended for production. Initialise with vledger init --key-source remote-pyhsm --pyhsm-endpoint https://pyhsm.internal.example.com:8443.

Both models follow the same lifecycle: VectorLedger seals the master key inside PyHSM on init, stores only an encrypted blob locally, and decrypts it via PyHSM on every start. If PyHSM is unreachable at startup, VectorLedger fails immediately - it never falls back silently to a weaker key source.

Key rotation via vledger rotate-keys is non-destructive. The HSM archives the old key version rather than destroying it, so existing ciphertext (which embeds the key version in its header) remains decryptable using the archived version.

New writes immediately use the new key version. Over time, as pages are naturally rewritten, they migrate to the new key. Every rotation emits a key_rotated event to the WORM audit log with the key ID, caller ID, and timestamp.

The compliance engine evaluates controls by inspecting live artifacts in the data directory - the audit log, WAL, page store, HSM config, and TLS certificate. Reports are generated against real filesystem state, not pre-written text.

For PCI-DSS v4 it evaluates controls covering Req 2.2, 3.4, 3.5, 4.2, 7.1, 10.2, 10.3, 10.5, and 11.5. For SOC 2 Type II it evaluates CC6.1, CC6.2, CC6.3, CC6.6, CC6.7, CC7.2, CC8.1, and A1.1.

Output is Markdown or JSON, piped to a file with --output. This evidence is a technical input to an audit - it does not by itself make an organization compliant. Organizational compliance requires additional policies, procedures, and independent auditor assessment.

VectorLedger enforces TLS 1.3 on all connections using rustls. TLS 1.2 and below are not offered. Both the native JSON server (port 5433) and the PostgreSQL wire-protocol server (port 5432) support mutual TLS (mTLS), as does the replication channel.

Self-signed certificates are generated at startup and persisted across restarts for convenience. For production, replace them with CA-signed certificates by passing --tls-cert-path and --tls-key-path at startup. The compliance engine flags self-signed certificates as a WARN finding on the relevant SOC 2 and PCI-DSS controls.

VectorLedger enforces per-listener resource controls to prevent resource exhaustion:

ControlNative (5433)PgWire (5432)
Max connections12864
Per-IP token bucket (burst=10, refill=2/s)YesYes
Auth timeout30 s30 s
Idle timeout5 min5 min
Request frame size limit4 MiB16 MiB
Graceful shutdown drainYesYes

No. VectorLedger speaks the PostgreSQL wire protocol on port 5432. Clients point their existing PostgreSQL connection string at VectorLedger and their application works as-is - no code changes required.

Any ORM, query builder, or database driver that speaks the PostgreSQL wire protocol is immediately compatible. This includes Django, Rails, Spring, Prisma, SQLAlchemy, JDBC, and every major ORM out of the box. If psql connects, any Postgres-compatible client connects.

To enable pgwire support, start VectorLedger with the --pgwire flag:

nohup ./target/release/vledger start --max-connections 200 --pgwire &

Then connect with any standard PostgreSQL client:

psql "host=127.0.0.1 port=5432 user=admin dbname=vledger sslmode=require"

Yes. Because YugabyteDB is itself PostgreSQL wire protocol compatible, any client that talks to YugabyteDB can also talk to VectorLedger via pgwire without any driver changes.

The more compelling deployment pattern is running both systems together rather than replacing one with the other:

  • YugabyteDB handles distributed, horizontally scalable OLTP - what it is built for.
  • VectorLedger sits beside it as the immutable audit ledger - every financial transaction, compliance event, or sensitive write is mirrored to VectorLedger for cryptographic proof and tamper-evident history.
  • The application connects to both using the same PostgreSQL driver it already uses.

This pattern is particularly strong for financial services (SOX, PCI-DSS), healthcare (HIPAA), legal (chain of custody), and supply chain (custody transfer records) - industries where keeping your operational database and adding a verifiable audit ledger is far less disruptive than replacing either system.

Generic PostgreSQL stores your data in mutable tables. Any admin, DBA, or compromised account can UPDATE or DELETE records - including audit logs. Compliance reports rest on trust that data has not been touched, and if a record is changed there is no cryptographic evidence it ever existed in a different state.

PostgreSQL + VectorLedger makes every write append-only and cryptographically chained. Each record's hash includes the previous record's hash, so any modification to history is immediately detectable. Merkle proofs let you prove to an auditor, regulator, or court that a specific record existed at a specific time and has not changed since. Compliance is based on math, not trust.

In a real scenario: a bank processes a $10M wire transfer. Six months later there is a dispute. With generic Postgres the answer to "how do you know this record hasn't been modified?" is "trust us." With VectorLedger the answer is a cryptographic Merkle proof - independently verifiable, no byte changed since the moment of writing. That answer holds up in a PCI audit, an SEC investigation, and court.

One sentence version: Postgres stores your data. VectorLedger proves your data hasn't been touched since the moment it was written.

No - only records written after the cutover date receive cryptographic guarantees. This is a well-known industry challenge called the "genesis problem": the same reason a blockchain's history is only trustworthy from block 0. You cannot add cryptographic guarantees retroactively to history that was written without them.

If you migrate existing records into VectorLedger, they are ingested and hashed from the point of migration - but the proof only guarantees the data was in a particular state at the time of ingestion, not at the time it was originally written. An auditor would rightfully ask whether the data was altered in Postgres before migration.

The recommended approach for compliance-sensitive clients:

  • Day 1 forward - every new write is cryptographically verified, immutable, and provable.
  • Pre-existing data - keep legacy Postgres data as-is for historical reference; the guarantee is "this is what the data looked like on migration day," not "this is what it looked like when originally written."
  • Best practice - use VectorLedger as the system of record for everything from the cutover date forward.

For most compliance frameworks - SOX, PCI-DSS, HIPAA - a clean cutover date with a verified ledger from that point forward is fully acceptable.

Licensing

Simple, Transparent Pricing

Place the signed license.json provided by VectorGuard Labs in your data directory to unlock paid features. No license file = Free tier. Annual billing available on all paid tiers - pay for 10 months, get 12.

Free

$0 / month

Development, evaluation, internal tools

  • Core ledger + SQL REPL
  • AES-256-GCM encryption at rest
  • BLAKE3 hash chain + Merkle proofs
  • Four-eyes dual-control workflow
  • WORM audit log + chain verification
  • Backup & restore
  • Audit log export (30 days)
  • PostgreSQL wire protocol
  • WAL replication (hot standby)
  • Compliance reports (SOC 2 / PCI-DSS)
  • Hardware HSM PKCS#11 integration
  • Multi-node deployment
Get Started Free

Starter

$199 / month

Early-stage teams that need PostgreSQL client compatibility

  • Everything in Free
  • PostgreSQL wire protocol (--pgwire)
  • Audit log export (90 days)
  • WAL replication (hot standby)
  • Compliance reports (SOC 2 / PCI-DSS)
  • Hardware HSM PKCS#11 integration
  • Multi-node deployment
Get Starter

Enterprise

Banks, payment processors, PCI-DSS Level 1, hardware HSM requirements

  • Everything in Growth
  • Hardware HSM PKCS#11 integration
  • Multi-node deployment
  • Audit log export (unlimited)
Contact Sales
Feature Free Starter Growth Enterprise
Core ledger + SQL REPL
AES-256-GCM encryption at rest
BLAKE3 hash chain + Merkle proofs
Four-eyes dual-control workflow
WORM audit log + chain verification
Backup & restore
Audit log export (date range)30 days90 daysUnlimitedUnlimited
PostgreSQL wire protocol (--pgwire)
WAL replication (hot standby)
Compliance reports (SOC 2 / PCI-DSS)
Hardware HSM PKCS#11 integration
Multi-node deployment

Licenses issued by VectorGuard Labs. Purchase at vectorguardlabs.com/pricing - your license.json is delivered automatically to the email on your account. Contact sales@vectorguardlabs.com for multi-instance or custom pricing.

Get in Touch

Get in Touch

Ready to secure your financial ledger? Let's talk about which license tier fits your team.

No spam. We respond within one business day.