OUTRIDER docs
v1.0.0
Live demo Get help
● Start · Step by step

Installation
from zip to a running desk.

Install the dependencies, run the tests, ask the doctor what it can see, and start the desk. Plan about 10 minutes.

01Unzip and install

  1. UnzipUse a path without spaces, for example ~/outrider. Open a terminal in that folder.
  2. Check Node.js
    node --version   # v22 or higher
  3. Install the dependenciesRequired This installs hono, @hono/node-server, better-sqlite3, tsx, the live-trading libraries @nktkas/hyperliquid, viem and @noble/curves, plus the optional Anthropic SDK.
    npm install
  4. Run the testsThe whole suite runs offline in about a minute. On the release build, macOS with Node.js 22.22.2: 450 tests, 449 pass, 1 is marked to-do, 0 fail, 56 s.
    npm test

02Ask the doctor first

Before you trust the desk, check that it can see every data source from your machine:

node src/cli.mjs doctor

Every line is one check: ✅ works, ❌ failed (with what it breaks), · optional and not set up. At the end it lists config warnings, such as placeholder wallets or an empty Telegram channel list. It exits with an error only when a required check fails; a source used by a book you have enabled counts as required (Polymarket, for example, while polymarket.enabled is on). A network that blocks one venue makes doctor fail: switch that book off or run the desk elsewhere.

✅ Hyperliquid info               967 ms  SOL $…
✅ Solana RPC                     531 ms  slot …
✅ pump.fun stream (WS)          1144 ms  20+ pump.fun log messages — stream healthy
·  TypeSafe Jev                     0 ms  TYPESAFE_API_KEY not set  → Jev is optional — the desk runs without it
⚠ pump.wsUrl is the public endpoint — it drops heavy streams; get a free Helius/QuickNode WS

A failed Polymarket check only affects the Polymarket books. A failed HL leaderboard check only affects leaders and the liquidation map. See Troubleshooting.

03Create your config.json

cp config.example.json config.json

Then open config.json and fix the two placeholders:

  • telegram.channels: replace example_calls_channel with public channel names you trust (bare names, no @ and no URL), or make it an empty list [].
  • whales.wallets: replace PASTE_A_SOLANA_WALLET_YOU_FOLLOW with Solana addresses you follow, or make it an empty list [] (the default is empty). A placeholder left in makes the WHALE agent fail on every poll.

Everything else can stay as it is. All keys are explained in Configuration.

04First start

npm start   # the desk + dashboard + console; Ctrl+C to stop

The terminal prints three things you need:

  1. A one-time setup codeIn a block that starts with [admin] No owner account yet. It is shown once, only there.
  2. The dashboard addressDashboard http://127.0.0.1:8790/ · admin console http://127.0.0.1:8790/admin
  3. One line per cycleEquity, open positions, news, candidates and pump.fun events, every 20 seconds.

Open http://127.0.0.1:8790/admin and create the owner account with the setup code (steps). After that, the dashboard asks you to sign in.

Stopping

Press Ctrl+C once. The desk finishes the current cycle, saves its state and closes its connections. Press it a second time only if it hangs.

05Other ways to run it

CommandWhat it does
npm startThe full desk: every agent, the dashboard on port 8790 and the console at /admin.
npm run dashDashboard and console only. It reads data/ and trades nothing. Useful on a second machine, or to look at a replay (DASH_DATA=<dir> npm run dash).
npm run onceOne desk cycle, then exit.
npm run reportPnL, win rate and whether the edge survives without the luckiest trades.
DASH=0 npm startThe desk without dashboard and console (for example on a headless box where you only want Telegram).
docker compose up -d --buildThe full desk in a container, data in ./data (Docker).
pm2 start ecosystem.config.cjsThe full desk under PM2, restarted on failure (PM2).
Use the npm scripts

The console is TypeScript and needs the tsx loader, which the npm scripts add. Plain node src/cli.mjs run starts the desk but prints Admin console off. The other commands (doctor, liq, wallets, replay …) run fine with plain node.

06All commands

node src/cli.mjs help
usage: outrider doctor | run | dash | scan | once | report | verify | wallets [N] | holdings | gecko [MINUTES] | fomo [N] | calls [add …] | collect [HOURS] | liq [COINS] [--wallets N] | research [--quick] [--data DIR] | fit | news | leaders | record | replay | sweep | funding-backtest | trend-backtest | leverage | leverage-backtest [DAYS] [COINS] | jev-report | evolve [COIN] [INTERVAL] [DAYS] [SEED]

Each command is explained on the page it belongs to: wallets and collectors, liq, backtests and leverage, record, replay, sweep, fit, evolve, calls, verify, research. scan <address> [solana|bsc|base|ethereum] prints a fail-closed token security report (GoPlus, plus honeypot.is for EVM tokens). news prints what the news agent sees right now.