Envelope budgeting inspired by YNAB and Monarch — self-hosted, no subscriptions, no data sharing.
Ready to Assign
$3,420.00
December 2024
Net Worth
$24,830
+$840 this month
Total Assets
$31,420
+$1,200 this month
Liabilities
$6,590
-$360 paid off
Accounts
View all
Checking
Chase Bank
$4,280.50
Savings
Ally Bank
$12,500.00
Credit Card
Visa
-$1,340.00
Recent Transactions
View all
Whole Foods Market
Groceries · Dec 14
-$87.43
Direct Deposit — Salary
Income · Dec 13
+$4,200.00
Shell Gas Station
Transportation · Dec 12
-$62.18
$0
Forever free, no subscriptions
100%
Your data stays on your server
60s
Docker deploy in one command
Inspired by the best of YNAB and Monarch, purpose-built for self-hosting.
Give every dollar a job. Assign income to categories, see what's left, never overspend.
See your net worth, assets, and liabilities at a glance with recent transactions.
Log income and expenses with categories and payees. Filter, sort, and search with ease.
Checking, savings, credit cards, mortgages, auto loans, investments, CDs, retirement.
Organize spending into groups and categories. Assign money each month and track what's left.
Runs on your hardware. No third-party access, no tracking, no ads. SQLite you own.
A time-tested approach to stop living paycheck to paycheck.
When money comes in, it shows up as "Ready to Assign" — dollars waiting for a purpose.
Distribute money into categories: rent, groceries, fun, savings. Every dollar gets a job.
Check your envelope before buying. When it's empty, stop — or move money from another envelope.
Why self-host?
Most budgeting apps want your bank credentials and charge monthly. They profit from your data. With Envelopes, your data never leaves your server.
Free forever
No subscription fees
Fully private
No data sharing
Your hardware
NAS, VPS, or Pi
Open source
MIT licensed
Getting started
All you need is Docker.
docker-compose.yml services:
envelopes:
image: lukevinskywynn/envelopes:latest
container_name: envelopes
restart: unless-stopped
ports:
- "4321:4321"
environment:
- JWT_SECRET=your-random-secret-here
- ENVELOPES_USERNAME=admin
- ENVELOPES_PASSWORD=your-secure-password
volumes:
- envelopes_data:/app/data
volumes:
envelopes_data: docker compose up -d http://your-server:4321 git clone https://github.com/kevin-wynn/envelopes.git
cd envelopes/app
cp .env.example .env # Edit with your settings
docker compose up -d --build | Variable | Default | Description |
|---|---|---|
| JWT_SECRET | — | Auth token signing secret (required) |
| ENVELOPES_USERNAME | admin | Login username |
| ENVELOPES_PASSWORD | changeme | Login password (bcrypt hashed) |
| DATABASE_URL | /app/data/envelopes.db | SQLite database path |