Skip to main content

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.

Metadata

Release files for braavos 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for braavos 0.2.1
File Size Uploaded
braavos-0.2.1.tar.gz 371.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for braavos 0.2.1
File Interpreter ABI Platform
braavos-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 392.3 kB

Release files / braavos-0.2.1.tar.gz

Download URL braavos-0.2.1.tar.gz
Size 371.7 kB
Tags Source
SHA-256 checksum
How to use checksums
47614b86a640208b5ddb39e359b3ad41abbd05c523ec5024b07be3bc6eea0691
BLAKE2b-256 checksum
How to use checksums
3f9027db4f5d1b214ce4e8aa8e3ef2b2de63dbbebdfde3689ff35249d08142ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / braavos-0.2.1-py3-none-any.whl

Download URL braavos-0.2.1-py3-none-any.whl
Size 20.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
07ce0cc0b619049057c07c7109ea4acbc8edab0030f6db63ac4c31354cdc1899
BLAKE2b-256 checksum
How to use checksums
9860853873c3c00ab6e0ada63f8521012807e091f60e845e1057685f672bc596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page