🏦 Data analytics on your bank account data https://pypi.org/project/braavos/
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kamil Marut 5d7cb53ab0
All checks were successful
CI / check (push) Successful in 32s
CI / release (push) Has been skipped
docs: Add MIT license to metadata
2026-08-12 14:50:51 +02:00
.forgejo/workflows ci: Run quality and release CI 2026-08-12 13:19:12 +02:00
braavos ci: Run quality and release CI 2026-08-12 13:19:12 +02:00
docs docs: Add metadata to pyproject.toml 2026-08-12 14:36:46 +02:00
tests project: Rename project to "braavos" 2026-08-12 13:06:14 +02:00
.gitignore Add .gitignore 2026-08-10 22:54:18 +02:00
LICENSE docs: Add LICENSE and logo 2026-08-12 14:11:09 +02:00
pyproject.toml docs: Add MIT license to metadata 2026-08-12 14:50:51 +02:00
README.md docs: Extend the quickstart docs 2026-08-12 14:13:46 +02:00
uv.lock project: Rename project to "braavos" 2026-08-12 13:06:14 +02:00

braavos

🏦 Data analytics on your bank account data

Features

  • A terminal TUI over the Enable Banking API.
  • View, filter and sort your transaction history
  • Categorize each transaction with custom rules

Setup

  1. Generate a key and register an application (sandbox to start) at enablebanking.com:
openssl genrsa -out braavos.pem 2048
openssl req -new -x509 -key braavos.pem -out braavos.crt -days 365 -subj "/CN=braavos"

Upload braavos.crt, note the application ID, and register the default redirect URL (https://enablebanking.com/auth_redirect) - you can then paste the redirected URL back into the CLI.

You can also choose to generate the new key in the browser and download it as a .pem file.

init copies the key into ~/.config/braavos/private_key.pem (mode 0600) rather than remembering where you left it, so afterwards the original can be archived offline or deleted.

  1. Install

The braavos CLI is available on PyPi and can be installed via pip.

pip install braavos
# or via uv:
uv tool install braavos
  1. Get started with the app
braavos init          # copies key + app ID into ~/.config/braavos/
braavos connect       # bank consent in the browser, paste redirect URL back
braavos sync          # pull transactions into the local SQLite cache
braavos               # open the TUI

~/.config/braavos/ (mode 0700) then holds your private key and your full transaction history. Back it up; don't sync it to a shared drive.

Development

Install the development dependencies and run the CLI from source:

uv sync
uv run braavos

Categories

Spending categories live in the local database and are managed in the TUI's Categories tab.

A category doesn't need a rule. One with no keywords is simply never assigned automatically, which is what you want for something you only ever tag by hand.

Keywords match case-insensitively as plain substrings against counterparty and description; first match wins, everything else lands in Other (which can't be renamed or deleted). Ruled categories are tried in the order they were created and listed in that order, so a narrow rule you want to win should be created before a broad one; editing a rule keeps its place.

Every transaction's category is stored, and saving a rule re-categorises all history immediately.

Overriding a single transaction

Press c (or Enter) on a transaction to pick its category from a list. A category you chose by hand is shown in yellow and is never touched by rule changes again — pick — automatic (rules) — to hand it back to the keyword rules.

License

Copyright (c) 2026 by Kamil Marut

braavos is under the terms of the MIT License, following all clarifications stated in the license file.