# @dreamxist/bal-cli > Command-line interface for [Balance](https://github.com/dreamxist/balance) — opinionated personal finance with `delta = 0` reconciliation. `bal` is a thin TypeScript CLI that talks to a self-hosted Balance backend (Supabase + PostgreSQL + Edge Functions). It is **read/write**: list accounts, register transactions, manage API keys, and check whether your books are balanced — without leaving the terminal. `@dreamxist/bal-cli` is just the client. To use it, you need a backend — see the [self-hosting guide](https://github.com/dreamxist/balance/blob/main/SETUP.md). ## Install ```bash npm install -g @dreamxist/bal-cli ``` Requires **Node 22+**. ## Quickstart ```bash # Point the CLI at your backend export SUPABASE_URL="https://.supabase.co" export SUPABASE_ANON_KEY="" # Authenticate with an API key minted from the web app bal login --api-key bal_live_XXXXXXXXXXXXXXXX # Show net position vs. accumulated transactions bal balance ``` The session is cached at `~/.balance/session.json` (mode `0600`) and refreshed automatically on every command. ## Commands ### Authentication | Command | Description | | --- | --- | | `bal login --api-key ` | Exchange an API key for a JWT and persist a session. | | `bal key create --name