mrkeyoor.com_
Mon 09 Nov 10:34 UTC
Dataevaluationupdated 27 Oct 2026

wealthfolio review

Wealthfolio is an open-source portfolio tracker for investments, net worth, spending, goals, and simulations. Its README describes a free local SQLite app with manual tracking and CSV import, plus Wealthfolio Connect, an optional subscription for read-only brokerage connections and encrypted multi-device sync. Our recorded source run assessed dependency installation, a build attempt, and the project's test command; it did not validate the downloadable app or financial calculations.

+80stars / 7d
Verdict

Wealthfolio is worth evaluating if you want local portfolio records and can use manual entry or CSV import; automatic brokerage sync is an optional paid service according to its README. In our October 3, 2026 run at commit 0deea7f, the test command succeeded and reported 2,903 passing tests, while the source build failed after about 53 seconds. That result does not establish that the downloadable app is broken or that its calculations are correct. Start with a separate profile and representative transactions, reconcile the results against statements, and assess the current documented build sequence separately if you plan to contribute or self-host.

We ran it

Lab card: what happened when we ran wealthfolioScreenshot of wealthfolio (wealthfolio.app)
Install✓ · 23s1181 packages · 644 MB
Build✗ · 53s
Tests✓ · 777s2903 passed · 0 failed of 2903 (vitest)
Repo6855 files~673,053 lines of source · 72.4 MB · 11 CI workflows · Dockerfile · tests dir

Answers from our run

Does wealthfolio build from source?

Dependencies installed in 23 seconds (1181 packages), and the build failed. We cloned commit 0deea7f into a clean Debian container with 3 CPUs and no project-specific setup.

Do wealthfolio's tests pass?

Yes. The project's own test command finished in 777 seconds and reported 2903 passed, 0 failed (vitest).

Who should not use wealthfolio?

Users who require free automatic brokerage sync: the README places that capability in the optional Connect subscription.

What are the alternatives to wealthfolio?

Ghostfolio, Portfolio Performance. Wealthfolio is worth evaluating if you want local portfolio records and can use manual entry or CSV import; automatic brokerage sync is an optional paid service according to its README.

Setup3/5Documented deployment paths and successful dependency installation support evaluation, but the October 3 build failed and no application launch was demonstrated. See the visible five-point evidence rubric.
Docs4/5The supplied README and Docker guide give concrete source, authentication, storage, backup, and add-on instructions. We did not verify the current build sequence or every documented path.
Community3/5The v3.7.0 release credits multiple contributors, and supplied issue threads include maintainer responses. Adoption, response times, and support capacity were not measured.
Maturity3/5The sources document desktop, iOS, web deployment, and detailed release work. The recorded build failure and absence of financial reconciliation leave material validation gaps.

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 local portfolio records and are willing to maintain manual entries or CSV imports.
Households evaluating whether optional paid brokerage and device sync justify using Connect.
Self-hosters comfortable managing persistent storage, authentication, secrets, backups, and HTTPS.
Developers interested in the documented TypeScript add-on SDK and its permission model.

Who it’s NOT for

Users who require free automatic brokerage sync: the README places that capability in the optional Connect subscription.
Anyone needing independently verified financial calculations: our run did not reconcile balances, returns, or option positions against statements.
Teams requiring a successful source build demonstrated by this review: the recorded build at commit 0deea7f exited with code 2.
Operators who cannot maintain persistent data, protect the encryption key, or configure access for a self-hosted instance.
Organizations whose intended use is incompatible with the repository's AGPL-3.0 license.

Setup reality

In our recorded run on October 3, 2026, at commit 0deea7f312e577acb7416078967438f4423e4516, dependency installation succeeded in 22.779 seconds, rounded to 23 seconds in the summary. The dependency footprint was recorded as 644 MB. The parser recorded 1,181 dependencies, while pnpm's install output reported 1,180 packages added; those are separate recorded counts.

The build exited with code 2 after 52.752 seconds, rounded to 53 seconds. Its frontend@3.9.2 log reported missing packages/ui declaration outputs and implicit-any errors. The test command exited successfully after 777.396 seconds, rounded to 777 seconds. Vitest reported 329 passing test files and 2,903 passing tests; the stored summary recorded zero failed and zero skipped tests. These are reported results, not an independently reconciled count of exhaustive unique coverage.

