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)
  • sudo privileges
  • curl installed (sudo apt install curl if 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:

  1. Keyrings directory - Creates /etc/apt/keyrings with correct permissions.
  2. GPG key - Downloads the key and stores it de-armoured for verification.
  3. Repository entry - Adds the source pinned to the key, with your Debian codename filled in by lsb_release -sc.
  4. 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:

  1. Run sudo apt update again to refresh the index.
  2. Confirm your release is supported (Bookworm, Trixie, or Sid).
  3. 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


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.