Latest released version
August 20, 2026 · View on GitHub
image:https://github.com/tackler-ng/tackler/actions/workflows/ci.yml/badge.svg["ci status", link="https://github.com/tackler-ng/tackler/actions"] image:https://img.shields.io/github/v/release/tackler-ng/tackler?include_prereleases&color=%230868da["Github Release", link="https://github.com/tackler-ng/tackler/releases"] image:https://tackler.fi/img/badge-crates.svg["crates.io: tackler", link="https://crates.io/crates/tackler"] image:https://tackler.fi/img/tackler-docs.svg["Tackler Docs", link="https://tackler.fi/docs"] image:https://img.shields.io/github/discussions/tackler-ng/tackler["GitHub Discussions", link="https://github.com/tackler-ng/tackler/discussions"] image:https://tackler.fi/img/badge-matrix.svg["matrix: tackler", link="https://matrix.to/#/#tackler:matrix.org"]
= Tackler
link:https://tackler.fi/[Tackler] is fast (1), reliable bookkeeping engine with native GIT SCM support for plain text accounting, written in Rust.
cargo install --locked tackler # (2) tackler new demo tackler --config demo/conf/tackler.toml
This will produce balance and register reports for the demo journal.
Balance Report
0.00 17.50 Expenses
0.00 12.00 Expenses:Food
12.00 12.00 Expenses:Food:Fast-Food
0.00 5.50 Expenses:Sweets
2.50 2.50 Expenses:Sweets:Candy
3.00 3.00 Expenses:Sweets:Ice·Cream
===================== 17.50
Register Report
...
-
Tackler has excellent performance, it can process 900 000 transactions per second on modern laptop. See link:https://tackler.fi/docs/tackler/latest/features/performance/[Performance] for details.
-
If you don't have Rust toolchain installed, get it link:https://www.rust-lang.org/tools/install[from here].
== Project Status
Tackler is reimplementation of 10 years old Scala based system (tackler-mk1), and it's the only https://tackler.fi/docs/tackler/latest/governance/[supported version] of tackler.
Tackler is beyond link:https://tackler.fi/docs/tackler/latest/features/[feature] parity of the old Scala code base. It's using the same foundation of test reference vectors as the original tackler-mk1.
[NOTE]
Tackler is tested with 520 link:https://github.com/tackler-ng/tackler-t3db[tracked test vectors]
== Features
Tackler has simple, concise and unambiguous link:https://tackler.fi/docs/tackler/latest/journal/format/[Journal Format].
It has support for multiple transaction storage ("journal") types:
- Plain link:https://tackler.fi/docs/tackler/latest/journal/fs-storage/[Filesystem] based journals
- Native link:https://tackler.fi/docs/tackler/latest/journal/git-storage/[Git SCM] based journals
Multiple report types are supported:
- link:https://tackler.fi/docs/tackler/latest/reports/report-balance/[Balance Report], with flat and tree view
- link:https://tackler.fi/docs/tackler/latest/reports/report-balance-group/[Balance Group Report], with flat and tree view
- link:https://tackler.fi/docs/tackler/latest/reports/report-register/[Register Report]
As well multiple Exports types:
- link:https://tackler.fi/docs/tackler/latest/reports/export-equity/[Equity Export]
- https://tackler.fi/docs/tackler/latest/reports/export-accounts/[Accounts Exports]
- link:https://tackler.fi/docs/tackler/latest/reports/export-identity/[Identity Export]
Other notable features are:
-
Support for link:https://tackler.fi/docs/tackler/latest/commodities/[Commodities, Currencies and Shares]
-
link:https://tackler.fi/docs/tackler/latest/commodities/price/[Market Value of Commodities and Shares], including different valuation (Mark-to-Market) methods: ** link:https://tackler.fi/docs/tackler/latest/commodities/price/current-market-value/[Current Market Value] ** link:https://tackler.fi/docs/tackler/latest/commodities/price/historic-market-value/[Historic Market Value] ** link:https://tackler.fi/docs/tackler/latest/commodities/price/variable-market-value/[Variable Market Value]
-
Real transaction https://tackler.fi/docs/tackler/latest/reference/timestamps/[timestamps up to nanosecond] resolution and with timezone information ** Plain dates are supported too ** Also Civil date and time without zone is supported
-
link:https://tackler.fi/docs/tackler/latest/usage/txn-filters/[Transaction Filters] for powerful selectors of used accounting data
-
https://tackler.fi/docs/tackler/latest/auditing/[Accounting Auditing], with verification of historic accounting data
-
Accounting based on link:https://tackler.fi/docs/tackler/latest/usage/gis/[Geo Location] and link:https://tackler.fi/docs/tackler/latest/usage/gis/txn-geo-filters/[Transaction GIS Filters]
-
Optional link:https://tackler.fi/docs/tackler/latest/reports/formats/[JSON output] format
== Documentation
See tackler --help,
link:https://tackler.fi/docs/tackler/latest/reference/tackler-toml/[Tackler configuration],
accounting link:https://github.com/tackler-ng/tackler/tree/main/examples[examples] and
link:https://tackler.fi/docs/tackler/latest/usage/[CLI documentation]
how to use the rusty version of tackler.
link:docs/devel/readme.adoc[Developer's Guides] have technical information about Tackler. For Tackler user manual, see the https://tackler.fi/docs/tackler/latest/[Tackler Documentation].
== Installation
You can install tackler binary directly by https://www.rust-lang.org/tools/install[cargo], even without cloning the repo:
Latest released version
cargo install --locked tackler
Latest development version
cargo install --locked --git https://github.com/tackler-ng/tackler tackler
Or build it from the local source code.
== Build the Source Code
The main branch should link:https://github.com/tackler-ng/tackler/actions/workflows/ci.yml[build and pass]
all tests all the time.
You have to clone tackler source code with git submodules, as link:https://github.com/tackler-ng/tackler-tests[tests vectors] are located in a separate repository.
git clone --recurse-submodules https://github.com/tackler-ng/tackler
Then build the tackler binary - if you have link:https://github.com/casey/just[just] installed, building tackler is just:
just release-build
Tackler binary will be located at target/release/tackler.
Or with plain cargo command:
cd tackler-ng
The main branch should build and pass all tests
cargo build --release --locked --bin tackler
Again, the binary will be located at target/release/tackler
== Examples
See link:https://github.com/tackler-ng/tackler/tree/main/examples[examples folder in the repository] for full list of examples.
=== Simple example with Filesystem Journal
target/release/tackler --config examples/simple.toml
=== Complex example with Git Storage and Audit mode
Audit example uses Git SCM as journal storage, and strict and audit modes are activated by configuration.
target/release/tackler --config examples/audit.toml
Audit test data has a branch with 100_000 transactions, this query will execute in few seconds:
target/release/tackler
--config examples/audit.toml
--input.git.ref set-1e5
--accounts 'a:ay2016:am12'
.Report with Git Storage metadata
Git Storage reference : set-1e5 directory : txns extension : txn commit : 4648a2994b41ed341b544a148b3060fd2d267d79 author : tackler accounting@example.com date : 2016-12-31 17:41:24 +0000 subject : set-1e5: 2016-12-31
Txn Set Checksum SHA-256 : 2f4bc22df78502182aa27037d8d0f72462adb018be3e768399e0b803fa75baa7 set size : 100000
Account Selector Checksum SHA-256 : abbcd1800caab82df857441d734b728ca18850f08f9a1c96602ee740b970cae0 selector : 'a:ay2016:am12'
Balance Report
-133402.00 a:ay2016:am12
======================== -133402.00 ##################################################################################
== Credits
Special thanks to the Rust community for the all help and advice, without forgetting Clippy. link:https://github.com/GitoxideLabs/gitoxide[Gitoxide] is one of the key components which made Tackler possible - Thank you!
See link:CREDITS.adoc[CREDITS] for full details.
== Contributing
All contributions are valued and none is too small or insignificant.
See link:CONTRIBUTING.adoc[CONTRIBUTING] for details how you could participate with Tackler development.
Following people have helped or contributed to the development of Tackler:
link:https://github.com/byron[Byron], link:https://github.com/zamazan4ik[zamazan4ik], link:https://github.com/epage/[epage], link:https://github.com/BurntSushi[BurntSushi], link:https://github.com/RagibHasin[RagibHasin] and link:https://github.com/VrugteVlieg[VrugteVlieg]
Thank you!
== Security
If you find a security issue in Tackler, please report it as outlined in the link:./SECURITY.md[Security Policy].
== License
Tackler is licensed under the link:./LICENSE[Apache License, version 2.0].