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

Installation
from zip to a running desk.

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

01Unzip and install

Which terminal

The commands on this page are written for the shell of macOS and Linux (bash or zsh). On Windows, run them in WSL (Windows Subsystem for Linux, Ubuntu) or Git Bash: commands such as cp, openssl, rm -rf and multi-line curl with \ do not work as written in PowerShell or cmd. The node and npm commands work in any of them.

  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 npm ci installs the exact versions from package-lock.json (use npm install only if you changed package.json). This installs hono, @hono/node-server, better-sqlite3, the live-trading libraries @nktkas/hyperliquid, viem and @noble/curves, the optional Anthropic SDK, and the developer tools (TypeScript, ESLint, Prettier).
    npm ci
  4. Build the consoleRequired The operator console is TypeScript. This compiles it with tsc to dist/. Run it once after installing and again after every update. The desk itself is plain JavaScript and runs with node as it is.
    npm run build
  5. Run the testsnpm test builds the console first, then runs the 482 automated tests. They need no network: every outside call is replaced by a stub.
    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 Telegram channels listed while channel reading is off. Sources of optional modules that are off (Polymarket, TypeSafe Jev) are not checked at all. It exits with an error only when a required check fails. A network that blocks one venue makes doctor fail: switch that book off or run the desk elsewhere.

✅ Hyperliquid info                 … ms  SOL $…
✅ Solana RPC                       … ms  slot …
✅ pump.fun stream (WS)             … ms  20+ pump.fun log messages — stream healthy
· ANTHROPIC_API_KEY            not set — Claude news scoring (keywords are used without it)
· whales.wallets is empty — WHALE follows no wallets until you add some (optional)
⚠ pump.wsUrl is the public endpoint — it drops heavy streams; get a free Helius/QuickNode WS

The lines above are an example of the format; the times and values are your own. A failed Polymarket check only affects the Polymarket books of the optional polymarket module. 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 placeholder:

  • 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. The file also contains "modules": { "perps": false, "polymarket": false, "jev": false }: the optional modules, off by default (Optional modules). All keys are explained in Configuration.

04First start

Choose the secret that creates the console owner first. In .env (copy it from .env.example if you have not), set ADMIN_SETUP_TOKEN= followed by the output of openssl rand -hex 24. On Windows, run openssl in WSL or Git Bash, or use any password generator for a random value of 24 or more characters. You can also leave it empty: the server then prints a one-time setup code to the terminal instead.

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

The terminal prints three things you need:

  1. The owner lineA line that starts with [admin] No owner account yet. With ADMIN_SETUP_TOKEN set it names that token; without it, the block shows a one-time setup code, 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 token (or the printed setup code) (steps). After that, the dashboard asks you to sign in, and you can remove ADMIN_SETUP_TOKEN from .env.

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).
npm run build && pm2 start ecosystem.config.cjsThe full desk under PM2, restarted on failure (PM2).
Build before you start

Everything runs with plain node: npm start is node src/cli.mjs run, and npm run dash is node src/cli.mjs dash. The console is loaded from dist/. Without npm run build the desk still runs, without the console, and prints Admin console off: build it once with `npm run build` (after `npm install`), then start again.

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 | record | replay | sweep
optional modules (config.json → modules): perps: leaders | funding-backtest | trend-backtest | leverage | leverage-backtest [DAYS] [COINS] | evolve [COIN] [INTERVAL] [DAYS] [SEED] · jev: jev-report

The second line lists the commands of the optional modules. They run while their module is off too, as research tools, and print a note first.

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.