EnvelopeCLI
A terminal-based zero-based budgeting application inspired by YNAB. Every dollar gets a job.
Table of Contents
- Features
- Installation
- Quick Start
- CLI Reference
- TUI Keyboard Shortcuts
- Data Storage
- Project Structure
- Development
- License
- Author
Features
Core Budgeting
- Zero-based budgeting - Assign every dollar to a category before you spend it
- Budget targets - Set recurring targets (weekly, monthly, yearly, or by specific date) with auto-fill
- Fund movement - Move money between categories as priorities change
- Rollover support - Carry over surplus or deficit from previous periods
- Overspending alerts - Track and resolve overspent categories
Account Management
- Multiple account types - Checking, savings, credit cards, cash, investments, lines of credit
- On/off-budget accounts - Track investment accounts without affecting your budget
- Account archiving - Hide accounts without losing historical data
- Net worth tracking - See your complete financial picture
Transaction Management
- Full transaction tracking - Date, payee, category, memo, and cleared status
- CSV import - Import transactions from your bank
- Transfers - Move money between accounts with linked transactions
- Bulk operations - Categorize multiple transactions at once
- Reconciliation - Match your records with bank statements
Reporting
- Budget overview - See budgeted, spent, and available by category
- Spending analysis - Track spending by category with percentage breakdowns
- Account register - Filter transactions by date, payee, or category
- Net worth report - Assets vs liabilities summary
Data & Security
- Local-first storage - All data stored on your machine in JSON format
- AES-256-GCM encryption - Optional passphrase-protected encryption with Argon2 key derivation
- Automatic backups - Configurable backup retention
- Multi-format export - CSV, JSON, or YAML for portability
Interface
- Interactive TUI - Full terminal interface with vim-style navigation
- CLI commands - Script-friendly command-line interface for automation
- Command palette - Quick access to all actions with
:key
Installation
Via Cargo (Recommended)
Via Homebrew (macOS/Linux)
Note: Use
envelope-cli(notenvelope) to avoid conflict with an unrelated package in homebrew-core.
Via Shell Script (macOS/Linux)
|
Via PowerShell (Windows)
irm https://github.com/KayleeBeyene/EnvelopeCLI/releases/latest/download/envelope-installer.ps1 | iex
From Source
Requires Rust 1.70+
Quick Start
# Initialize with default categories
# Create your first account
# Launch the TUI
CLI Reference
Account Commands
Transaction Commands
Transfer Between Accounts
Budget Commands
Target Commands (Recurring Goals)
Category Commands
Report Commands
Export Commands
Import Transactions
Encryption Commands
Backup Commands
Other Commands
TUI Keyboard Shortcuts
Global
| Key | Action |
|---|---|
q |
Quit |
? |
Help dialog |
: |
Command palette |
Tab |
Switch panel focus |
h/l |
Focus sidebar/main panel |
j/k |
Navigate down/up |
1 |
Accounts view |
2 |
Budget view |
3 |
Reports view |
Register View (Transactions)
| Key | Action |
|---|---|
a |
Add transaction |
e |
Edit selected transaction |
c |
Toggle cleared status |
Ctrl+d |
Delete transaction |
v |
Multi-select mode |
Space |
Toggle selection (in multi-select) |
g |
Go to top |
G |
Go to bottom |
Budget View
| Key | Action |
|---|---|
[ / ] |
Previous/next period |
m |
Move funds between categories |
a |
Add category |
A |
Add category group |
Enter |
Edit budget/target for category |
Sidebar
| Key | Action |
|---|---|
a |
Add account |
Enter |
Select account |
A |
Toggle archived accounts |
Dialogs
| Key | Action |
|---|---|
Esc |
Close/cancel |
Enter |
Confirm |
Tab |
Next field |
Data Storage
All data is stored locally in ~/.config/envelope-cli/ (Linux/macOS) or %APPDATA%\envelope-cli\ (Windows):
~/.config/envelope-cli/
├── config.json # Settings and encryption config
├── data/
│ ├── accounts.json # Account definitions
│ ├── categories.json # Category groups and categories
│ ├── allocations.json # Budget allocations per period
│ ├── transactions.json
│ ├── payees.json # Payee rules for auto-categorization
│ └── targets.json # Recurring budget targets
├── audit.log # Change history
└── backups/ # Automatic backups
Path Resolution
ENVELOPE_CLI_DATA_DIRenvironment variable (if set)$XDG_CONFIG_HOME/envelope-cli(ifXDG_CONFIG_HOMEis set)~/.config/envelope-cli(Linux/macOS default)%APPDATA%\envelope-cli(Windows default)
Use envelope config to see the active paths on your system.
Project Structure
src/
├── main.rs # CLI entry point
├── lib.rs # Library root
├── cli/ # CLI command handlers
├── tui/ # Terminal UI (ratatui)
│ ├── app.rs # Application state
│ ├── views/ # Main views (accounts, register, budget)
│ ├── dialogs/ # Modal dialogs
│ └── widgets/ # Reusable UI components
├── models/ # Data models (Account, Transaction, Category, etc.)
├── services/ # Business logic layer
├── storage/ # JSON persistence layer
├── reports/ # Report generation
├── export/ # CSV, JSON, YAML export
├── crypto/ # Encryption (AES-256-GCM, Argon2)
├── backup/ # Backup management
├── audit/ # Audit logging
└── error.rs # Error types
Development
License
MIT License - See LICENSE for details.
Author
Kaylee Beyene (@coderkaylee)