Releases: tigerbeetle/tigerbeetle
0.17.1: Merge pull request #3655 from tigerbeetle/release-2026-04-17
0.17.1
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.76
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.17.1 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.17.1-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.17.1 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.17.1 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.17.1. - Node.js:
npm install --save-exact tigerbeetle-node@0.17.1 - Python:
pip install tigerbeetle==0.17.1
Changelog
Safety And Performance
-
Make VSR repair less eager, cutting
request_preparetraffic by ~70-80% and
request_headersby ~80-90% for minor overhead. -
Improve compaction table-selection from
O(a * log b)toO(a + b), especially
noticeable at 20TB+.
Internals
-
Refactor
stdx.flagsto own its allocator and return trailing--args as a slice. -
Rename VSR view-change messages:
DoViewChange->JoinView,StartView->View,
StartViewChange->ExitView. -
Re-enable VOPR in CI.
-
Increase tick budget for the Vortex upgrade/recover test, which was occasionally
timing out. -
CI: fetch git tags in the
release-validatejob. -
Docs: drop an overly wide comparison table from the API changes page.
-
Docs: remove references to the retired Startup Program.
-
Clean up TigerTracks in CHANGELOG.md by only using song titles.
TigerTracks 🎧

0.17.0: Merge pull request #3646 from tigerbeetle/cbb/skip_duplicate_dotnet
0.17.0
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.75
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.17.0 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.17.0-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.17.0 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.17.0 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.17.0. - Node.js:
npm install --save-exact tigerbeetle-node@0.17.0 - Python:
pip install tigerbeetle==0.17.0
Changelog
This release improves create_accounts and create_transfers operations. They now return
timestamps of newly created objects, allowing the application to learn the resulting global order
of events without additional roundtrips. As usual, this release remains wire-compatible with
previous clients. To gain access to the new APIs, please upgrade clients to version 0.17.0. Refer
to the API changes page for details.
Safety And Performance
-
Improve repair performance by tracking per-replica repair budgets, to prevent a slow replica
from tying up the global budget. -
Add randomness to repair timeouts and faulty block iteration, to guard against
resonance liveness bugs. -
Test cluster upgrades using real TigerBeetle binaries in Vortex.
Features
-
Change the return type and semantics of the
create_{accounts,transfers}. -
Add the API changes page to the docs: https://docs.tigerbeetle.com/coding/api-changes.
-
Remove default initialization from Python client's
AccountFilterandQueryFilter. -
Querying with a
limitwhich would not fit in the maximum message size now
fails withTooMuchDatain the client, rather than silently truncating results. -
Add metric tracking recent client min/max releases seen by the cluster.
-
Fix several bugs in the
client_request_round_tripmetric. -
Make the Golang client API more idiomatic using
*big.Int. -
While generating a TigerBeetle time-based ID, clients now wrap the random
bits and increment the timestamp bits when the former overflows.Earlier, clients panicked when random bits overflowed on increment.
Internals
-
Cache Zig compiler on CI.
-
IO/Linux: Add another attempt to the flock() retry loop.
-
Various Vortex and CFO fixes.
-
Docs: Clarify the number of replicas required for upgrades.
-
Docs: Fix a flipped account flag in
balance-invariant-transfers.md.
TigerTracks 🎧

0.16.78
0.16.78
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.74
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.78 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.78-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.78 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.78 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.78. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.78 - Python:
pip install tigerbeetle==0.16.78
Changelog
Safety And Performance
-
Fix an over-tight assert -- we may still be writing non-repair blocks at the start of
checkpointing. -
Fix a potential liveness issue where we try to repair a block while simultaneously writing to it.
Internals
-
tigerbeetle inspect constantsnow prints out the number of Transfers per table. -
#3579,
#3589,
#3591,
#3584,
#3594Fix the CI release validation job.
-
Refactor our iops.zig to a more approriate home in stdx.
TigerTracks 🎧

0.16.77: Merge pull request #3578 from tigerbeetle/release-2026-03-13
0.16.77
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.73
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.77 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.77-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.77 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.77 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.77. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.77 - Python:
pip install tigerbeetle==0.16.77
Changelog
Safety And Performance
-
Rework how eviction is signaled in
tb_clientto avoid race conditions between eviction and
shutdown, unify notification logic, and add assertions for running on the correct thread. -
Optimize compaction performance by removing IO stalls at the end of each beat, allowing IO to
overlap with other work and increasing throughput by ~4%. -
Allow the grid to serve reads directly from write queues, improving performance for blocks being
currently repaired or created. -
Work around a miscompilation in Zig's LLVM backend by downcasting alignment in
stdx.equal_bytes.
Internals
-
Prepare the Rust client for release by removing dependencies (
anyhow,futures-channel),
and setting up automated release builds (not enabled yet). -
Fuzz updates on
CompositeKeys, identifying a bug in a proposed prefix-only sort optimization. -
Add a new metric to track time spent on CPU work, specifically callbacks.
-
Tighten units for IOPS, concurrency, and durations in config.
-
Fix worst case sizing and add prefetch in the scan fuzzer, to mirror state machine logic.
TigerTracks 🎧

