Quick start
Set up Spendly, then use it from your terminal or with an AI agent.
Spendly CLI lets you track expenses and manage account balances and cycles from your terminal using the same data as Spendly Web.
The initial 0.1.2 release is available on npm for macOS. Production
authentication and read-only use through the Spendly skill in Codex have been
verified. Broader production workflows remain subject to ongoing validation.
Install
You'll need Node.js 22 or newer and a Spendly account. macOS is the currently verified platform; Linux verification is planned, and Windows is not supported in the initial release. Install only on a computer you trust. Run this in your terminal:
npm install --global spendly
spendly --versionThis makes the spendly command available in your terminal.
To install the exact initial version, use npm install --global spendly@0.1.2.
Spendly will continue with 0.x releases until real usage proves the CLI
contract is ready for 1.0.0.
Sign in
Open Spendly Web and finish setting up your account if you haven't already. Then run:
spendly auth loginComplete sign-in in the browser, then return to your terminal. To check your session:
spendly auth statusAuthorization lasts for at most 30 days before browser sign-in is required again. Sign out and remove the locally stored session with:
spendly auth logoutChoose how to use Spendly
Use an AI agent
Continue to AI agents to install the skill for Codex or Claude Code. Then ask things like "Show my account balances" or "Record 18.75 for lunch today." You can go straight there without learning the commands below.
Try the CLI yourself
Open the guided command launcher:
spendly --interactiveUse the arrow keys or type to search, then press Enter. Guided commands use
single-choice selectors for Spendly records, checkbox-style selectors for tags
and filters, and a preview before saving. Press Escape or Ctrl-C to cancel
without making a change. › marks the focused choice. In date inputs, brackets
mark the active segment, for example [2026]-09-15; use Left/Right to change
the segment and Up/Down to change its value.
For a screen reader or a terminal that does not handle cursor redraws well, use static numbered prompts:
spendly --interactive --accessibleYou can also set ACCESSIBLE=1. This mode uses numbered single-choice inputs,
comma-separated checkbox selections, plain yes/no confirmations, and no ANSI
cursor movement. Spendly automatically selects it when TERM=dumb. Color is
never required to understand focus, warnings, or errors.
See your current currency and cycle, account balances, and spending summary:
spendly context
spendly accounts list
spendly summary --currentPreview an expense without saving it:
spendly expenses add --interactive --dry-runThe guided form asks for the amount, date, description, category, account, and
tags. The amount prompt includes the currency configured during onboarding, for
example Expense amount (INR). To record the expense, run the same command
without --dry-run, review the preview, and confirm it. Values already supplied
as flags are kept. The category list contains visible categories from the cycle
covering the selected date, followed by an explicit Uncategorized choice.
Automatic history inference remains available to scripts that omit a category,
but it is not exposed as a guided choice.
Install local command and global-option completion by generating the script for your shell and following that shell's normal sourcing setup:
spendly completion zsh
spendly completion bash
spendly completion fishFind your next command
spendly --help
spendly expenses --help
spendly expenses add --helpExplore expenses, accounts, cycles, categories, or tags. If something fails, see Troubleshooting.