cd /news/ai-agents/show-hn-cli-for-your-financial-data-โ€ฆ ยท home โ€บ topics โ€บ ai-agents โ€บ article
[ARTICLE ยท art-152435] src=kilianc.github.io โ†— pub= topic=ai-agents verified=true sentiment=โ†‘ positive

Show HN: CLI for your financial data (and Costco and Amazon)

A developer released fin, a command-line tool that connects bank, card and brokerage accounts through Plaid and pulls in Amazon and Costco purchases, running locally on the user's laptop with keys stored in the Keychain and costing nothing on Plaid's free Trial plan. fin exposes accounts and transactions as JSON for AI agents, as pages in a browser, as SQL queries, or as a Google Sheet, and in the posted example returned 412 transactions from 6 connections across 7 accounts. The tool is aimed at letting an agent answer spending questions directly, such as reporting September spending of $6,482, down 9% from August's $7,121.

read8 min views1 publishedOct 18, 2026
Show HN: CLI for your financial data (and Costco and Amazon)
Image: source

data, built for the AI era.

fin connects your banks, cards and brokerages through Plaid and brings in your Amazon and Costco purchases. It runs locally on your laptop, keeps its keys in your Keychain, and costs nothing on Plaid's free Trial plan. Ask your agent, open it all as pages in your browser, query your transactions with SQL, or keep them in a Google Sheet.

you โ€บ Build me a monthly spending review. Compare it to the month before.

  ran fin transactions --since 2026-08-01 --json
  โœ“ 412 transactions from 6 connections

agent โ€บ September spending was $6,482, down 9% from August ($7,121).
        Rent and utilities held at $2,850. Dining out rose +31% to $694,
        mostly six weekend orders from Sushi Ota. Shopping fell $1,216
        because August included a $1,180 standing desk.
        You saved $3,368, 34% of what came in.