The checkout measurements were 6,855 files, approximately 673,053 source lines, and 72.4 MB, with 11 CI workflow files, Docker and Compose files, and workspaces detected. The recorded sandbox configuration was 3 CPUs, 8 GB of memory, and image lab-node:22. That image label does not establish the actual Node runtime; the raw detector separately recorded nodeMajor 24.

The current README specifies toolchain versions through repository configuration and includes pnpm build:types after dependency installation. We did not rerun that sequence. Dependency installation does not establish that an application binary was installed, launched, or usable. Desktop packaging, Rust tests, Docker deployment, broker connections, and financial workloads were not demonstrated by this record.

Local tracking and optional sync are separate choices

Wealthfolio lets you evaluate local portfolio tracking before deciding whether to pay for brokerage connections. The README describes manual tracking and CSV import as free, with no account required. Wealthfolio Connect is an optional subscription for read-only brokerage sync across 30+ institutions and encrypted multi-device sync. Those are project claims; our run did not exercise either service.

The repository describes investment holdings, performance analytics, activities, goals, net worth, spending, and simulations. SQLite stores local financial data. Desktop downloads, iOS, and self-hosted Docker/web are documented, but our source run was not a compatibility test of those platforms.

For version context, the supplied v3.7.0 release notes specify macOS 12, iOS/iPadOS 16, Chrome/Edge 107, Firefox 104, and Safari 16 as minimums. That release is distinct from our measured checkout: the October run's build log identifies the frontend package as frontend@3.9.2. We did not test the v3.7.0 release binary or establish the latest available release.

What our October 3 source run establishes

Our stored run began on October 3, 2026, at commit 0deea7f312e577acb7416078967438f4423e4516, whose recorded commit date is October 1, 2026. No new execution was performed for this correction.

Recorded step Observation Limit
Dependency installation Exit 0 in 22.779 seconds, rounded to 23 seconds Establishes dependency installation, not an installed or launched Wealthfolio application
Build Exit 2 in 52.752 seconds, rounded to 53 seconds The frontend build stopped at TypeScript errors
Test command Exit 0 in 777.396 seconds, rounded to 777 seconds Vitest reported passing results for this command, not every platform or financial workflow

The dependency measurement recorded 1,181 dependencies and 644 MB. The install log separately said 1,180 packages were added. The checkout contained 6,855 files, approximately 673,053 source lines, and occupied 72.4 MB. Detection found 11 CI workflow files, Docker and Compose files, a tests directory, and workspaces. These measurements describe this checkout and environment, not application speed or typical storage requirements.

The recorded sandbox configuration lists 3 CPUs, 8 GB of memory, and image lab-node:22. The image name is not proof of the runtime version; the raw detector recorded nodeMajor 24. We cannot resolve the actual runtime from those fields alone.

The test output reported 329 passing files and 2,903 passing tests. The stored summary recorded zero failed and zero skipped tests. The command took 777.396 seconds end to end; Vitest's own duration line was 765.95 seconds. These timings have different scopes. The supplied record explicitly says exhaustive unique coverage was not verified through complete-log reconciliation.

There was no recorded advisory audit result. The record also does not demonstrate a desktop launch, installed-binary check, Rust test run, Docker deployment, broker connection, or reconciliation of a real portfolio. Passing this test command cannot establish financial accuracy.

A failed build needs a narrower conclusion

The build tail reports TS6305 errors because declaration outputs under packages/ui/dist had not been built from their source files. It also contains TS7006 implicit-any parameter errors and TS7031 implicit-any binding errors. pnpm stopped at the frontend workspace with exit code 2.

The current README includes pnpm build:types after dependency installation and directs contributors to repository-defined Node, pnpm, and Rust versions. The README captured at the measured commit did not include that type-build step in its installation sequence. This is useful setup context, but we did not rerun the current sequence and cannot say it resolves every reported error.

The supported conclusion is that this recorded build attempt failed in its environment. It does not establish that release downloads, Docker images, or the product as a whole are broken.

Self-hosting adds storage and access responsibilities

