Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Self-hosted Next.js dashboard for a stock & options portfolio — CSPs, covered calls, LEAPs, spreads, closed-trade P&L, VIX regime, and a pre-market brief. Reads local JSON from the companion Schwab bridge. Private via Tailscale
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
A self-hosted Next.js dashboard for tracking a stock & options portfolio — holdings,
open option positions (cash-secured puts, covered calls, LEAPs, spreads), closed-trade
history, P&L, research signals, and market context (VIX, breadth). Read-only: it
displays data, it never places trades.
The app reads its data from local JSON files in data/, which are written by a companion
data bridge. Out of the box — with no data and no bridge — it runs in example mode on a
built-in demo dataset, so you can explore the whole UI immediately.檢視完整 README ↗A self-hosted Next.js dashboard for tracking a stock & options portfolio — holdings, open option positions (cash-secured puts, covered calls, LEAPs, spreads), closed-trade history, P&L, research signals, and market context (VIX, breadth). Read-only: it displays data, it never places trades.
The app reads its data from local JSON files in data/, which are written by a companion
data bridge. Out of the box — with no data and no bridge — it runs in example mode on a
built-in demo dataset, so you can explore the whole UI immediately.
/api/chart route. Hold any
ticker anywhere in the app for 1.8 seconds to open it theredata/sectors.json (Yahoo Finance — Schwab's API has none);
correct any by hand under its overrides mapnpm install
npm run dev # dev server at http://localhost:3000
The dev server binds 0.0.0.0, so you can also reach it from other devices on your
network at http://<your-machine-ip>:3000.
For a production build:
npm run build
npm run start # serves the optimized build on port 3000
With no data/ files present, every view renders the example dataset — nothing to
configure to look around.
The app loads a portfolio snapshot in this order:
lib/example.tsdata/snapshot.json (and the other data/*.json files)Everything in data/*.json is gitignored — real portfolio data never gets committed.
To feed the dashboard live data, run the companion bridge, which writes those JSON files:
Data bridge:
Schwab_Bridge_Public— a small read-only Python bridge that pulls from a Charles Schwab account and writes thedata/*.jsonthis app reads. Point itsAPP_DATA_DIRat this project'sdata/folder.
Connect your Schwab account right from the app: open Settings → Schwab connection to enter your App Key/Secret (first run) and do the weekly re-login — no CLI needed. The app is write-only toward the bridge: it deposits credentials and the pasted login URL and never reads the bridge's secrets back.
It runs anywhere Node runs, including a Raspberry Pi. A simple pattern is to run
npm run start under a process manager (e.g. a systemd service) so it auto-starts on
boot, with the bridge running alongside it writing fresh data on an interval.
data/*.json snapshot is the single source of truth.githooks/pre-commit (plus a gitleaks
.pre-commit-config.yaml) blocks accidental commits of credential files or secret-looking
values. After cloning, enable it with git config core.hooksPath .githooks.