bash
$ fin accounts
Accounts ยท 7 across 6 Items
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Item      โ”‚ Account            โ”‚ Mask โ”‚ Type                 โ”‚  Current โ”‚ Available โ”‚    Limit โ”‚ Ccy โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ chase     โ”‚ Sapphire Preferred โ”‚ 4242 โ”‚ credit card credit   โ”‚  1834.12 โ”‚  13165.88 โ”‚ 15000.00 โ”‚ USD โ”‚
โ”‚ chase     โ”‚ Total Checking     โ”‚ 8810 โ”‚ checking depository  โ”‚  6120.40 โ”‚   6120.40 โ”‚          โ”‚ USD โ”‚
โ”‚ amex      โ”‚ Gold Card          โ”‚ 1005 โ”‚ credit card credit   โ”‚   912.77 โ”‚           โ”‚          โ”‚ USD โ”‚
โ”‚ citi      โ”‚ Savings            โ”‚ 3127 โ”‚ savings depository   โ”‚ 24500.00 โ”‚  24500.00 โ”‚          โ”‚ USD โ”‚
โ”‚ fidelity  โ”‚ Roth IRA           โ”‚ 0917 โ”‚ roth investment      โ”‚ 48210.57 โ”‚           โ”‚          โ”‚ USD โ”‚
โ”‚ schwab    โ”‚ Brokerage          โ”‚ 3301 โ”‚ brokerage investment โ”‚ 96215.00 โ”‚  42680.00 โ”‚          โ”‚ USD โ”‚
โ”‚ robinhood โ”‚ Individual         โ”‚ 7712 โ”‚ brokerage investment โ”‚ 18440.10 โ”‚           โ”‚          โ”‚ USD โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ•ฏ
Balances from Plaid's daily refresh. Use --live to ask each bank now (billed per call).
bash
$ fin accounts --json
{
  "accounts": [
    {
      "item": "chase",
      "institution": "Chase",
      "name": "Sapphire Preferred",
      "mask": "4242",
      "type": "credit",
      "subtype": "credit card",
      "balances": {
        "available": 13165.88,
        "current": 1834.12,
        "limit": 15000,
        "iso_currency_code": "USD"
      }
    },
    โ€ฆ
  ],
  "env": "production",
  "errors": [],
  "live": false
}
bash
$ fin transactions --since 2026-10-01
Transactions ยท 2026-10-01 โ†’ 2026-10-09 ยท 8
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Date       โ”‚ Item  โ”‚ Account            โ”‚ Description        โ”‚   Amount โ”‚ Ccy โ”‚ Category           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 2026-10-09 โ”‚ chase โ”‚ Sapphire Preferred โ”‚ Sushi Ota          โ”‚   -86.40 โ”‚ USD โ”‚ food and drink     โ”‚
โ”‚ 2026-10-08 โ”‚ amex  โ”‚ Gold Card          โ”‚ Whole Foods Market โ”‚  -142.18 โ”‚ USD โ”‚ food and drink     โ”‚
โ”‚ 2026-10-08 โ”‚ chase โ”‚ Total Checking     โ”‚ ACME Corp Payroll  โ”‚  4925.00 โ”‚ USD โ”‚ income             โ”‚
โ”‚ 2026-10-07 โ”‚ chase โ”‚ Sapphire Preferred โ”‚ Uber               โ”‚   -23.90 โ”‚ USD โ”‚ transportation     โ”‚
โ”‚ 2026-10-05 โ”‚ amex  โ”‚ Gold Card          โ”‚ Netflix            โ”‚   -24.99 โ”‚ USD โ”‚ entertainment      โ”‚
โ”‚ 2026-10-03 โ”‚ chase โ”‚ Total Checking     โ”‚ Rent ยท October     โ”‚ -2600.00 โ”‚ USD โ”‚ rent and utilities โ”‚
โ”‚ 2026-10-02 โ”‚ citi  โ”‚ Savings            โ”‚ Interest payment   โ”‚    31.20 โ”‚ USD โ”‚ income             โ”‚
โ”‚ 2026-10-01 โ”‚ chase โ”‚ Sapphire Preferred โ”‚ United Airlines    โ”‚  -540.00 โ”‚ USD โ”‚ travel             โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Money out 3417.47 ยท money in 4956.20. Shown here as negative = spent, positive = received; JSON keeps Plaid's sign.
bash
$ fin transactions --since 2026-10-01 --json
{
  "env": "production",
  "errors": [],
  "since": "2026-10-01",
  "transactions": [
    {
      "item": "chase",
      "institution": "Chase",
      "account_name": "Sapphire Preferred",
      "account_mask": "4242",
      "date": "2026-10-09",
      "authorized_date": "2026-10-08",
      "name": "SUSHI OTA SAN DIEGO",
      "merchant_name": "Sushi Ota",
      "amount": 86.4,
      "iso_currency_code": "USD",
      "pending": false,
      "category": "FOOD_AND_DRINK",
      "category_detailed": "FOOD_AND_DRINK_RESTAURANT"
    },
    โ€ฆ
  ],
  "until": "2026-10-09"
}
bash
$ fin amazon categorize --all
Amazon items ยท 5
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Item                  โ”‚ Date       โ”‚ Title                 โ”‚ Qty โ”‚   Cost โ”‚ Category            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 114-2290017-6612408#1 โ”‚ 2026-10-06 โ”‚ Cordless drill kit    โ”‚   1 โ”‚ 129.84 โ”‚ HOME_IMPROVEMENT    โ”‚
โ”‚ 114-2290017-6612408#2 โ”‚ 2026-10-06 โ”‚ Ground coffee, 2 lb   โ”‚   2 โ”‚  38.90 โ”‚ FOOD_AND_DRINK      โ”‚
โ”‚ 114-2290017-6612408#3 โ”‚ 2026-10-06 โ”‚ Vitamin D3, 240 count โ”‚   1 โ”‚  18.62 โ”‚ MEDICAL             โ”‚
โ”‚ 113-8805213-0147729#1 โ”‚ 2026-10-02 โ”‚ Kids' rain boots      โ”‚   1 โ”‚  34.17 โ”‚ GENERAL_MERCHANDISE โ”‚
โ”‚ 113-8805213-0147729#2 โ”‚ 2026-10-02 โ”‚ Catan board game      โ”‚   1 โ”‚  46.03 โ”‚                     โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Set one with fin amazon categorize --set ITEM CATEGORY [--product].
bash
$ fin amazon categorize --all --json
{
  "categories": [
    "INCOME",
    โ€ฆ
  ],
  "items": [
    {
      "item": "114-2290017-6612408#1",
      "order_id": "114-2290017-6612408",
      "date": "2026-10-06",
      "product": "B0C7KQ3X1M",
      "title": "Cordless drill kit",
      "quantity": 1,
      "cost": 129.84,
      "category": "HOME_IMPROVEMENT",
      "category_detailed": "HOME_IMPROVEMENT_HARDWARE",
      "category_source": "item",
      "account": "home",
      "bank_transaction": "AMAZON MKTPL*BB4L09 ยท 2026-10-07"
    },
    โ€ฆ
  ]
}
bash
$ fin holdings
Holdings ยท 7 positions ยท 162865.67
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Item      โ”‚ Account    โ”‚ Security   โ”‚ Quantity โ”‚  Price โ”‚    Value โ”‚ Cost basis โ”‚     Gain โ”‚ Lots โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ fidelity  โ”‚ Roth IRA   โ”‚ VTI        โ”‚      120 โ”‚ 288.10 โ”‚ 34572.00 โ”‚   26400.00 โ”‚  8172.00 โ”‚    4 โ”‚
โ”‚ fidelity  โ”‚ Roth IRA   โ”‚ FXAIX      โ”‚    61.05 โ”‚ 223.40 โ”‚ 13638.57 โ”‚   11020.00 โ”‚  2618.57 โ”‚    3 โ”‚
โ”‚ schwab    โ”‚ Brokerage  โ”‚ AAPL       โ”‚      150 โ”‚ 241.30 โ”‚ 36195.00 โ”‚   21300.00 โ”‚ 14895.00 โ”‚    5 โ”‚
โ”‚ schwab    โ”‚ Brokerage  โ”‚ SCHD       โ”‚      600 โ”‚  28.90 โ”‚ 17340.00 โ”‚   16200.00 โ”‚  1140.00 โ”‚    2 โ”‚
โ”‚ schwab    โ”‚ Brokerage  โ”‚ U S Dollar โ”‚    42680 โ”‚   1.00 โ”‚ 42680.00 โ”‚   42680.00 โ”‚     0.00 โ”‚    0 โ”‚
โ”‚ robinhood โ”‚ Individual โ”‚ NVDA       โ”‚       80 โ”‚ 182.50 โ”‚ 14600.00 โ”‚    9100.00 โ”‚  5500.00 โ”‚    6 โ”‚
โ”‚ robinhood โ”‚ Individual โ”‚ TSLA       โ”‚       10 โ”‚ 384.01 โ”‚  3840.10 โ”‚    4400.00 โ”‚  -559.90 โ”‚    2 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Total value 162865.67, cost basis 131100.00 where known.
bash
$ fin holdings --json
{
  "env": "production",
  "errors": [],
  "holdings": [
    {
      "item": "fidelity",
      "institution": "Fidelity",
      "account_name": "Roth IRA",
      "ticker": "VTI",
      "security_name": "Vanguard Total Stock Market ETF",
      "security_type": "etf",
      "quantity": 120,
      "price": 288.1,
      "price_as_of": "2026-10-08",
      "value": 34572,
      "cost_basis": 26400,
      "iso_currency_code": "USD",
      "tax_lots": [
        {
          "quantity": 30,
          "purchase_price": 212.4,
          "original_purchase_datetime": "2022-03-14T00:00:00Z",
          "position_type": "LONG"
        },
        โ€ฆ
      ]
    },
    โ€ฆ
  ]
}
bash
$ fin sql "select category,
                  sum(amount) filter (month(date) = 8) as aug,
                  sum(amount) filter (month(date) = 9) as sep,
                  round(100 * (sep - aug) / aug) as pct
           from transactions
           where amount > 0
             and date between '2026-08-01' and '2026-09-30'
           group by category
           order by sep desc"
