Ledger and fact databases
XTDB
An open-source bitemporal SQL database that keeps every version of every row, by when it was true and when it was recorded.
xtdb.com · founded 2019 (as Crux; rename to XTDB later, date unverified) · London, UK (JUXT Ltd) · researched 2026-10-10
- Scope
- XTDB records two times for every row, valid time (when it was true, set by you) and system time (when the database learned it, set automatically), and lets you query any combination with SQL:2011 syntax over the Postgres wire protocol. It is general-purpose infrastructure aimed at audit and compliance; it has no accounting model, connectors or financial features.
- Backing
- Built by JUXT Ltd, a London engineering consultancy acquired by Grid Dynamics Holdings (NASDAQ: GDYN) on 26 September 2024. No separate venture funding found.
- Serves
- developers, enterprise
- Covers
- ledger, reporting
- To ownpurse
- Design cousin. XTDB keeps the two times ownpurse needs, when a thing happened and when the record learned it, and shows how to query them with plain SQL. ownpurse needs the same two clocks for back-dated corrections from Xero and banks.
What it is
XTDB is an open-source database, MPL-2.0, built by JUXT in London, for “development, reporting and compliance for immutable systems.” Every row carries two times. Valid time is “a user-managed dimension” for backfilling and out-of-order updates; system time is set automatically and “represents the audit history of all changes to records” (key concepts). It builds on the bitemporal parts of SQL:2011.
How it works
You write ordinary SQL. An UPDATE or DELETE does not destroy the old row; each change “sits alongside the previous versions of that row.” DELETE is a valid-time operation; for data that must go, ERASE removes it across all valid and system time, for cases like GDPR (transactions). Queries read the past with FOR VALID_TIME AS OF and FOR SYSTEM_TIME AS OF, or set a basis for a whole query with SETTING DEFAULT SYSTEM_TIME (SQL overview). BEGIN ... WITH (SYSTEM_TIME = ...) lets you backfill history, as long as you do not go earlier than any committed transaction.
The 2.0 release separated storage from compute: hot data on compute nodes, history on object storage such as S3, an Apache Arrow columnar engine, nested data with schema inference, and “zero-cost snapshots.”
Data and access
You run it, so you hold everything. It speaks the Postgres wire protocol and FlightSQL, so psql, BI tools and drivers in eleven languages connect without a bespoke client (docs). Debezium ingestion brings change data in from other databases. Support, consulting and training are sold on request; there is no price list, and it is on the AWS, Google Cloud and Azure marketplaces.
Agents
There is no XTDB MCP server or AI feature. The site positions it as an audit layer “for durable orchestration workflows and agentic workflows,” and the blog has a September 2026 post on fraud detection. Postgres compatibility is the practical agent story: anything that can talk to Postgres can query its history.
Customers
JUXT pitches XTDB to regulated industries and financial services, but names no customer counts. The repository has about 3,100 stars and nearly 9,700 commits. There are no review-site listings.
History
XTDB began as Crux in 2019, a Datalog database over documents with valid and transaction time, and was renamed XTDB in its 1.x line. Grid Dynamics acquired JUXT on 26 September 2024. Version 2, a rewrite around SQL, went generally available in June 2025; 2.1 followed on 1 December 2025 and 2.2 was in beta by September 2026.
For ownpurse
XTDB is the clearest reference for the second clock. A Xero invoice dated in March but entered in May, or a bank line that posts days after the swipe, needs both times: when it happened and when the record learned it. XTDB shows those can be first-class and queried in SQL that people already know. Where ownpurse differs is the unit and the place: ownpurse keeps every source’s claim side by side as facts with provenance, in one file on the owner’s machine, where XTDB upserts a row by id into a server you run. Its Postgres-wire approach is worth a thought for ownpurse too: a read-only SQL surface over the record would let existing tools and agents query it with nothing new to learn.
Data and access
- Public API
- Yes. SQL over Postgres wire protocol and FlightSQL; XTQL; Arrow (ADBC); HTTP server moved to a labs module in 2.0
- Auth
- As configured on your own deployment
- Limits
- None imposed by a vendor; your hardware
- What access costs
- Free and open source; production support, consulting and training priced on request
- Export
- Full: you own the log and object storage; SQL over every version
- Notes
- Storage and compute are separated: hot data on compute nodes, history in object storage such as S3; a log (Kafka is one option) sequences transactions. Drivers listed for C, C#, Clojure, Elixir, Go, Java, Kotlin, Node.js, PHP, Python and Ruby.
Price
- Model
- Open source; paid support and consulting
- Entry
- Free
- Top
- Production support, price on request
- Notes
- Also listed on AWS, Google Cloud and Azure marketplaces; no public price list.
Agents
- MCP
- none
- AI features
- None in the product as of October 2026. The site pitches a "decision auditability layer for durable orchestration workflows and agentic workflows"; a September 2026 post covers fraud detection with temporal SQL.
- Agent writes
- Through SQL like any client.
- Approval
- None built in.
- Notes
- Because it speaks the Postgres wire protocol, generic Postgres MCP servers should work against it (not tested). The repository carries AGENTS.md, CLAUDE.md and .mcp.json for its own contributors.
Integration and customers
- Connects to
- Postgres-compatible drivers and BI tools; native Debezium ingestion for change data from other databases; ATTACH (2.1) to integrate other sources.
- Notes
- Postgres compatibility is its main integration story: existing tools work without a bespoke client.
- Scale
- No public customer or user counts found; GitHub shows about 3.1k stars and 193 forks (October 2026).
- Ratings
- No G2, Capterra or Trustpilot listings found.
- What customers say
- Not checked against review sites or forums this pass. Developers generally credit its clear bitemporal model; the move from 1.x Datalog documents to 2.x SQL asked existing users to migrate.
Timeline
- 2019
Released as Crux by JUXT (month unverified)
- 2021
Renamed XTDB; 1.x line with Datalog over documents and two times (date unverified)
- 2024-09-26
Grid Dynamics announces its acquisition of JUXT
- 2025-06
XTDB 2.0 generally available: SQL, Postgres wire, Arrow columnar engine, object-store history
- 2025-12-01
XTDB 2.1.0 released (ATTACH to integrate other sources)
- 2026-07-13
XTDB 2.2 previewed with leader election; 2.2.0 betas through September 2026
Borrow and avoid
- Borrow
- Two clocks on every fact (valid time set by the source, system time set by the log); SQL:2011-style FOR VALID_TIME and FOR SYSTEM_TIME AS OF queries; a query-wide basis setting so every view reads one snapshot; DELETE as a valid-time operation that keeps history, with a separate ERASE for legal removal; Postgres wire compatibility so ordinary tools can read the record.
- Avoid
- A server and log to run for what should be one file a person holds; upserts by id that overwrite a valid-time range (fine for state, wrong for an evidence log, where two sources' claims must both stay); a rewrite of the query language between major versions.
Sources
- XTDB
- XTDB docs
- XTDB key concepts
- XTDB SQL transactions (ERASE, DELETE, backfill)
- XTDB SQL overview
- XTDB 2.0.0 release notes
- XTDB releases
- XTDB on GitHub
- XTDB blog
- Grid Dynamics news: joins forces with JUXT (26 September 2024)
- JUXT
Not confirmed against a primary source
- Crux release date (2019) and the date of the rename to XTDB (2021): not confirmed from a primary source this pass
- Exact 2.0 GA date: the blog lists 5 June 2025, the GitHub release is dated 12 June (year confirmed by the blog)
- Whether generic Postgres MCP servers work against XTDB without changes
- Named customers and adoption figures
- Price of production support
- Deal terms of the Grid Dynamics acquisition of JUXT
- Review-site and forum sentiment (web search budget exhausted)
ownpurse is not affiliated with XTDB or any company named here. Names are their owners' trademarks. Figures come from the company's own pages and the press, as linked, as of 2026-10-10; scores are our reading of them against the definitions in the landscape. This is not legal or financial advice.