How to Install TigerBeetle on Debian: The Financial Transactions Database
TigerBeetle is a distributed financial transactions database built for mission-critical systems. Where a general-purpose SQL database treats double-entry accounting as just another schema, TigerBeetle bakes accounts and transfers into its core, delivering extreme throughput, strict correctness and built-in high availability for the workloads that move money.
It is written in Zig, ships as a single static binary, and is designed around debit/credit accounting primitives. A single TigerBeetle process can handle enormous transfer volumes with predictable latency, and a cluster of replicas keeps the ledger available and durable even when individual machines fail.
TigerBeetle is not available in the official Debian repositories, and the project iterates quickly. The unofficial deb.griffo.io repository provides an up-to-date, prebuilt tigerbeetle package that installs and updates with apt, so you can stand up a ledger without downloading release archives by hand.
Install the Latest TigerBeetle on Debian: The Short Version
If you only came for the commands, this adds the repository and installs the latest TigerBeetle .deb package on Debian:
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 are first-class primitives
- 🚀 Extreme throughput - Designed to process millions of transfers per second
- 🔒 Strict serializability - Correctness guarantees suited to handling money
- 🛡️ Built-in replication - Viewstamped Replication keeps a cluster consistent and available
- 📦 Single static binary - No dependencies to install; one file runs the database
- 🧮 Deterministic execution - Reproducible behaviour that aids testing and auditing
- 💾 Fixed-size records - A tightly designed on-disk format for speed and predictability
- ⚙️ Written in Zig - Low-level control over memory and I/O for consistent performance
Why Use the deb.griffo.io Repository?
- Easy installation and updates through the APT package manager
- Automatic dependency management handled by Debian packaging
- Always tracks upstream releases so you get new features and fixes promptly
- No compiling from source and no manual binary downloads
- Works across supported Debian releases (Bookworm, Trixie and Sid)
Prerequisites
Before you begin, make sure you have:
- A Debian-based system (Bookworm 12, Trixie 13, or Sid)
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
Add the signing key and the repository to 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
What each command does:
- Keyrings directory - Creates
/etc/apt/keyringswith correct permissions. - GPG key - Downloads the key and stores it de-armoured for verification.
- Repository entry - Adds the source pinned to the key, with your Debian codename filled in by
lsb_release -sc. - Update - Refreshes the index so the package becomes available.
Step 2: Update the Package List
If you skipped the final line above, run:
sudo apt update
Step 3: Install TigerBeetle
Install the package:
sudo apt install tigerbeetle
APT resolves the dependencies and installs the single tigerbeetle binary onto your PATH.
Step 4: Verify the Installation
Confirm the binary and check the version:
tigerbeetle version
You should see output similar to:
TigerBeetle version 0.16.42
Note that the verify command is tigerbeetle version (no leading dashes), unlike many CLI tools.
Getting Started with TigerBeetle
TigerBeetle has an unusual two-step lifecycle for a database: you first format a data file, then start a replica that serves it. Below is a single-node development setup.
Format a Data File
Formatting creates the on-disk data file for a replica. For a single-node development cluster, use --development and describe a one-replica cluster:
tigerbeetle format \
--cluster=0 \
--replica=0 \
--replica-count=1 \
--development \
./0_0.tigerbeetle
The data file follows a [replica]_[cluster].tigerbeetle naming convention, so 0_0.tigerbeetle is replica 0 of cluster 0. You only format a file once.
Start the Replica
Start the server, binding it to an address and pointing it at the file you just formatted:
tigerbeetle start \
--addresses=3000 \
--development \
./0_0.tigerbeetle
The replica now listens on port 3000 and is ready to serve requests. There is intentionally no graceful shutdown: you can stop it with Ctrl+C at any time and the data stays safe as long as the underlying storage is healthy.
Explore with the REPL
TigerBeetle ships a built-in REPL for interacting with a running cluster. In a second terminal:
tigerbeetle repl --cluster=0 --addresses=3000
From the REPL you can create accounts and transfers directly. For example, create two accounts and move value between them:
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 call shows the resulting debit and credit balances, demonstrating the double-entry model at the core of TigerBeetle.
Connecting from an Application
In production you talk to TigerBeetle through one of its official client libraries, available for Go, Java, .NET, Node.js and Python. Each client connects using the cluster ID and the replica addresses, for example a Node.js client pointed at ["3000"] with cluster 0, mirroring the values you used to format and start the cluster.
Keeping TigerBeetle Updated
Upgrades come through the normal package workflow:
sudo apt update && sudo apt upgrade
TigerBeetle’s on-disk format is tied to its version, so read the upstream release notes before upgrading a cluster that holds real data, and keep all replicas on compatible versions.
Other Tools from deb.griffo.io
The repository packages other data and systems tooling worth pairing 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-add 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 updateagain to refresh the index. - Confirm your release is supported (Bookworm, Trixie, or Sid).
- Check the source entry:
cat /etc/apt/sources.list.d/deb.griffo.io.list
”File already formatted” or Version Errors
If tigerbeetle format refuses to run, the target file already exists; formatting is a one-time operation and will not overwrite existing data. Point at a fresh path or remove the old file only if you are certain you no longer need its data. If tigerbeetle start reports a data-file version error after an upgrade, the on-disk format is newer or older than the binary expects, so align the package version with the format used by your cluster.
Uninstalling
To remove TigerBeetle:
sudo apt remove tigerbeetle
Your data files (such as 0_0.tigerbeetle) are left untouched; delete them manually if you no longer need the ledger. 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 brings a purpose-built, high-throughput ledger to Debian, with double-entry accounting and replication designed in from the start rather than bolted on. Installing it from deb.griffo.io gives you a maintained single binary that upgrades with the rest of your system.
Format a data file, start a replica, explore with the REPL, and you have a correctness-focused financial database ready to build on.
Frequently Asked Questions
How do I install the latest TigerBeetle on Debian?
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 Debian. 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 Ubuntu?
Exactly the same way; lsb_release -sc simply resolves to a different codename. There is a companion guide with the Ubuntu specifics: How to install TigerBeetle on Ubuntu.
Which Debian releases are supported?
Bookworm 12, Trixie 13 and Sid. 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.