---
title: "BankBridge CLI: Your Bank Data in the Terminal"
description: "The bankbridge command reads your accounts, transactions, bills and holdings from a shell. For agents like Aider and Pi, and for cron, scripts and CSV exports."
url: "https://bankbridge.money/cli"
---
Command line

# Your bank accounts, one command away.

The `bankbridge` command reads your connected accounts, transactions, recurring charges and holdings from a shell. It’s built for agents that work by running commands, like Aider and Pi, and it works for anything else that can start a program: cron, scripts, spreadsheets, the CSV your accountant asked for.

install on macOS or Linux

```
curl -fsSL https://bankbridge.money/install.sh | sh
```

try it with fictional data, no signup

```
$ bankbridge accounts --demo
INSTITUTION      NAME                    TYPE        SUBTYPE      LAST 4     BALANCE
Chase            Chase Total Checking    depository  checking     1029     $4,234.18
Chase            Chase Savings           depository  savings      5531    $18,750.00
Chase            Sapphire Preferred      credit      credit card  7714     $1,284.56
Bank of America  BoA Cash Rewards        credit      credit card  3390       $847.22
Fidelity         Fidelity Brokerage      investment  brokerage    7854    $50,154.00
```

Then run `bankbridge login` and paste an API key from [your dashboard](https://bankbridge.money/dashboard/settings). A subscription is $5/month or $50/year per connected bank, and the command line tool comes with it. It reads the same banks as every MCP app you connect.

## Why agents use it

Most agents reach BankBridge over [MCP](https://bankbridge.money/docs). Some are built around a different idea: the model runs shell commands and reads what they print. For those agents, a command-line tool is the natural way in: install it, sign in, and the agent can run it.

### Aider

Aider has no MCP support. It does run commands: `/run` (or `!`) runs one and offers to add the output to the chat, and the model can suggest commands of its own, which Aider asks you to approve.

inside aider

```
> /run bankbridge recurring --json
Add 1.6k tokens of command output to the chat? (Y)es/(N)o [Yes]: y
> Which of these should I cancel to save $100 a month?
```

For a bigger question, export a file and hand it over read-only with `aider --read october.csv`. [Aider setup](https://bankbridge.money/docs/aider)

### Pi

Pi ships with four tools by default: `read`, `bash`, `edit` and `write`. Anything on your PATH is already within reach. Pi has also spoken MCP since version 0.99.0, so you can choose: the MCP connection, or the command line tool plus a short skill that Pi loads only when a question is about money. The command line tool lets the model filter with `jq` before the output reaches the conversation.

inside pi

```
!bankbridge cashflow --month 2026-10

> What did I spend on food in October, compared with September?
  (Pi runs: bankbridge spending --month 2026-10 --json)
  (Pi runs: bankbridge spending --month 2026-09 --json)
```

[Pi setup](https://bankbridge.money/docs/pi), with the skill file and the MCP command.

### Any other agent with a shell

Add a line to the file your agent reads for project notes, such as `AGENTS.md`:

AGENTS.md

```
Bank data: run `bankbridge --help`. Use --json. Read-only. Positive amounts are money out.
If a command prints a warning, tell me: a bank may be missing from the result.
```

Whatever a command prints and the agent reads goes to the model provider that agent uses, the same as any other command output.

## And everything else

No agent required. It’s a normal Unix tool: data on stdout, errors on stderr, exit codes you can branch on.

### Your accountant’s CSV

a full year, to a file

```
bankbridge transactions --from 2025-01-01 --to 2025-12-31 -o 2025-transactions.csv
```

### Cron

Run `bankbridge login` once, then schedule it. `--strict` exits 8 if a bank didn’t answer, so a job can’t quietly save a short file.

crontab: every Monday at 7

```
0 7 * * 1 $HOME/.local/bin/bankbridge recurring --strict -o $HOME/finance/recurring.csv
```

### Scripts

how many charges over $100 last month?

```
bankbridge transactions --month 2026-10 --json \
  | jq '[.transactions[] | select(.amount > 100)] | length'
```

### Spreadsheets

Every CSV is plain UTF-8 with a fixed header row, and it opens directly in Excel, Numbers or Google Sheets. Amounts are real numbers. Merchant names that start with `=` or `+` are escaped so a spreadsheet can’t run them as formulas.

## Commands

`bankbridge accounts`Every connected account with its balance

`bankbridge transactions --month 2026-10`Transactions, by month, date range, account, category or amount

`bankbridge search netflix`Find transactions by merchant or description

`bankbridge spending --by merchant`Totals by category, merchant, month or week

`bankbridge recurring`Subscriptions and bills

`bankbridge cashflow --month 2026-10`Income, expenses and net for a month

`bankbridge merchant netflix`Every charge from one merchant, with totals

`bankbridge categories`The spending categories in your data

`bankbridge holdings`Investment positions with cost basis and gain or loss

`bankbridge investments --subtype dividend`Buys, sells, dividends and fees

`bankbridge connect`The link for adding or reconnecting a bank

Tables by default. `--json` prints the same fields as the matching MCP tool. `--csv` prints CSV. `-o FILE` writes a file, and a name ending in `.csv` or `.json` picks the format. `--account` takes an account id or its last 4 digits. Long lists read every page unless you pass `--limit`. On transactions, positive amounts are money out and negative amounts are money in. `bankbridge <command> --help` lists the rest.

## Exit codes

0

Success

1

General error, such as an account id that doesn't exist

2

Bad arguments

3

No API key, or the key was rejected

4

Finish setup: no subscription yet, or no bank connected

5

Every bank asked for needs reconnecting

6

Network problem or timeout

7

Rate limited, even after retries

8

With --strict: at least one bank did not answer

## Where your data goes

-   Read-only. No command can move money or change anything at your bank.
-   We keep no copy of your balances or transactions, and running a command doesn’t change that. An export is written to your disk and nowhere else.
-   Files from `-o` are readable only by your user (mode 600). After that the file is yours to look after, like a statement you downloaded from your bank.
-   Your API key is saved at `~/.config/bankbridge/config.json` (mode 600), or read from `BANKBRIDGE_API_KEY`. It’s never accepted as a flag, so it stays out of your shell history. Rotate your key in [settings](https://bankbridge.money/dashboard/settings) and the old one stops working.

## Install details

The script reads your OS and CPU, downloads one binary from bankbridge.money, checks its SHA-256 and puts it in `~/.local/bin`. Set `BANKBRIDGE_INSTALL_DIR` to use another folder. It doesn’t edit your shell profile or touch any agent’s settings. It runs on macOS and Linux, on arm64 and x64, with nothing else to install, and the macOS builds are signed and notarized.

update and remove

```
bankbridge update
rm ~/.local/bin/bankbridge ~/.config/bankbridge/config.json
```