0.16.76: Merge pull request #3570 from tigerbeetle/release-2026-03-06
0.16.76
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.72
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.76 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.76-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.76 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.76 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.76. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.76 - Python:
pip install tigerbeetle==0.16.76
Changelog
Features
-
Expose CLI arguments to diagnose connectivity issues with AMQP and
TigerBeetle during CDC.Users can now specify
--amqp-timeout-secondsand--tigerbeetle-timeout-seconds
(both default to 30), which define the maximum time to wait for a reply
from AMQP and TigerBeetle respectively. -
Record request timing metrics for reserved VSR operations.
This gives users visibility into the latency of client registrations (the
first request a client sends to the cluster), using theregisteroperation.
Internals
-
Add tidy check to flag functions with length [71, 72], as per TigerStyle.
This check intentionally incentivizes shortening the length to <=70 for
functions that are just over, as a starting point towards the 70-line limit. -
Various documentation improvements.
-
Use a fixed, high retry delay instead of exponential backoff to work
around GitHub availability. -
Various refactors and debug logging improvements in compaction.
-
Add logging to clarify the semantics of multiversion upgrade polling.
TigerTracks 🎧

0.16.75: Merge pull request #3551 from tigerbeetle/release-2026-02-27
0.16.75
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.70
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.75 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.75-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.75 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.75 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.75. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.75 - Python:
pip install tigerbeetle==0.16.75
Changelog
Safety And Performance
-
Fix the fast path check for
key_range_contains. Previously, the fast path would never be taken
due to checkingsnapshot_latestincorrectly. -
Enable transparent huge pages on Linux - relieving TLB pressure and giving a nice little
throughput bump!
Internals
-
Rage against the (GitHub) Machine.
-
Fix an overestimation of the number of index beats that will be generated by compaction.
TigerTracks 🎧

0.16.74: Merge pull request #3531 from tigerbeetle/release-2026-02-20
0.16.74
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.69
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.74 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.74-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.74 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.74 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.74. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.74 - Python:
pip install tigerbeetle==0.16.74
Changelog
Safety And Performance
-
Add a replica test for an asymmetric partition where the primary can never receive
messages, yet still does not abdicate. This test documents the current behavior,
which must be fixed.
Internals
-
Refactor LSM scan direction handling to simplify key comparisons in ascending
and descending order. -
Reduce the internal I/O thread stack size of the TigerBeetle client to 512 KiB.
-
Bump the minimum
rustcversion to 1.71 for building the TigerBeetle Rust client.
TigerTracks 🎧

0.16.73: Merge pull request #3524 from tigerbeetle/georg/release-0-16-73
0.16.73
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.68
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.73 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.73-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.73 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.73 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.73. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.73 - Python:
pip install tigerbeetle==0.16.73
Changelog
Safety And Performance
-
Making AOF recovery deterministic, and prevent interference from non-aof-recovery requests.
-
Improve Rust client testing.
Internals
-
Strip tracking parameters from Spotify links.
-
Include vortex zig driver executable in release artifacts,
in preparation for multiversion testing in vortex. -
Add metrics tracking LSM write amplification.
-
Reduce the frequency of metrics tracking in the message bus.
TigerTracks 🎧

0.16.72
0.16.72
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.67
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.72 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.72-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.72 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.72 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.72. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.72 - Python:
pip install tigerbeetle==0.16.72
Changelog
Safety And Performance
-
Dramatically improve View Change time with a new
FaultDetectorthat estimates
the probability of a primary crash.
Features
-
Track
commit_timestampandmessage_busconnections. -
Add support for rotating AOF files without signals.
Internals
-
#3491
#3496
#3494
#3490
#3495
#3489
#3488Various documentation improvements and clarifications.
-
Clarify that PR descriptions are ephemeral and do not replace well-written commit messages.
-
Capture additional Vortex logs during end-to-end testing.
-
Code cleanup and an increase in the maximum number of accounts supported by the benchmark.
TigerTracks 🎧

0.16.70: Merge pull request #3487 from tigerbeetle/release-2026-01-31
0.16.70
Supported upgrade versions
Oldest supported client version: 0.16.4
Oldest upgradable replica version: 0.16.66
Server
- Binary: Download the zip for your OS and architecture from this page and unzip.
- Docker:
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.70 - Docker (debug image):
docker pull ghcr.io/tigerbeetle/tigerbeetle:0.16.70-debug
Clients
NOTE: Because of package manager caching, it may take a few
minutes after the release for this version to appear in the package
manager.
You cannot run a newer client against an older cluster: clients are only compatible
with replicas from their own release or newer, subject to the newer release's
Oldest supported client version.
- .NET:
dotnet add package tigerbeetle --version 0.16.70 - Go:
go mod edit -require github.com/tigerbeetle/tigerbeetle-go@v0.16.70 - Java: Update the version of
com.tigerbeetle.tigerbeetle-javainpom.xml
to0.16.70. - Node.js:
npm install --save-exact tigerbeetle-node@0.16.70 - Python:
pip install tigerbeetle==0.16.70
Changelog
Safety And Performance
-
Add basic tracing/metrics to event loop times. Also fix a bug in "max" timing metrics.
-
Rewrite and improve performance of tree-of-losers k-way-merge implementation.
-
Use
callconv(.@"inline")for radix sortkey_from_valuefunction. -
Add
--id-order=tbidto benchmark. This makes the benchmark more accurately resemble a
real-world workload. Additionally, with this setting multiple runs of the benchmark will not
encounter id collisions. -
Prefetch index blocks during compaction, so that we don't need to block waiting for the read.
Features
-
Ensure public contract is stated in the
tb_clientheader file.
Internals
-
Make CFO crash less easily if fuzzer behaves unexpectedly.
Also make local testing of CFO more similar to real CFO execution.
TigerTracks 🎧
