A local-first expense ledger with an agent, Companion, MCP tools, and one SQLite source of truth.
The public home of
ryu-expenses. Source, builds, and releases live here — binaries for every platform are attached to each release.This tree is generated from the Ryu monorepo, so commits pushed here directly are replaced on the next sync. Pull requests are welcome — open them here and they are ported into the monorepo, then flow back out. Ryu as a whole: https://github.com/amajorai/ryu
App: Install (opens the Ryu desktop app and asks you to confirm)
CLI:
ryu apps add @ryu/expensesCrate:
cargo install ryu-expensesPrebuilt binaries for every platform are attached to each release.
Apache-2.0 — see LICENSE.
- Install the Expenses app to get the Expense Tracker agent runnable and the visual companion together.
- Install the standalone Expense Tracker Marketplace agent first, then add
the Expenses app when you want the visual view. The agent template declares
@ryu/expensesas its required data provider; it does not copy or create a second ledger.
The sidecar's MCP server is registered as expenses and exposes:
expenses.listexpenses.summaryexpenses.addexpenses.updateexpenses.delete
The companion calls the same store through the generic own-app bridge. It never receives a node token or makes a direct network request.
Money is stored as positive integer minor units, dates are calendar strings, and summaries never add unlike currencies. The node owns the SQLite database. This app does not connect to banks, convert exchange rates, or provide financial or tax advice.
The process is ryu-expenses. Core supplies its resolved data directory and
sidecar port when the app is enabled. For an isolated standalone development
run, use RYU_PROFILE=dev RYU_KEYCHAIN=off RYU_DIR=/tmp/ryu-expenses-dev.