6 rows
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ category            โ”‚    aug โ”‚    sep โ”‚ pct โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ RENT_AND_UTILITIES  โ”‚   2850 โ”‚   2850 โ”‚   0 โ”‚
โ”‚ FOOD_AND_DRINK      โ”‚ 1153.8 โ”‚   1318 โ”‚  14 โ”‚
โ”‚ TRAVEL              โ”‚  814.6 โ”‚ 1203.6 โ”‚  48 โ”‚
โ”‚ GENERAL_MERCHANDISE โ”‚ 1700.4 โ”‚  484.4 โ”‚ -72 โ”‚
โ”‚ TRANSPORTATION      โ”‚  412.3 โ”‚  389.6 โ”‚  -6 โ”‚
โ”‚ ENTERTAINMENT       โ”‚  189.9 โ”‚  236.4 โ”‚  24 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ•ฏ
From ~/.local/share/fin/production.duckdb, synced Oct 9, 09:12. Run fin sync to refresh.
bash
$ fin sql --json "select category,
                         sum(amount) filter (month(date) = 8) as aug,
                         sum(amount) filter (month(date) = 9) as sep,
                         round(100 * (sep - aug) / aug) as pct
                  from transactions
                  where amount > 0
                    and date between '2026-08-01' and '2026-09-30'
                  group by category
                  order by sep desc"
{
  "columns": ["category", "aug", "sep", "pct"],
  "env": "production",
  "rows": [
    {
      "aug": 2850,
      "category": "RENT_AND_UTILITIES",
      "pct": 0,
      "sep": 2850
    },
    {
      "aug": 1153.8,
      "category": "FOOD_AND_DRINK",
      "pct": 14,
      "sep": 1318
    },
    โ€ฆ
  ],
  "synced": [
    {
      "item": "chase",
      "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",
      "transactions_update_status": "HISTORICAL_UPDATE_COMPLETE",
      "last_sync": "2026-10-09T16:12:00Z"
    },
    โ€ฆ
  ]
}

