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.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
A single-user algorithmic trading platform for Indian equity options. Signals are scraped from Telegram groups (MTProto userbot), executed via the Kotak Neo API, and monitored through a React dashboard. [README 설치·사용 부분 발췌] Quick StartRead the full README ↗
A single-user algorithmic trading platform for Indian equity options.
Signals are scraped from Telegram groups (MTProto userbot), executed via the Kotak Neo API, and monitored through a React dashboard.
┌─────────────────────────────────────────────────────────┐
│ Telegram Groups (3rd-party, no bot access) │
└──────────────────────────┬──────────────────────────────┘
│ MTProto (grammers-client)
▼
┌─────────────────────────────────────────────────────────┐
│ telegram_ingester regex signal parser │
│ → TradeSignal → broadcast channel │
└──────────────────────────┬──────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ trading_engine stateful OMS (50ms tick) │
│ WaitingForEntry → Active → Target1Hit → Closed │
│ FeeCalculator (STT, SEBI, stamp, GST) │
│ → DbWriteMessage → mpsc channel │
└──────────────┬────────────────────────┬─────────────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌────────────────────────────┐
│ kotak_client │ │ SQLite (WAL) │
│ REST: login + │ │ wallet / paper_trades / │
│ place_live_order │ │ system_logs / │
│ WebSocket: LTP feed │ │ trading_config │
│ (sfeed.*) │ └────────────────────────────┘
└──────────────────────┘ │
▼
┌───────────────────────┐
│ server (Axum :8080) │
│ GET /api/portfolio │
│ GET /api/settings │
│ POST /api/settings │
│ POST /api/webhook/.. │
│ GET /api/logs/stream│
└───────────┬───────────┘
│ SSE + REST
▼
┌───────────────────────┐
│ frontend (Vite/React)│
│ Settings bar │
│ P&L chart (recharts) │
│ Trade table │
│ Live log terminal │
└───────────────────────┘
| Tool | Minimum version | Install |
|---|---|---|
| Rust + Cargo | stable ≥ 1.80 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
| Node.js | ≥ 20 | nodejs.org |
| pnpm | ≥ 9 | npm i -g pnpm |
| SQLite | any | shipped with macOS/Linux |
git clone <repo-url> auto-trader
cd auto-trader
# type-check all 5 crates
cargo check
# run the server (SQLite auto-created at trades.db)
cargo run -p server
The server listens on http://0.0.0.0:8080.
cd frontend
pnpm install
pnpm dev # http://localhost:5173 — proxies /api → :8080
Open http://localhost:5173 in your browser.
cd frontend
pnpm build # outputs to frontend/dist/
The Axum server already serves ../frontend/dist as a static fallback, so after building you can access the dashboard directly at http://localhost:8080.
This repo now supports a split deployment model:
For the backend host:
cd auto-trader
cargo build --release -p server
cd kotak-bridge && npm install
Then run the backend from the repo root so the SQLite database, Telegram session file, and kotak-bridge/ folder all stay in a stable relative layout:
cd auto-trader
./target/release/server
Recommended VM notes:
8080, or put Nginx/Caddy in front and expose HTTPS on 443trades.db and session.json on persistent diskkotak-bridge/index.jsFor the Vercel frontend:
frontend/ directoryServer URL or IP:PORT field in the Kotak login panelExamples:
http://34.93.xx.xx:8080https://api.example.comThe backend reads environment variables from the process environment. It also
auto-loads a .env file from the working directory at startup (via
dotenvy) if one is present — variables already exported in the shell or a
systemd EnvironmentFile= still take priority. So any of the following work:
.env file next to trades.db (never commit this — it's gitignored), orsystemd unit with Environment= or EnvironmentFile=All backend date-sensitive logic is normalized to Indian Standard Time (IST, UTC+05:30).
That includes expiry-date interpretation, "today" checks, and persisted trade/log timestamps,
so behavior stays aligned with Indian markets even if the server is running in another timezone.
See .env.example for a ready-to-copy template (and
frontend/.env.example for the optional frontend
one). These are the supported variables:
This is the beginning of the README. Read the rest at the original. Read the full README ↗