SkillAgentSearch skills...

Tackler

Fast, reliable bookkeeping engine with native GIT SCM support for plain text accounting

Install / Use

/learn @tackler-ng/Tackler
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

...

  1. Tackler has excellent performance, it can process 700_000 transactions per second on modern laptop. See link:https://tackler.fi/docs/tackler/latest/features/performance/[Performance] for details.

  2. 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, and it's the basis of all current development activities.

Tackler is in link:https://tackler.fi/docs/tackler/latest/features/[feature] parity with and beyond of the old Scala code base. It's using the same set of test reference vectors as the original tackler-mk1.

[NOTE]

Tackler is tested with 501 link:https://github.com/tackler-ng/tackler-t3db[tracked test vectors]

All Tackler CLI functionality is supported, including link:https://tackler.fi/docs/tackler/latest/journal/format/[Tackler Journal Format], transaction storages (link:https://tackler.fi/docs/tackler/latest/journal/fs-storage/[Filesystem], link:https://tackler.fi/docs/tackler/latest/journal/git-storage/[Git SCM]), all reports (link:https://tackler.fi/docs/tackler/latest/reports/report-balance/[Balance], link:https://tackler.fi/docs/tackler/latest/reports/report-balance-group/[Balance Group], link:https://tackler.fi/docs/tackler/latest/reports/report-register/[Register]) and all exports (link:https://tackler.fi/docs/tackler/latest/reports/export-equity/[Equity], link:https://tackler.fi/docs/tackler/latest/reports/export-identity/[Identity]).

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]

  • link:https://tackler.fi/docs/tackler/latest/usage/txn-filters/[Transaction Filters] for powerful selectors of used accounting data

  • 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

  • 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

See tackler --help, link:https://tackler.fi/docs/tackler/latest/[Documentation] and link:examples/tackler.toml[Tackler Configuration] how to use tackler-ng.

== 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 ##################################################################################

See tackler --help, link:examples/tackler.toml[Tackler configuration] file, tackler link:https://github.com/tackler-ng/tackler/tree/main/examples[examples] and link:tackler-cli/CRATES.md[Tackler 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].

== 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] and link:https://github.com/RagibHasin[RagibHasin]

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].

View on GitHub
GitHub Stars140
CategoryDevelopment
Updated13d ago
Forks8

Languages

Rust

Security Score

100/100

Audited on Mar 23, 2026

No findings