mrkeyoor.com_
Fri 25 Sept 00:03 UTC
Dataevaluationupdated 26 Aug 2026

wealthfolio review

Wealthfolio is a local-first portfolio and personal-finance tracker for investments, net worth, spending, goals, and scenario planning. The free app stores data in a local SQLite database and supports manual entries or CSV imports; an optional paid service adds read-only brokerage connections and encrypted multi-device sync.

+44stars / 7d
Verdict

Our Wealthfolio run passed all 1,504 tests in 261 seconds, but the 37-second frontend build failed on missing UI declarations and a TypeScript type error. The downloadable app is a strong candidate for investors who value local storage and will reconcile imported balances against broker statements. Source builders and self-hosters should pin v3.7.0, test migrations on a copy, and verify returns before relying on the dashboard for financial decisions.

We ran it

Lab card: what happened when we ran wealthfolioScreenshot of wealthfolio (wealthfolio.app)
Install✓ · 36s1164 packages · 634 MB
Build✗ · 37s
Tests✓ · 261s1504 passed · 0 failed of 1504 (vitest)
Repo8508 files~580,772 lines of source · 152.5 MB · 5 CI workflows · Dockerfile · tests dir

Answers from our run

Does wealthfolio build from source?

Dependencies installed in 36 seconds (1164 packages), and the build failed. We cloned commit 15adda0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do wealthfolio's tests pass?

Yes: 1504 of 1504 passed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use wealthfolio?

Users who want free automatic bank and brokerage aggregation: Wealthfolio Connect is an optional subscription, and issue 1570 still requests broader banking integration.

What are the alternatives to wealthfolio?

Ghostfolio, Portfolio Performance, Rotki. Our Wealthfolio run passed all 1,504 tests in 261 seconds, but the 37-second frontend build failed on missing UI declarations and a TypeScript type error.

Setup3/5Downloads are easy; source and secure web hosting have many moving parts
Docs5/5Desktop, web auth, Docker, add-ons, migration, and data are documented
Community4/58,736 stars and same-day activity, with 428 issues and PRs
Maturity4/5v3.7.0 spans desktop, mobile, and web; calculation reports remain

Discussed on

  1. hnShow HN: Wealthfolio: Private, open-source investment tracker924 points
  2. hnShow HN: Wealthfolio 2.0- Open source investment tracker. Now Mobile and Docker676 points
  3. hnWealthfolio: A Beautiful Private and Secure Desktop Investment Tracking Software3 points

Who it’s for

Investors who want portfolio analytics without placing the core database in a vendor cloud.
Households willing to import CSV files or enter activities manually for a free setup.
Self-hosters prepared to configure SQLite persistence, encryption, authentication, CORS, and TLS.
Developers building finance add-ons against a TypeScript SDK and permission system.

Who it’s NOT for

Users who want free automatic bank and brokerage aggregation: Wealthfolio Connect is an optional subscription, and issue 1570 still requests broader banking integration.
Anyone treating portfolio calculations as tax records or investment advice: current issues report incorrect performance, transfer, cash-balance, and option-position outcomes that need case-by-case verification.
Teams needing a clean source build at commit 15adda0: our frontend build failed on missing UI declaration output and an implicit-any TypeScript error.
Organizations that cannot comply with AGPL-3.0 when modifying and serving the software.
People seeking a budgeting-first product with bill pay and bank reconciliation: Wealthfolio is centered on portfolios, activities, net worth, and spending analysis.

Setup reality

Our sandbox installed 1,164 pnpm packages in 36 seconds and used 634 MB. The build failed after 37 seconds with TypeScript errors about unbuilt packages/ui declaration files and one implicit-any parameter. Tests still passed in 261 seconds: Vitest reported 1,504 passed and 0 failed.

Desktop source work needs Node, pnpm, Rust, Tauri, a database path, and platform webview tooling. Self-hosted web mode needs a persistent SQLite volume, 32-byte secret, secure authentication or a trusted reverse proxy, explicit CORS, and TLS. OIDC adds issuer and client settings.

The checkout was 152.5 MB with 8,508 files and about 580,772 source lines. Docker and Compose are supplied. Desktop, iOS, web, server, add-on, Rust, and TypeScript paths make a full source build materially heavier than downloading the desktop application.

Wealthfolio v3.7.0 tracks portfolios without requiring an account

Wealthfolio combines investment holdings, performance, transactions, spending, goals, net worth, and simulations in one local SQLite database. The free path needs no vendor account and supports manual activity plus CSV import. Desktop releases cover Windows, macOS, and Linux, an iOS app is available, and an Axum server can host the same frontend for browser access. Version 3.7.0 requires macOS 12, iOS or iPadOS 16, and current browser engines at or above its documented floors.

Automatic broker connections are a separate product choice. Wealthfolio Connect is a paid subscription for read-only synchronization with more than 30 institutions and encrypted multi-device sync. Manual tracking remains free. That split is fair because aggregation has recurring costs, but it means the attractive phrase local-first needs qualification: the core database can remain local, while broker and device synchronization necessarily use the optional service. Users should decide which accounts leave manual mode and read the Connect terms before linking them.

The 580,772-line monorepo serves desktop, mobile, and web

