Quick Start
This page will guide you through downloading TigerBeetle, setting up a single- or multi-node cluster, and creating some accounts and transfers using the REPL.
1. Download TigerBeetle
TigerBeetle is a single, small, statically-linked binary.
Latest Release
# macOS
curl -Lo tigerbeetle.zip https://mac.tigerbeetle.com && unzip tigerbeetle.zip && ./tigerbeetle version
# Linux
curl -Lo tigerbeetle.zip https://linux.tigerbeetle.com && unzip tigerbeetle.zip && ./tigerbeetle version
# Windows
powershell -command "curl.exe -Lo tigerbeetle.zip https://windows.tigerbeetle.com; Expand-Archive tigerbeetle.zip .; .\tigerbeetle version"
Build from Source
To build TigerBeetle from source, clone the repo, install Zig and run
zig build
:
git clone https://github.com/tigerbeetle/tigerbeetle && cd tigerbeetle
./zig/download.sh # .bat if you're on Windows.
./zig/zig build
./tigerbeetle version
Notes:
- Building from source is not recommended for production deployments.
- If you build TigerBeetle from source, it is only compatible with clients that were also built from source.
Direct Download
You can download prebuilt binaries here:
Linux | Windows | MacOS | |
---|---|---|---|
x86_64 | tigerbeetle-x86_64-linux.zip | tigerbeetle-x86_64-windows.zip | tigerbeetle-universal-macos.zip |
aarch64 | tigerbeetle-aarch64-linux.zip | N/A | tigerbeetle-universal-macos.zip |
Docker
You can find instructions on using TigerBeetle with Docker here.
2. Create the Data File
Each TigerBeetle node uses a single data file to store its state.
Create the data file using the format
command:
./tigerbeetle format --cluster=0 --replica=0 --replica-count=1 --development 0_0.tigerbeetle
info(io): creating "0_0.tigerbeetle"...
info(io): allocating 660.140625MiB...
3. Start Your Cluster
Now we’ll run the TigerBeetle server.
./tigerbeetle start --addresses=3000 --development 0_0.tigerbeetle
info(io): opening "0_0.tigerbeetle"...
info(main): 0: cluster=0: listening on 127.0.0.1:3000
4. Connect to the REPL
Now that we have TigerBeetle running, we can connect to it via the REPL to create some accounts and transfers!
./tigerbeetle repl --cluster=0 --addresses=3000
TigerBeetle Client
Hit enter after a semicolon to run a command.
Examples:
create_accounts id=1 code=10 ledger=700 flags=linked | history,
id=2 code=10 ledger=700;
create_transfers id=1 debit_account_id=1 credit_account_id=2 amount=10 ledger=700 code=10;
lookup_accounts id=1;
lookup_accounts id=1, id=2;
5. Create Accounts
In the REPL, create two accounts on the same ledger using the command:
create_accounts id=1 code=10 ledger=700,
id=2 code=10 ledger=700;
info(message_bus): connected to replica 0
6. Create a Transfer
Now create a transfer of 10
(of some amount/currency)
between the two accounts.
create_transfers id=1 debit_account_id=1 credit_account_id=2 amount=10 ledger=700 code=10;
Now, the amount of 10
has been credited to account
2
and debited from account 1
.
7. Look Up Accounts
Let’s query TigerBeetle for these two accounts to verify the transfer we made!
lookup_accounts id=1, id=2;
{
"id": "1",
"user_data": "0",
"ledger": "700",
"code": "10",
"flags": [],
"debits_pending": "0",
"debits_posted": "10",
"credits_pending": "0",
"credits_posted": "0"
}
{
"id": "2",
"user_data": "0",
"ledger": "700",
"code": "10",
"flags": "",
"debits_pending": "0",
"debits_posted": "0",
"credits_pending": "0",
"credits_posted": "10"
}
And indeed you can see that account 1
has
debits_posted
as 10
and account 2
has credits_posted
as 10
. The 10
amount is fully accounted for!
You can take a look at the Accounts
reference to
understand all of the fields on the accounts.
You can also take a look at the Request Types to see what else you can do with the REPL.
Optional: Run a Multi-Node Cluster
Up to this point, we have only shown you how to run a single-node TigerBeetle cluster. In production, TigerBeetle is intended to be run with 6 nodes.
Here, we will show you how to run a 3-node cluster (the idea is the same for 6 nodes):
First, create the data files for each node:
./tigerbeetle format --cluster=0 --replica=0 --replica-count=3 --development 0_0.tigerbeetle
./tigerbeetle format --cluster=0 --replica=1 --replica-count=3 --development 0_1.tigerbeetle
./tigerbeetle format --cluster=0 --replica=2 --replica-count=3 --development 0_2.tigerbeetle
Note that the data file stores which replica in the cluster the file belongs to.
Start each server in a new terminal window:
./tigerbeetle start --addresses=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002 --development 0_0.tigerbeetle
./tigerbeetle start --addresses=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002 --development 0_1.tigerbeetle
./tigerbeetle start --addresses=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002 --development 0_2.tigerbeetle
TigerBeetle uses the --replica
that’s stored in the data
file as an index into the --addresses
provided.
You can connect to the REPL as described above try creating accounts and transfers in this cluster.
You can also read more about deploying TigerBeetle in production.
Next: Designing for TigerBeetle
Now that you’ve created some accounts and transfers, you may want to read about how TigerBeetle fits into your system architecture and dig into the data model.
Edit this page