Personal finance CLI built for AI workflows
Project description
spendctl
A personal finance CLI built for AI workflows.
What it does
Track spending, income, debt, and net worth from your terminal. Every command supports --json output, making it straightforward to integrate with any AI assistant — Claude, GPT, local models via Ollama or LM Studio, or custom scripts. Your financial data stays in a local SQLite file. No APIs, no cloud sync, no accounts to create. An optional Streamlit dashboard is available for visual analysis when you want it.
Features
- Zero runtime dependencies for the core CLI
--jsonoutput on every command for AI and script integration- Works with any AI — local models (Ollama, LM Studio), Claude, GPT, or custom scripts
- Interactive setup wizard (
spendctl init) - 13 CLI commands: transactions, balances, budgets, debt tracking, and more
- 7-page Streamlit dashboard (optional)
- SQLite backend — portable, inspectable, no server needed
- Config-driven — your accounts, categories, and budgets defined in one file
Quick Start
pip install spendctl
spendctl init # Interactive setup wizard
spendctl add 2024-01-15 "Grocery store" 87.42 --category Groceries
spendctl balance # See all account balances
spendctl balance --json | jq . # AI-friendly output
Commands
| Command | Description |
|---|---|
spendctl init |
Interactive setup wizard |
spendctl add |
Add a transaction |
spendctl list |
List and filter transactions |
spendctl balance |
Show account balances |
spendctl spending |
Spending breakdown by category |
spendctl debt |
Debt paydown progress |
spendctl budget |
Budget vs actual comparison |
spendctl summary |
Full monthly summary |
spendctl subscriptions |
Manage recurring charges |
spendctl backup |
Create a database backup |
spendctl export-csv |
Export transactions to CSV |
spendctl dashboard |
Launch the Streamlit dashboard |
spendctl config |
View, edit, or reset configuration |
AI Integration
Every command supports --json for structured output:
spendctl balance --json
spendctl spending --month 2024-01 --json
spendctl summary --json
This makes spendctl easy to integrate with any AI assistant. A local model can read your finances, add transactions, and provide insights — all through the CLI. Your data never leaves your machine.
Dashboard
Install with the optional dashboard dependencies:
pip install "spendctl[dashboard]"
spendctl dashboard
The dashboard runs at http://localhost:8501 and includes 7 pages:
- Overview — sparklines, net worth gauge, budget vs actual at a glance
- Spending — category pie and bar charts with budget alerts
- Debt — progress bars, payoff projections, interest savings calculator
- Transactions — filterable transaction table
- Subscriptions — active and canceled recurring charges
- Loans — student loan payoff tracking
- Report — printable monthly budget summary
Configuration
Run spendctl init to create your config file at ~/.config/spendctl/config.json. The wizard walks you through setting up accounts, categories, income sources, and budget targets.
After setup, use the config subcommand to manage your configuration:
spendctl config show # Print current config as JSON
spendctl config edit # Edit a section interactively
spendctl config reset # Delete config and re-run the wizard
Development
git clone https://github.com/Jscoats/spendctl.git
cd spendctl
pip install -e ".[dev]"
pytest
ruff check src/ tests/
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spendctl-0.1.0.tar.gz.
File metadata
- Download URL: spendctl-0.1.0.tar.gz
- Upload date:
- Size: 65.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc1c989a8176562767b91c8f3fff9efbb7de7553f7a9ef3f8076709dd8fd72c7
|
|
| MD5 |
210583b98ff716d6ddd265b737491e14
|
|
| BLAKE2b-256 |
2612080282f23277389621a52ea373ecf3174bce9dbaad0994f311c3cbfeb952
|
File details
Details for the file spendctl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: spendctl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 54.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe6691ab48f0d01b29ef827430cc22ea21c8de36156b21da94c858365f5bbb04
|
|
| MD5 |
bcb255aeb1ad5b0004bcc24423f6d50d
|
|
| BLAKE2b-256 |
1fe2894bf280e3e407672d99b6ef0f585c28494cbfdf6b0ba55d6442d6680520
|