Made-up numbers in fin's real output format. In a terminal fin prints tables; when an agent runs it, JSON.

// fin ui ยท illustrative data

Or open it in your browser. #

fin ui turns the local file into pages: net worth day by day, spending against last month, your portfolio, and a SQL editor that charts what it returns. fin serves them from 127.0.0.1 behind a random token, and they load nothing from the internet.

// works with the banks, cards and brokerages Plaid connects to

Logos are trademarks of their owners. fin is independent and not affiliated with them or with Plaid.

// AI-generated reports ยท illustrative data

Ask in plain words. Get a report. #

fin supplies the data. Your agent creates the layout, charts, and analysis.

// fin help security

Local and yours. #

  • reads
  • Balances, transactions, holdings with tax lots, investment activity.
  • never requests
  • Plaid Auth or Identity: no account numbers, no personal details. Cannot move money.
  • secrets
  • macOS Keychain, service fin . State in~/.config/fin/state.json , mode 0600.
  • data
  • Transactions, a balance per account for each day you sync, and holdings in a DuckDB file in ~/.local/share/fin ; query it withfin sql or browse it withfin ui .fin sheet copies them to a spreadsheet in your Google Drive, the only file there fin can see.
  • amazon
  • Experimental and off until you run fin amazon login : it reads your Amazon payments and order pages with your Chrome sign-in, so each charge opens into its items.
  • costco
  • Experimental and off until you run fin costco login : it reads your warehouse and gas receipts and costco.com orders with your Chrome sign-in, so each trip opens into its items.
  • servers
  • No hosted service. fin calls Plaid's API from your laptop and prints the answer. fin ui serves its pages on 127.0.0.1 only, behind a random token, with every font and script built into fin.
  • cost
  • Free on Plaid's Trial plan, up to 10 institutions. MIT licensed.
โ”€โ”€ more in #ai-agents 4 stories ยท sorted by recency
โ”€โ”€ more on @fin 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain โ€” perfect for shipping the agent you just read about.

$git push zahid main
โ†’ Live at https://your-agent.zahid.host โœ“
Get free account โ†’ Pricing
from โ‚ฌ0/mo ยท no card required
LIVE [news/show-hn-cli-for-yourโ€ฆ] indexed:0 read:8min 2026-10-18 ยท โ€”