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.
翻訳待ち
Local-first crypto and stock backtest: log the buys you actually made (BTC, ETH, XRP, SOL, PAXG, XAUT, PANW, S&P 500), see what each is worth now in AED, CAD and USDT, with price and portfolio charts.
翻訳待ち
金融HTMLGitHub @offportオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Local-first crypto and stock backtest: log the buys you actually made (BTC, ETH, XRP, SOL, PAXG, XAUT, PANW, S&P 500), see what each is worth now in AED, CAD and USDT, with price and portfolio charts. Static page, AES-256-GCM vault in the browser, no backend.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A single-page, static backtest for BTC, ETH, XRP, SOL, PAXG, XAUT, PANW (Palo Alto Networks stock) and the S&P 500 (via the SPY ETF). You log the
purchases you actually made - coin, what you spent, and the date - and the app looks
up that day's closing price, then tracks what each entry is worth now and over time.
Captured in a private browsing window with a throwaway vault and made-up purchases — eight small CAD entries spread over 2024–2025. The vault was deleted afterwards; nothing in these images is a real holding. The prices are the live market data the page fetches.Read the full README ↗A single-page, static backtest for BTC, ETH, XRP, SOL, PAXG, XAUT, PANW (Palo Alto Networks stock) and the S&P 500 (via the SPY ETF). You log the purchases you actually made - coin, what you spent, and the date - and the app looks up that day's closing price, then tracks what each entry is worth now and over time.
Captured in a private browsing window with a throwaway vault and made-up purchases — eight small CAD entries spread over 2024–2025. The vault was deleted afterwards; nothing in these images is a real holding. The prices are the live market data the page fetches.
The dashboard: totals in every currency, price history, the portfolio value curve, dollar-vs-gold and DXY references, allocation and the per-entry breakdown.
The Entries tab, and the dashboard on a phone:
Entries on a phone, and a first visit — no vault exists yet, so the page asks for a passkey before anything can be entered:
amount x price(now) / price(buy date).The page is static - there is no backend and no account. Your entries never leave your browser, and the repository contains no secrets of any kind: authentication is the ability to decrypt your own local data. Crypto prices come from Binance (CryptoCompare fallback); PANW from CNBC's chart API (split-adjusted daily closes, open CORS, no key; stockanalysis.com is the fallback); FX history from Frankfurter (ECB reference rates). AED uses the fixed 3.6725 peg and USDT is counted 1:1 with USD.
The market strip under the header shows live BTC / ETH / SOL / XRP / BNB from Binance's 24-hour ticker (CoinGecko fallback) and the US market via the SPY, DIA, QQQ and IWM ETFs from CNBC quotes (stockanalysis.com fallback). Public prices only - it loads regardless of the vault and refreshes every minute. It is hidden by default: click the word MARKETS to show or hide the prices, and the choice is remembered in that browser.
Open index.html, or serve the folder statically:
python -m http.server 8899
Hosted at: https://offport.github.io/kryptonite-profile/
Cross-device: your encrypted vault lives only in the browser it was made in (per-origin localStorage, never on GitHub). To use it on another device, press Backup to download the encrypted file, move it over, and choose Restore from a backup file on the lock screen — the same passkey then unlocks the same data. The backup is ciphertext; it is useless without the passkey.
The LUCKY13 tab hosts the lucky13 signal app (its own project, I:\GitHub\lucky13, port 8013) in a frame: on the box it points at 127.0.0.1:8013, over Tailscale at the /lucky13/ path of this origin. The frame loads when the tab is first opened; OPEN FULL opens the app in its own tab.