BeanTab is a spreadsheet-like interface for Fava to mangage balance assertions in your Beancount ledger.
What's the ideal way to manage balance assertions? I switched to Beancount from spreadsheets where I used to track balances of accounts and, as a consequence, total net worth. I got many more possibilities and features as a reward of that migration but if I'm being honest, some aspects of tracking just balances were more convenient in spreadsheets.
Why not to get the best of both worlds?
BeanTab is meant to be a part of Beancount plugin ecosystem that makes that particular workflow pleasant to use. It relies on balance-ext and pad-ext from beancount-lazy-plugins extensions that augment the original balance and pad operations with more functionality and flexibility.
- Spreadsheet-style balance table — View all balance assertions, valuations, and
balance-extentries in an editable grid (powered by RevoGrid) - Inline editing — Add or modify balance entries directly in the table; changes are written to your Beancount files on save
- Multiple balance types — Supports regular Balance, valuation, and
balance-extdirectives (regular, padded, full-padded, valuation) - Filtering — Can be filtered by account / regex and a couple of additional settings to only show the set of accounts you're interested in
- URL-persisted settings — Current configuration (filters, sort, layout) is stored in the URL for bookmarking / saving using
fava-sidebar-linkdirective
pip install git+https://github.com/Evernight/beantab.gitAdd the Fava extension directive:
2024-01-01 custom "fava-extension" "beantab" "{}"
For suggested usage pattern you will need to set up balance-ext and pad-ext from beancount-lazy-plugins. See example for more details.
- Run Fava with your ledger:
fava your-ledger.beancount-
Open the BeanTab tab in the Fava sidebar.
-
Use the table to:
- View balances across accounts and dates
- Edit cells to add or change balance assertions (append
~for padded,!for regular when overriding) - Use Settings to adjust grouping, filtering, and visibility
- Save changes to write
balance-extentries to your ledger / included files
make deps # Install Python (uv) and frontend (npm) dependencies
make build # Build the frontend bundle
make dev # Run Fava with example ledger + esbuild watchWith a custom ledger path:
make dev LEDGER_FILE=path/to/your/ledger.beancount- lazy-beancount - Beancount with batteries included. Includes Beantab for balance management as part of proposed flow.
- beancount-lazy-plugins - Set of plugins used by Beantab
