mkshp-dev1k downloadsComprehensive financial dashboard with Beancount integration. Features unified entry management, live BQL queries, connection validation, auto-starting backend, and streamlined settings.

A comprehensive Beancount integration for Obsidian that transforms your vault into a powerful plain-text accounting dashboard.
📘 Full Documentation - Read the complete guide for features, configuration, and usage.
This plugin integrates with your existing Beancount setup:
pip install beancountpip install beanquery)pip install beanprice)Note:
bean-queryandbean-priceare separate packages from Beancount itself and require their ownpip installcommands. See the Requirements Documentation for more details.
Beancount Ledger.<vault>/.obsidian/plugins/obsidian-finance-plugin/For beta testers who want to try the latest development version:
Install BRAT Plugin:
Add Beta Plugin:
Ctrl/Cmd + P)mkshp-dev/obsidian-finance-plugindev (or master for stable)Enable Plugin:
BRAT will automatically check for updates and notify you of new versions. This is the recommended way to test beta features before official releases.
Note: Beta versions may have bugs. Always keep backups of your Beancount files and vault data.
Beancount Ledger is a local-first plugin. It does not send ledger data, account names, query results, or prices to a project server.
| Access | Current use | Direction |
|---|---|---|
| Vault file access | Reads/writes Beancount files stored inside the current Obsidian vault, including generated prices.beancount output. |
All file I/O operations (reading, writing, backups, migration) are fully migrated to use the Obsidian Vault API. |
Filesystem access (fs) |
None. Direct filesystem access via the Node.js fs module has been completely eliminated from the codebase. |
Eliminated. Resolves community-plugin security warnings regarding direct filesystem access. |
Shell execution (child_process) |
Runs local Beancount tools such as bean-query, bean-check, and bean-price. |
Required to run the local Python packages (beancount, beanquery, beanprice). These CLI commands are executed safely via parameterized spawn calls bypassing the shell, and all user input is strictly whitelisted and sanitized to eliminate shell injection vulnerabilities. |
| Vault enumeration | Finds configured BQL/template files in the vault. | Required for plugin features. |
| Clipboard access | Copies query results or transaction text when the user clicks a copy action. | User-initiated only. |
For compatibility with Obsidian community plugin reviews and security standards, the plugin strictly requires your main ledger and included Beancount files to live inside the current vault. If your ledger currently lives outside the vault, move it into the vault and update the plugin settings to point to the vault-local file. The plugin strictly uses vault-local file access using the Obsidian Vault API, and direct filesystem writes outside the vault are not supported.
Beancount is a Python library with no native JavaScript/WebAssembly counterpart. Therefore, to compute balances, render interactive charts, validate ledger files, and fetch prices, this plugin must interface with your local Python installation via child_process.spawn.
To ensure maximum security and privacy:
shell: false), which prevents shell-injection exploits.We welcome contributions! Please see our CONTRIBUTING.md for details.
# Clone the repository
git clone https://github.com/mkshp-dev/obsidian-finance-plugin.git
cd obsidian-finance-plugin
# Install dependencies
npm install
# Start development build
npm run dev
# Build for production
npm run build
This project is licensed under the MIT License - see the LICENSE file for details.
If this project helps your workflow, consider supporting its development with a ☕