Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
자산을 나타내는 떠다니는 고양이와 함께하는 미니멀리즘 인터랙티브 주식 포트폴리오 시각화
A minimalist interactive equity portfolio visualisation with floating kitty cats representing your assets. We love the fat cats as long as they're green!
금융TypeScript · CSSGitHub @thecont1온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your stock portfolio, drawn as a field of living ink cats.
ekitty takes a simple spreadsheet of your share purchases and turns it into a calm, playful picture: every holding becomes a hand-drawn cat drifting around a white canvas. Bigger position → bigger cat. Profit → green cat. Loss → red cat. Old enough to be tax-loss harvesting material → a little gold medal.
No dashboards, no tickers, no logins. Just cats that mean something.README 전문 보기 ↗Your stock portfolio, drawn as a field of living ink cats.
ekitty takes a simple spreadsheet of your share purchases and turns it into a calm, playful picture: every holding becomes a hand-drawn cat drifting around a white canvas. Bigger position → bigger cat. Profit → green cat. Loss → red cat. Old enough to be tax-loss harvesting material → a little gold medal.
No dashboards, no tickers, no logins. Just cats that mean something.
Mr. Bungles, the Glass Kitty, points rather than chats. Click his quiet perch for one blunt, digest-grounded directive; Show me focuses that exact holding or purchase. He follows the active view and filters, speaks only supplied facts, and never accepts replies. Only a click sends a small portfolio digest to your configured AI provider; there is no raw CSV upload. His label dismisses with Escape, a click outside, or its close button, and cached replies last one minute.
ekitty reads a plain CSV file — the kind you can export from your broker or make in any spreadsheet app. Five columns:
company,buy_qty,avg_price,current_price,txn_date
Zen Technologies,7,1482.10,1932.60,2025-09-10
Yes Bank,150,24.03,22.74,2026-06-16
Two ways to load it:
portfolio.csv anywhere onto the screen (or click the upload spot).client/public/data/portfolio.csv before building, and it loads automatically.Your CSV stays in your browser. There is no account, server database, or sync. The app remembers imports locally; only an explicit Mr. Bungles click sends the limited digest described above.
Open the drawer (the litter-box icon, top right):
There's also a light/dark mode switch, a search box to find a specific company, a reset button, and full keyboard access — every cat is reachable with Tab and announces its numbers to screen readers. If your system asks for reduced motion, the cats politely hold still.
You need Node.js 20.19+ or 22.12+ and pnpm.
pnpm install # install dependencies
pnpm dev # open http://localhost:3000
To run it as a real website:
pnpm build # builds the app and a small web server
pnpm start # serves it on http://localhost:3000
That's it. The app remains a static page, with one optional server endpoint for Mr. Bungles.
To enable Mr. Bungles, copy .env.example to .env and set MORPH_API_KEY — the default provider (LLM_PROVIDER=morph) calls Morph's OpenAI-compatible endpoint with MORPH_MODEL (default morph-kimik3). Set LLM_PROVIDER to any other value to fall back to the generic MR_BUNGLES_API_KEY / MR_BUNGLES_MODEL / MR_BUNGLES_BASE_URL OpenAI-compatible path. These are server-only settings, never VITE_ variables. Both pnpm dev and the built Express server provide /api/mr-bungles; a static-only host or pnpm preview cannot supply the AI endpoint. Without configuration the field still works and Mr. Bungles reports that he is unavailable. Use pnpm start for a production preview of the AI endpoint.
Portfolio parsing, calculations, costumes, and storage run locally. Clicking Mr. Bungles sends company labels, selected holding/purchase facts, totals, view/lens and scope flags to the app server and configured model provider; the raw CSV and lot arrays are not sent. The server keeps a bounded, in-memory reply cache for one minute and does not log digests. Provider retention is governed by that provider. Font requests and optional self-hosted analytics remain separate — see .env.example.
Built by Mahesh Shantaram.
Free for individuals to use, study, and modify for personal, non-commercial purposes. Businesses that want to offer ekitty commercially need a paid license — see LICENSE.md or get in touch.
Curious how it works under the hood? See TECH-SPEC.md.