About this project

immudb is a lightweight, open-source database built around immutability and zero-trust principles. Records can be added as new versions but never altered or deleted, and every change is tracked in a cryptographically coherent, verifiable history that clients can validate without trusting the database server itself. It can operate as a relational (SQL) database, a key-value store, and a document-model database, and can run as a standalone service or be embedded in-process as a Go library. Key capabilities documented in the project: - Multi-model access: SQL with transactions and blobs, a key-value API with verified reads/writes, and a document model. - PostgreSQL wire protocol compatibility: standard PostgreSQL clients and ORMs (psql, pgAdmin, JDBC, SQLAlchemy, Django, GORM, ActiveRecord, lib/pq, pgx) can connect directly. Supported SQL features include RETURNING clauses, common table expressions (WITH / WITH RECURSIVE), window functions (ROW_NUMBER, RANK, LAG, LEAD and others), views, sequences, a broad set of joins and subqueries, set operations, SAVEPOINT-based transaction control, COPY FROM stdin bulk import, partial indexes, and 75+ built-in functions. Catalog emulation via pg_catalog and information_schema tables supports ORM introspection. Documented limitations include no stored procedures/PLpgSQL, no GIN/GiST indexes (B-tree only), and no generated columns. - Time-travel queries: a DIFF OF SQL syntax compares table state between two transaction ranges, labeling rows as INSERT, UPDATE, or DELETE. - Cryptographic verification via SQL: functions such as immudb_state(), immudb_verify_row(), immudb_verify_tx(), and immudb_history() expose the proof system directly in queries. - Structured audit logging: optional immutable JSON audit events for every gRPC operation (timestamp, user, IP, database, method, category, duration, session ID), stored in immudb's own tamper-proof KV store and exportable to SIEM systems. - Deployment options: prebuilt binaries, Docker images, Kubernetes Helm charts, and embedded library mode. Data can be stored on Amazon S3 or S3-compatible alternatives such as MinIO, with support for AWS IAM roles and Fargate credential sourcing. - Client ecosystem: official SDKs for Java, Go (including a GORM adapter), .NET, Python, and Node.js; the immuclient CLI for interactive administration; and immugw, a REST gateway for languages without an SDK. Rust users are directed to standard PostgreSQL clients or generated gRPC code, as the crates.io immudb crate is unofficial. - Security hardening: path-traversal validation in archive restore, immediate session invalidation on user/permission changes, restricted token file permissions, and a startup warning when the PostgreSQL-compatible server runs without TLS. Reported real-world uses include immutably storing sensitive field changes (e.g., payment data), protecting CI/CD build recipes, storing certificates and checksums, tamper-evident log streams, and recording sensor or location data. Documentation, a web console demo, and a Python SDK playground are available on the project site.