Installation Manual

To use tackler cli you will need

  • Tackler binary

  • Journal configuration

  • Some transaction data

This can be done in few these two steps:

Install tackler binary
cargo install --locked tackler
Create journal example
tackler a new journal
tackler --config journal/conf/tackler.toml

That’s it, you are all done! Tackler is now ready to be used.

Minimal setup

The minimal journal configuration created in the previous setup can be used just fine, and it’s best way to create and start a new journal.

How to start new journal
$ tackler new journal
$ tackler --config journal/conf/tackler.toml

Feel free to add, modify or delete transaction files under the journal/txns directory. Tackler will pick up automatically all files ending as .txn under that directory.

To use some of the more advanced features of tackler (strict journal validation, Commodity Price Data, Git SCM Storage, Accounting Auditing), the default configuration should be tailored more.

Minimal setup with Git SCM Storage

The minimal setup can be used as it is with Git SCM backed. See Git SCM Primer how to do that.

Recommended Setup and layout

Create default journal setup with tackler new journal command. That will create a new journal setup with default configuration files and example transactions, as laid out below:

Directory structure of minimal setup
 journal
 ├── conf
 │   ├── tackler.toml
 │   ├── accounts.toml
 │   ├── commodities.toml
 │   └── tags.toml
 └── txns
     ├── price.db
     ├── welcome.txn
     └── journal.txn

Journal structure

Tackler supports automatic Transaction Data Sharding for journal, and it’s recommended way to structure and store transaction data.

Benefits of this are easy management of journal (the files are smaller, risk of editing conflicts is smaller), more logical structure inside the journal and data is easier to dice for reporting without Transaction Filters.

Journal structure with month based sharding
.
├── bin
│   └── tackler
└── journal
    ├── conf
    │   ├── tackler.toml
    │   ├── accounts.toml
    │   ├── commodities.toml
    │   └── tags.toml
    └── txns
        ├── ...
        ├── 2020
        │   ├── ...
        │   └── 12
        │       ├── journal-1.txn
        │       └── journal-2.txn
        └── 2021
            └── 01
                ├── journal-1.txn
                └── journal-2.txn

This setup uses year/month based sharding for transactions (the directory structure under txns).

The Production Setup has more information about how to extend this with external data (readmes, documentation, etc.) for the journal.

The default minimal setup creates a configuration, which can be used with both storage backends, see Filesystem Storage Guide and Git SCM Storage Guide for full documentation.

See Git SCM Primer how to initialize Git SCM storage.

tackler.toml

The key settings is kernel.input in the tackler.toml

journal/conf/tackler.toml
[kernel.input]
storage = "fs"
fs  = { path = "..",      dir = "txns", ext = "txn" }
git = { repo = "../.git", dir = "txns", ext = "txn", ref = "main" }
...
[transaction]
accounts    = { path = "accounts.toml" }
commodities = { path = "commodities.toml" }
tags        = { path = "tags.toml" }

This setup makes it possible to separate journal setup and data, and store relevant configuration next to transaction data (and possibly under version control).

accounts.toml

If there is missing or mistyped account, that will cause an error and tackler will stop processing journal. See accounts.toml for full documentation of Chart of Accounts and commodity listing.

commodities.toml

If there is missing or mistyped commodities, that will cause an error and tackler will stop processing journal. See commodities.toml for full documentation of Chart of Accounts and commodity listing.

tags.toml

If there is missing or mistyped tag, that will cause an error and tackler will stop processing journal. See tags.toml for full documentation of Chart of Tags.

Next steps

See tackler.toml, accounts.toml, commodities.toml and tags.toml for full configuration options.

Tackler Journal

General information about the journal

Filesystem Storage Guide

How to store journal on the filesystem

Git SCM Storage Guide

How to use Git SCM Storage

Tackler Examples

Examples and inspiration how to use Tackler in real life use cases.

How to Build and Install Tackler with Cargo

To build the tackler binary, you need to have Rust toolchain installed. Rust toolchain is available for Windows, Linux and MacOS on multiple different hardware platforms. The toolchain installation is fully automated by rustup tool.

Easiest way to install tackler is to use the Rust package manager, Cargo.

Install latest released version of tackler
cargo install --locked tackler

If you run the following command, it will download the source code, build the binary and install it in your system under CARGO_HOME/bin (typically ~/.cargo/bin on MacOS and Linux, and C:\Users\<UserName>\.cargo\bin on Windows).

You can uninstall tackler by running cargo uninstall tackler.

Development version with Cargo

You can also install the latest development version directly with cargo

Install latest development version
cargo install --locked \
   --git https://github.com/tackler-ng/tackler tackler

Tackler main branch should build and pass CI/CD pipeline all the time.

Build from source

If you want to build the tackler from source, you can do so by cloning the repository and building it with Cargo. It will take care of all dependencies and build the binary for you.

Make sure to use --release flag to build the release version of the binary.
# Get the source code
$ git clone --recurse-submodules https://github.com/tackler-ng/tackler

$ cd tackler

# List available releases
$ git tag -l

# Select the latest release, e.g. v25.05.1
$ git checkout v25.05.1

# Build tackler, use --release flag for releases!
$ cargo build --release --locked --bin tackler

# Check the version info
$ target/release/tackler --version

tackler 25.5.1 (v25.05.1 - 86d86b5c0e947b8)

Development with Just

Tackler has justfile which contains most common actions needed for development workflow. You can find just here: https://github.com/casey/just