Our measured checkout contained 8,508 files, about 580,772 source lines, and occupied 152.5 MB. React, TypeScript, Vite, Tailwind, and shared UI packages power the frontend. Rust crates handle core finance logic, SQLite storage, market data, connections, and device sync. Tauri packages desktop and mobile applications, while an Axum server supports self-hosted web mode. The repository also ships an add-on SDK, development tools, official examples, a Dockerfile, Compose configuration, and end-to-end tests.

That breadth has consequences for contributors. Desktop development needs Node, pnpm, Rust, Tauri, and the operating system's webview toolchain. The production Tauri command builds more than a browser bundle. Web developers can run Vite beside the Axum server, and add-on authors enable a separate development mode. The repository's shared UI package must be built in the right dependency order, a detail that became visible in our failed frontend build.

What happened when we ran it

Our sandbox installed 1,164 pnpm packages in 36 seconds and used 634 MB on disk. The build then failed after 37 seconds with exit code 2. TypeScript repeatedly reported TS6305 because declaration output under packages/ui/dist had not been built from source files in packages/ui/src. It also reported TS7006 for an implicitly typed value parameter in the taxonomies page. pnpm stopped at the frontend workspace.

The tests told a better story. Our run completed in 261 seconds with 1,504 Vitest cases passed and 0 failed. A passing test suite beside a failed build is possible because they exercise different entry points and compiler requirements. It means the measured commit had substantial automated coverage while its standardized production build path was still broken in our fresh environment. The log does not establish whether a different workspace build order would fix it, so we do not claim that.

We found 5 CI workflow files, a Dockerfile, a Compose file, a tests directory, and monorepo workspaces. The checkout and installed dependencies together exceed 780 MB before Rust build artifacts. Developers working on one frontend page should expect the surrounding finance and platform code to affect type generation, database models, and packaging. Downloading a signed release is much easier than reproducing every target from source.

Self-hosting requires a 32-byte secret and an access policy

Web mode stores its database and encrypted secrets in persistent files. The server requires a 32-byte WF_SECRET_KEY for secret encryption and JWT signing. Password login uses an Argon2id hash. OIDC can use an issuer, client ID, optional client secret, redirect URL, and email or subject allowlists. With no allowlist, the server refuses to start unless an operator explicitly enables access for any identity from that provider.

A reverse proxy must forward HTTPS information correctly so session cookies receive the Secure attribute. CORS should name the actual frontend origin, especially when authentication is enabled. The README permits disabling built-in authentication when a trusted proxy handles it, but that moves the whole boundary to proxy configuration. Back up the SQLite database and secrets material together, test restoration, and run migrations on a copy before upgrading a household's only financial history.

Add-ons can read finance data under declared permissions

The add-on system exposes accounts, holdings, activities, market data, custom pages, navigation, events, and protected secret storage through a TypeScript SDK. Version 3.7 rebuilt its sandbox around parent-delivered Blob assets for WebKit and iOS. Direct network access, remote CSS imports, workers, service workers, and popups remain unavailable. Packaged assets are private to each add-on, and installation performs code analysis before requesting user consent for declared access.

Permissions reduce accidental access but do not make third-party finance code trustworthy. An add-on allowed to read holdings or activities can see sensitive household information, and a UI extension can influence decisions even without direct network access. Review source, requested capabilities, update ownership, and data export paths before installation. The official and community directories live in a separate repository, so their release cadence and maintainers may differ from the core v3.7.0 application.

Calculation reports deserve reconciliation against statements

GitHub reported 8,736 stars, 428 open issues and pull requests, and a last push on August 26, 2026. Release v3.7.0 arrived on August 19 with closed positions, cash in holdings, 7 interface languages, a rebuilt add-on sandbox, broker identity fixes, and an explicit safety boundary for its AI assistant. The last-push and issue dates show an active project; the combined open count is not a count of confirmed defects.

Several long-running reports concern financial outcomes rather than cosmetics. Issue 303 describes incorrect portfolio performance, issue 674 reports a changing cash balance, issue 1015 covers sell-first option positions producing phantom holdings, and issue 1066 says transfers alter cash. Some may apply only to older releases or specific data shapes, so each needs reproduction on v3.7.0. Their practical message is stable: reconcile holdings, cash, returns, and realized gains with broker statements before using any personal-finance tracker as a decision source.

Alternatives

ProjectWhat it isPick it when
GhostfolioA self-hosted wealth dashboard for portfolio tracking, allocation, and performance.pick this instead when a web-first multi-user deployment and its portfolio workflow fit better than a local desktop database.
Portfolio PerformanceA mature desktop portfolio tracker focused on securities, transactions, and performance analysis.pick this instead when deep investment accounting and an established desktop workflow matter more than Wealthfolio's web mode and add-ons.
RotkiA privacy-focused portfolio tracker with strong cryptocurrency and on-chain accounting support.pick this instead when crypto exchanges, wallets, and taxable on-chain events dominate the portfolio.

What people are saying

  1. [github-trending] wealthfolio/wealthfolio

Sources

  1. Wealthfolio repository and README
  2. Wealthfolio v3.7.0 release
  3. Wealthfolio self-hosting documentation
  4. Portfolio performance calculation report
  5. Sell-first option holdings report
  6. Cash balance update report

More data reviews

go-stock · sqlitebrowser · hydradb · DouYin_Spider · helix-db · abu · the whole board →