How to Install TigerBeetle on Ubuntu: The Financial Transactions Database
TigerBeetle is a distributed financial transactions database for mission-critical systems. Instead of modelling accounting on top of a general-purpose SQL engine, TigerBeetle makes accounts and transfers native to the database, giving you very high throughput, strong correctness guarantees and built-in high availability for the systems that move money.
Written in Zig and shipped as a single static binary, TigerBeetle is organised around debit/credit primitives. One process can sustain huge transfer volumes at predictable latency, and a cluster of replicas keeps the ledger durable and available even as individual nodes fail.
Ubuntu does not include TigerBeetle in its default archives, and the project moves quickly. The unofficial deb.griffo.io repository provides an up-to-date, prebuilt tigerbeetle package installable with apt, so you can bring up a ledger without wrangling release archives yourself.
Install the Latest TigerBeetle on Ubuntu: The Short Version
If you only came for the commands, this adds the repository and installs the latest TigerBeetle .deb package on Ubuntu:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
sudo apt install tigerbeetle
The rest of this guide explains what each command does, how to verify the install, how to keep TigerBeetle up to date, and what to check when something goes wrong.
What Makes TigerBeetle Special?
- 💸 Purpose-built for accounting - Debit/credit accounts and transfers as first-class primitives
- 🚀 Extreme throughput - Built to process millions of transfers per second
- 🔒 Strict serializability - Correctness guarantees appropriate for money
- 🛡️ Built-in replication - Viewstamped Replication keeps a cluster consistent and available
- 📦 Single static binary - One dependency-free file is the whole database
- 🧮 Deterministic execution - Reproducible behaviour that helps testing and auditing
- 💾 Fixed-size records - A tight on-disk format for speed and predictability
- ⚙️ Written in Zig - Low-level control of memory and I/O for steady performance
Why Use the deb.griffo.io Repository?
- Easy installation and updates through the APT package manager
- Automatic dependency management handled by Debian/Ubuntu packaging
- Always tracks upstream releases so new features and fixes arrive quickly
- No compiling from source and no manual downloads
- Works across supported Ubuntu releases with the codename detected automatically
Prerequisites
Before you begin, make sure you have:
- An Ubuntu system (Jammy 22.04 LTS, Noble 24.04 LTS, or newer)
sudoprivilegescurlinstalled (sudo apt install curlif needed)- A 64-bit machine with enough disk for your data file
Step 1: Add the deb.griffo.io Repository
Register the signing key and repository with APT:
# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings
# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
# Update the package list
sudo apt update
Command by command:
- Keyrings directory - Ensures
/etc/apt/keyringsexists with correct permissions. - GPG key - Downloads and de-armours the key for signature verification.
- Repository entry - Adds the source pinned to the key, with
lsb_release -scinserting your Ubuntu codename such asnoble. - Update - Refreshes the package metadata.
Step 2: Update the Package List
Run this if you have not already:
sudo apt update
Step 3: Install TigerBeetle
Install the package:
sudo apt install tigerbeetle
APT resolves dependencies and installs the single tigerbeetle binary onto your PATH.
Step 4: Verify the Installation
Check the version:
tigerbeetle version
Expected output looks like:
TigerBeetle version 0.16.42
Note the verify command is tigerbeetle version with no leading dashes, which differs from most CLI tools.
Getting Started with TigerBeetle
TigerBeetle has a distinctive two-step lifecycle: you format a data file first, then start a replica that serves it. What follows is a single-node development setup.
Format a Data File
Formatting initialises the on-disk file for a replica. For a one-node development cluster, pass --development and describe a single-replica cluster:
tigerbeetle format \
--cluster=0 \
--replica=0 \
--replica-count=1 \
--development \
./0_0.tigerbeetle
Data files use a [replica]_[cluster].tigerbeetle naming scheme, so 0_0.tigerbeetle is replica 0 of cluster 0. Formatting is a one-time step per file.
Start the Replica
Start the server bound to an address and pointed at the file you formatted:
tigerbeetle start \
--addresses=3000 \
--development \
./0_0.tigerbeetle
The replica listens on port 3000 and is ready to serve. There is deliberately no graceful shutdown: Ctrl+C stops it at any time and the data remains safe provided the underlying storage is healthy.
Explore with the REPL
TigerBeetle includes a REPL for talking to a running cluster. In a second terminal:
tigerbeetle repl --cluster=0 --addresses=3000
From here you can create accounts and transfers interactively. For example:
create_accounts id=1 code=10 ledger=700,
id=2 code=10 ledger=700;
create_transfers id=1 debit_account_id=1 credit_account_id=2 amount=100 code=10 ledger=700;
lookup_accounts id=1, id=2;
The lookup_accounts output shows the resulting debit and credit balances, illustrating the double-entry model at TigerBeetle’s core.
Connecting from an Application
For real workloads you use one of TigerBeetle’s official client libraries, available for Go, Java, .NET, Node.js and Python. Each connects with the cluster ID and the replica addresses, for example a Go client pointed at cluster 0 and addresses ["3000"], matching the values you used when formatting and starting the cluster.
Keeping TigerBeetle Updated
Upgrades come through routine package maintenance:
sudo apt update && sudo apt upgrade
Because TigerBeetle’s on-disk format is tied to its version, review the upstream release notes before upgrading a cluster holding real data, and keep every replica on compatible versions.
Other Tools from deb.griffo.io
The repository packages other data and systems tooling that pairs well with TigerBeetle:
- DuckDB - An in-process SQL OLAP database for analytics
- Zig - The systems language TigerBeetle is written in
- k9s - A terminal UI for managing Kubernetes clusters
- yq - A portable command-line YAML and JSON processor
Troubleshooting
GPG or Key Errors
If APT cannot verify the repository, re-import the signing key:
sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Package Not Found
If APT cannot find the tigerbeetle package:
- Run
sudo apt updateto refresh the index. - Confirm you are on a supported release (Jammy 22.04, Noble 24.04, or newer).
- Inspect the source entry:
cat /etc/apt/sources.list.d/deb.griffo.io.list
”File already formatted” or Version Errors
If tigerbeetle format refuses to proceed, the target file already exists; formatting never overwrites existing data. Choose a fresh path, or delete the old file only if you are certain its data is expendable. If tigerbeetle start reports a data-file version mismatch after an upgrade, the on-disk format differs from what the binary expects, so align the package version with the format your cluster uses.
Uninstalling
To remove TigerBeetle:
sudo apt remove tigerbeetle
Your data files (such as 0_0.tigerbeetle) are left in place; remove them manually if the ledger is no longer needed. To remove the repository:
sudo rm /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Conclusion
TigerBeetle gives Ubuntu a purpose-built, high-throughput ledger with double-entry accounting and replication designed in from the outset. Installing it from deb.griffo.io provides a maintained single binary that upgrades alongside the rest of your system.
Format a data file, start a replica, experiment through the REPL, and you have a correctness-focused financial database to build on.
Frequently Asked Questions
How do I install the latest TigerBeetle on Ubuntu?
Add the deb.griffo.io APT repository and its signing key, then run sudo apt install tigerbeetle. The repository tracks upstream TigerBeetle releases, so you get the latest packaged version rather than a build frozen when your distribution was released.
Is there a .deb package for TigerBeetle?
Yes. deb.griffo.io publishes TigerBeetle as a signed .deb for Ubuntu. You could download that .deb and install it by hand, but adding the repository is the better option: APT then resolves dependencies and picks up new versions on its own.
How do I update TigerBeetle to the latest version?
Run sudo apt update && sudo apt upgrade. Once TigerBeetle is installed from APT there is no separate updater to remember, since new releases arrive with the rest of your system updates.
How do I install TigerBeetle on Debian?
Exactly the same way; lsb_release -sc simply resolves to a different codename. There is a companion guide with the Debian specifics: How to install TigerBeetle on Debian.
Which Ubuntu releases are supported?
Jammy 22.04 LTS, Noble 24.04 LTS and newer. Because the repository line is built from lsb_release -sc, the matching suite is selected for you.
Resources
- TigerBeetle Official Website
- TigerBeetle Documentation
- TigerBeetle GitHub Repository
- deb.griffo.io Repository
Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream TigerBeetle project.