River Finance

Envelope budgeting where every dollar in your accounts has a job, synced with your bank and the same on your iPhone and your Mac.

Year
2026
Runs on
iPhone, macOS
Built with
Rust, Swift, SwiftUI, Tauri, SvelteKit, TypeScript, SQLite, Convex, Plaid, Vercel AI SDK, App Store
Built together with

The problem

Most budgeting apps either link every account and bury you in charts, or they’re spreadsheets with extra steps. I wanted envelope budgeting, where the money in the bank is split into categories that roll over month to month, that took a few seconds a day and worked the same on my phone and my laptop.

What I built

I built River with my friend Mikael Weiss. Everything important lives in one Rust core: the Mac app is built with Tauri on top of it, and the iPhone app is a native SwiftUI wrapper around the same core, the same approach I used for Nichi. The core enforces a single rule that everything else depends on: the total in your accounts always equals the total in your categories, so an unassigned dollar shows up the moment it appears.

Bank accounts sync through Plaid, or you can track an account by hand. New transactions categorize themselves: rules you set per merchant apply first, and anything they don’t cover goes to an AI model in a background queue, so a synced bank feed arrives already sorted. Everything is saved to a local database first and synced across devices in the background, so the app never waits on the network. Sign-in is a link sent by email, with no password to remember.

Result

River runs our household budget every day, on both of our phones and the Mac.