Tau is a bitemporal time-series database: every fact keeps when it was true and when you learned it. Corrections are appends — nothing is ever overwritten — and AT … AS OF replays exactly what you believed at any past moment.
Quickstart · Tutorial · Examples · GitHub
One question, two honest answers. The restated value never deletes the original — it stacks on top, the newest layer wins, and both clocks stay queryable forever.
Two clocks, one fact
Most stores have one axis of time and mutate in place. Tau keeps both axes and mutates nothing.
Valid time
When a fact was true in the world — the half-open interval [start, end) you query with AT, RANGE and REDUCE.
Transaction time
When Tau learned it — stamped on every append, wound back with AT … AS OF, and audited with HISTORY.
What that buys you
- Corrections are appends. The newest layer wins at any overlap; the belief it replaced stays queryable forever.
- Time travel survives compaction. Normalisation preserves every transaction-time generation, and is proven query-equivalent by property tests and deterministic simulation on every build.
- Lenses go N-dimensional.
CREATE LENS grid float AXES (time, region)— box-shaped facts, one coordinate per axis. - Library or server. Embed the
libtaukernel in a Rust process, or run the TCP/TLS server and speak TauQL. Same engine either way.
Quickstart
Install the server and client — release binary, cargo, or Docker:
# Release binary (Linux x86_64)
curl -fsSL https://github.com/bxrne/tau/releases/latest/download/tau-x86_64-linux -o tau
chmod +x tau && sudo mv tau /usr/local/bin/
# …or cargo
cargo install --git https://github.com/bxrne/tau tau tauctl
# …or Docker
docker run -p 7070:7070 ghcr.io/bxrne/tau:latest
Start an in-memory server on 127.0.0.1:7070 with tau, then drive it from tauctl:
τ: connect demo 127.0.0.1:7070
τ: CREATE DATABASE demo
τ: CREATE LENS cpu int
τ: APPEND LENS cpu 0 60 45, 60 120 72
τ: AT LENS cpu 30
VAL i45
Where next
- Tutorial — a full correction-and-audit story, end to end
- Examples — copy-pasteable: IoT recalibration, observability rollups, backtesting
- TauQL reference — every statement, the grammar, and the wire protocol
- How it works — the kernel, layers, compaction, storage and the WAL
- Simulation testing — the oracle, fault injection, and why seeds reproduce bugs
- Configuration — backends, TLS, auth, metrics, and limits
Open source under the Apache 2.0 license. Correctness is enforced by property-based tests, deterministic simulation, and fuzzing — see Testing.