Skip to content
A CLI budgeting tool for nerds
Branch: master
Clone or download
Pull request Compare This branch is 102 commits ahead of geekforbrains:master.
Latest commit 95f0756 Jul 9, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
oink minor bugfixes Jul 8, 2018
tests refactored structure for accounts; fixed some sql interpolation; some… Jul 3, 2018
.gitignore Working on accounts logic. Apr 2, 2016
LICENSE Setting up package for pypi. Mar 25, 2016 updated usage docs and TODO list Jul 8, 2018
setup.cfg pypi preparing Jul 8, 2018 fixed dupe license Jul 8, 2018


A CLI budgeting tool for nerds. Uses a sqlite3 db stored in the folder of your choice (hint: Dropbox).

Currently only supports Python 3.x.


To install Oink simply run the following from the same directory as the file:

python install

Now you can launch Oink from anywhere via the command-line with the oink command.


Type ? at any time to see the current sections available commands.

<arg> style arguments are required.

[arg] style arguments are optional.


  • la - List all bank accounts and their details.
  • aa - Add a new bank account.
  • ra - Rename a bank account.
  • da <id> - Delete a bank account.


  • at - Record a new transaction.
  • lt [account] [num] - List [num] recent transactions for account. Defaults to 10. lt * * to list all transactions for all accounts.
  • ar <amount> <source_account> <destination_account> - Add transfer transaction between two accounts.
  • et <id> - Edit a transaction.
  • dt <id> - Delete a transaction.


  • ac <name> - Add new category for budgeting and grouping transactions.
  • lc - List all categories
  • rc <name> <new_name> - Rename a category
  • dc <id> - delete a category


  • ab <account_id> - Add new budget for an account
  • lb [month] [year] - List budgets for all accounts. Use [month] and [year] to filter for specific months.
  • db <id> - Delete a budget


  • rep <file> <from_date> [to_date] [format] - Generate a report for a date range. Default is from <from_date> to the current date. If no <format> is specified, will attempt to infer the format based on the file extension. Date formats are in the YYYY-mm-dd format (e.g. 2018-06-23).


Please be aware this project is still incubating and has not yet reached a fully stable release. Below are some of my top-priority tasks (in an arbitrary order albeit) for Oink:

  • Write base unit tests
  • Add tab completion to command input
  • Implement CSV report support
  • Implement PDF report support
  • Implement JSON report support
  • Implement TXT report support
  • Implement MarkDown report support
  • Implement HTML report support
  • Add support for recurring transactions
  • Add new transaction type for transfer transactions
  • Add category-transaction breakdown to reports
  • Add support for Oink to be run as traditional CLI (e.g. oink <command> <args> [opts])
  • Persist command history between sessions
  • Automatic budget renewals per month
  • Automatic report generation per month
  • OS push notifications
You can’t perform that action at this time.