oink

Zero-based envelope budgeting.
Local-first. SQLite-backed. No fluff.

$ oink fund 200 groceries
→ Groceries: $200.00 (Buffer: -$200.00)
→ ⚠ Buffer is -$200.00 — you've over-allocated!

$ oink spend 42.50 "Trader Joes" groceries
→ Groceries: $157.50

$ oink move 25 groceries "dining out"
→ Groceries: $132.50
→ Dining Out: $25.00

$ oink status
  Buffer                  -$200.00
  ────────────────────────────────
  Dining Out                $25.00
  Groceries                $132.50
  ────────────────────────────────
  Total                    -$42.50
$ go install github.com/guygrigsby/oink@latest

Pure Go. No CGO. Single binary.

Integer cents. No floats. Ever.

5NF schema. Balances computed, never stored.

Fuzzy matching. Type a prefix, oink figures it out.