The README documents an Axum server for web mode alongside the frontend. Its configuration requires a 32-byte secret through WF_SECRET_KEY or a key file, supports password authentication using an Argon2id hash, and requires explicit CORS origins when authentication is enabled. OIDC has additional issuer, client, redirect, and access-policy settings.

The supplied Docker guide, marked updated October 26, 2026, documents persistent storage under /data and says to back up that volume together with the matching WF_SECRET_KEY. Keep the key protected separately from the encrypted data. For an HTTPS reverse proxy, the README documents forwarding X-Forwarded-Proto: https or explicitly configuring secure cookies.

These are documented deployment requirements, not configurations we verified. Before using a self-hosted instance for household records, test backup restoration with a separate copy and confirm that your access configuration works as intended.

The add-on SDK is another reason to inspect permissions. The README describes access to accounts, holdings, activities, and market data, with declared permissions and user consent. The v3.7.0 release notes describe a rebuilt Blob-based sandbox and intentionally unavailable direct networking, remote CSS imports, workers, service workers, and popups. These are documented controls, not an independent security assessment. Review the access an add-on requests before giving it financial data.

Read issue reports with their versions and follow-ups

The supplied issues support checking representative data, but they do not establish that every reported symptom persists at our measured commit.

Issue 303 began with performance-chart timeframe reports on older versions. A June 2026 comment about v3.5.2 specifically says the metrics were correct while the ALL graph reverted to a one-year view. Describing the entire thread as proof of incorrect return calculations would erase that distinction.

Issue 1015 reports sell-first option positions producing phantom long holdings. Its July 11 follow-up includes a user saying that restarting the container and refreshing the browser exposed the open/close toggle on v3.6.1. That follow-up does not prove every option-accounting case is fixed, but the original report alone does not prove the current implementation lacks short-option support.

Issue 674 includes a contributor's March 11 explanation that consolidated cash can change when foreign-exchange rates change, describing that behavior as intended by the backend design. Later comments report other cash symptoms. The thread therefore cannot be summarized as one confirmed calculation defect.

A useful evaluation is to import a small, representative history into a separate profile and compare holdings, per-currency cash, returns, and closed positions with statements. Our run did not perform that reconciliation.

Alternatives depend on the workflow you want

Ghostfolio describes a web application for stocks, ETFs, and cryptocurrencies, with official container images and self-hosting instructions. Its documented backend uses PostgreSQL and Redis. Consider it when you want that browser-based deployment model and can operate those services.

Portfolio Performance describes tracking and evaluating portfolio performance across stocks, cryptocurrencies, and other assets. Consider it when that investment-performance focus matches your needs. The supplied extract does not support claiming that its calculations are more accurate than Wealthfolio's.

How to read the scores

These are editorial evidence ratings, not benchmark results. On this five-point scale, 1 means major documented obstacles, 2 means substantial limitations, 3 means useful documented capability with material validation gaps, 4 means broad supporting evidence with narrower gaps, and 5 requires strong direct validation of the criterion. Missing evidence does not by itself prove poor quality.

Setup receives 3 because deployment paths are documented and dependencies installed, but our build failed and no application launch was demonstrated. Documentation receives 4 for concrete source, authentication, storage, Docker, and add-on instructions, with the build sequence unverified here. Community receives 3 because the supplied release credits multiple contributors and issue threads contain maintainer responses, while adoption and support responsiveness were not measured. Maturity receives 3 because the project documents several deployment modes and release work, but our run does not establish packaging reliability or financial correctness.

Alternatives

ProjectWhat it isPick it when
GhostfolioAn open-source wealth management web application for tracking stocks, ETFs, and cryptocurrencies.Choose it when you want a browser-based portfolio application with documented self-hosting and official container images. Its README lists PostgreSQL and Redis, so account for those services when comparing deployment requirements.
Portfolio PerformanceA project for tracking and evaluating investment portfolio performance across stocks, cryptocurrencies, and other assets.Evaluate it when tracking and evaluating portfolio performance is your main requirement. The supplied extract supports that role, but does not establish superior accounting accuracy or an easier setup.

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

rerun · telegraf · rocksdb · redash · akshare · DB-GPT · the whole board →