Warning
Zai is in early development. Expect data loss. Features and data models may change without notice. Correct data migration between releases is not guaranteed, and automatic database backup and restore are not implemented yet. Keep independent backups and do not use Zai as the only copy of important data.
- 🤖 An agent-driven experiment
- 📦 Installation
- 🔧 Development
- 💾 Data, privacy and backups
- 🤝 Contributing
- 🔒 Security
Zai (ざい, japanese word for wealth) is a local-first personal finance app for people who want to track their money without cloud sync, telemetry, or bank-login dependencies.
Zai takes significant inspiration from Wealthfolio and Sure, but it is not meant to reproduce either project. It is my own interpretation of what a personal finance app should and could be.
I believe personal finance software should help people understand their money without requiring them to hand their financial history to a third party. Users should stay in control of their data and be able to understand how the app reaches its numbers. Zai is my attempt to build toward that idea from a local-first foundation and discover what becomes possible from there.
Zai is a side project, not a business. It will never be sold or used as a source of income. Monetization is not its goal.
Zai is my 100% agent-driven software experiment. I define the product direction, plan work with AI agents, turn requirements into issues, and make the final merge decision. AI agents write and edit every line of code.
I want to test whether entirely AI-written software inevitably becomes low-quality "slop," or can meet high standards through disciplined planning and verification. I chose personal finance because it is a demanding test: sensitive data must stay secure and private, thousands of operations must stay fast, and calculations must remain reliable because even small rounding errors can distort financial data.
These are the standards I want the experiment to meet, not claims about Zai's current maturity. The early-development warning above still applies.
Official desktop binaries for macOS, Linux, and Windows are available from
GitHub Releases. Zai publishes two
release channels. Both are built from main through the same checks and
artifact pipeline, but they have different release cadences.
Stable releases are published manually and are the recommended channel for most
users. They receive updates less often than Nightly releases and appear on
GitHub as full releases named Zai Y.M.D.B. Download the most recent build from
the latest Stable release.
"Stable" describes the release channel, not the maturity of Zai or its data format. Zai remains in early development, and the data-loss and migration warning at the top of this README applies to Stable releases too.
Nightly releases contain the latest changes from main. A new Nightly is
scheduled for 05:00 UTC when changes exist, and maintainers can also trigger one
manually. Nightlies appear as prereleases named Zai Nightly Y.M.D.B on the
Releases page.
Choose Nightly only if you want to test recent changes and can tolerate more regressions, incomplete behavior, and data loss. Nightly builds are not a safer backup or migration path than Stable builds.
To run Zai from source instead, follow the development instructions below.
- Git
- Node.js LTS
- pnpm 10.33.0
- Rust stable
- The platform dependencies required by Tauri
git clone https://github.com/mastro993/zai.git
cd zai
pnpm install --frozen-lockfile
pnpm dev:tauripnpm install also installs the repository’s Lefthook Git hooks.
Web mode exists for development and transport verification. The Axum server is restricted to loopback addresses and is not intended for hosted or remote use yet
pnpm dev:webBy default, web mode creates a temporary SQLite directory and removes it during normal shutdown. To keep data between runs:
cp .env.web.example .env.webThen configure ZAI_HOME with an absolute path in .env.web. Running
zai-server directly requires this variable.
Zai-managed persistent state lives under Zai Home. Desktop defaults to ~/.zai
and accepts an absolute ZAI_HOME process override. Web mode requires an
absolute ZAI_HOME; its database is {ZAI_HOME}/userdata/zai.db.
The current beta:
- does not include cloud sync, bank connections, or telemetry;
- does not encrypt the SQLite database at rest;
- does not provide automatic full-database backup and restore; and
- does not guarantee that migrations will preserve existing data between releases.
Back up important source data independently. Never attach a real Zai database, financial statement, or unredacted log to a public issue.
Zai is not ready to accept direct contributions or pull requests because its roadmap and contribution process are not defined yet. For now, contribute only through GitHub issues for bug reports, feature requests, and suggestions. Opening an issue does not authorize a pull request or guarantee implementation.
Read CONTRIBUTING.md for the full policy. By participating, you agree to follow the Code of Conduct. Use synthetic or fully redacted data in issue reports.
Do not report vulnerabilities through a public issue and do not attach financial records or databases.
Follow the private reporting instructions in SECURITY.md.