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.

