Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
전략을 간단히 적으면 코딩 에이전트가 검토 가능한 플러그인을 작성하고, whale가 밀리초 내에 모든 환경에서 실행합니다
Describe your strategy in plain words; your coding agent writes a reviewable plugin, and your whale runs it across every venue in milliseconds. Open source, TypeScript, MIT.
금융TypeScript · CSSGitHub @OpenWhale-Org온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
A framework for AI-driven economic activity. Declarative, composable, observable, deterministic.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The programmable layer for composable, AI-native economic strategies
OpenWhale is a TypeScript framework for automated trading strategies. Monitors collect, Strategies decide, Executors act; the three are decoupled, so one strategy runs on any venue and against any data source, and can be written, audited and evolved by an AI.
Development mode with hot reload. For a server see DEPLOYMENT.md.
Prerequisites: Node.js ≥ 20, pnpm ≥ 9 (npm i -g pnpm), git.
Edit .env — three variables are required on first boot:README 전문 보기 ↗The programmable layer for composable, AI-native economic strategies
OpenWhale is a TypeScript framework for automated trading strategies. Monitors collect, Strategies decide, Executors act; the three are decoupled, so one strategy runs on any venue and against any data source, and can be written, audited and evolved by an AI.
Development mode with hot reload. For a server see DEPLOYMENT.md.
Prerequisites: Node.js ≥ 20, pnpm ≥ 9 (npm i -g pnpm), git.
1. Clone and install
git clone https://github.com/OpenWhale-Org/OpenWhale.git
cd OpenWhale
pnpm install
2. Configure
cp .env.example .env
Edit .env — three variables are required on first boot:
OPENWHALE_MASTER_KEY=<random secret> # encrypts stored credentials; generate with: openssl rand -hex 32
OPENWHALE_ADMIN_USER=admin # first dashboard account
OPENWHALE_ADMIN_PASSWORD=<password>
The master key cannot be recovered — losing it means re-entering every API key. The admin variables create the first user; remove them after signing in. Everything else in .env.example is optional (ports, venue proxy, allowed origins).
3. Build and start
pnpm build
pnpm dev # gateway on :3001, dashboard on :3000, both with hot reload
pnpm dev:gateway / pnpm dev:dashboard start one side only.
4. Sign in
Open http://localhost:3000 and sign in with the admin user. The dashboard offers a guided tour on first visit: a credential on the Hyperliquid testnet, an account, a copy-trading instance — no real funds.
5. Trade
Credentials → Accounts → Strategies → New strategy. A strategy instance binds params to accounts; activate it and follow it on Instances (live events, executions, runs, PnL).
Docker instead of steps 1–3:
cp .env.example .env # same three variables
docker compose up -d --build
State lives in the openwhale-data volume; details in DEPLOYMENT.md.
The gateway holds the runtime and all secrets; the dashboard is a frontend that proxies /api/* to it (OPENWHALE_GATEWAY_URL, default http://localhost:3001).
OPENWHALE_HTTPS_PROXY=http://127.0.0.1:7897 # REST + WebSocket, every venue
OPENWHALE_HTTPS_PROXY_BINANCEUSDM=off # per venue: ccxt id upper-cased; `off` = direct
HTTPS_PROXY and NODE_USE_ENV_PROXY are not honoured — ccxt uses its own fetch. The variable is namespaced so that order traffic never changes route through an unrelated proxy setting.
Enforced by the gateway: every /api/* route requires a session; the dashboard only carries the cookie. Sessions are opaque SQLite tokens (7-day expiry, revocable); passwords are scrypt-hashed; there are no roles. Before exposing the gateway: terminate TLS in front of it (the session cookie is Secure), keep port 3001 off the public internet, set OPENWHALE_ALLOWED_ORIGIN only for cross-origin frontends. Details in DEPLOYMENT.md.
exchange/perp × binance, …). Domain packages define kinds, venue packages fill cells; a data-driven ccxt roster ships twelve venues.skills/openwhale-dev skill that teaches Claude the framework contract.| Concept | Definition |
|---|---|
| Monitor | Collects data and emits keyed records (venue:symbol). A contract with one or more implementations; users create per-key instances. Emits persist as JSONL and drive triggers. |
| Strategy | Pure decision logic. Declares monitor / executor / account dependencies by label, receives triggers, returns ExecutionInstruction[]. Params: base (required) and tunable (defaulted) zod schemas. |
| Executor | Turns instructions into venue actions through adapter sessions — retries, idempotent client order ids, latency and slippage capture. Credential slots resolve to sessions (by kind) or raw credential data (raw: true); optional: true slots may stay unbound. |
| Instance | Strategy + params + account bindings, activated as a unit. Live events, executions, runs and logs hang off it. |
| Account | A named binding of a credential to an account implementation (generic or venue-specialized). Strategies read balances and positions through it. |
| Trigger | Cron schedules and monitor conditions (multi-source AND within a window). Subscriptions keep monitors collecting without waking the strategy; addMonitorSource adds sources discovered at runtime. |
| Portfolio journal | Optional instance-scoped history: idempotent snapshots, fills, decisions, market bars. Core stores them and derives equity, drawdown and trade reports. |
Monitor ──emit(key, data)──▶ TriggerManager ──StrategyContext──▶ Strategy ──ExecutionInstruction[]──▶ ExecutionQueue ──▶ Executor
└─ run trace persisted
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