Browse by type
Language Setting: Set LANG=en in your .env file to display the CLI interface in English.
A Bun-powered multi-exchange perpetuals workstation that ships an SMA30 trend engine, a Guardian stop sentinel, and two market-making modes. It offers instant restarts, realtime market data, structured logging, and an Ink-based CLI dashboard.
If you'd like to support this project and get fee discounts, please consider using these referral links:
ritmex-bot)ritmex-bot provides an agent-friendly command interface for exchange capability checks, market data, account/position queries, order operations, and strategy execution.
--symbol is passed through exactly as provided (no symbol normalization).--dry-run simulation and --json structured output for automation.skills add)bunx skills add https://github.com/discountry/ritmex-bot --skill use-ritmex-bot
If you need a specific branch/tag, append --ref <branch-or-tag>.
Full guide: ritmex-bot CLI User Guide (English)
| Exchange | Market Type | Standard Required Settings | Notes |
|---|---|---|---|
| Aster | USDT perpetuals | ASTER_API_KEY, ASTER_API_SECRET |
Production; default exchange |
| Binance | Spot + USDⓈ-M perpetuals | BINANCE_API_KEY, BINANCE_API_SECRET |
BINANCE_MARKET_TYPE selects the market |
| StandX | USD perpetuals | STANDX_TOKEN, STANDX_REQUEST_PRIVATE_KEY |
JWT authentication + Ed25519 trade signing |
| GRVT | USDT perpetuals | GRVT_API_KEY, GRVT_API_SECRET, GRVT_SUB_ACCOUNT_ID, GRVT_INSTRUMENT |
GRVT_ENV supports prod/testnet |
| Lighter | Perpetuals + selected Spot markets | LIGHTER_ACCOUNT_INDEX, LIGHTER_API_KEY_INDEX, LIGHTER_API_PRIVATE_KEY |
Defaults to LIGHTER_ENV=testnet |
| Backpack | Spot + USDC perpetuals | BACKPACK_API_KEY, BACKPACK_API_SECRET |
Use an explicit *_PERP symbol for perpetuals |
| Paradex | USD perpetuals | PARADEX_PRIVATE_KEY, PARADEX_WALLET_ADDRESS |
PARADEX_SANDBOX=true selects testnet |
| Nado | USDC perpetuals | NADO_SIGNER_PRIVATE_KEY, NADO_SUBACCOUNT_OWNER |
NADO_ENV supports inkMainnet/inkTestnet |
| Ondo Perps | Crypto/equity/commodity perpetuals | ONDOPERPS_API_KEY_ID, ONDOPERPS_API_SECRET |
HMAC authentication with production and sandbox endpoints |
bun and bunx on PATH)curl -fsSL https://github.com/discountry/ritmex-bot/raw/refs/heads/main/setup.sh | bash
The script installs Bun, project dependencies, collects Aster API credentials, generates .env, and launches the CLI. Prepare the relevant exchange API keys before running it.
bash
git clone https://github.com/discountry/ritmex-bot.git
cd ritmex-bot
Alternatively, download the ZIP from GitHub and extract it manually.curl -fsSL https://bun.sh/install | bashpowershell -c "irm bun.sh/install.ps1 | iex"
Re-open the terminal and verify bun -v prints a version.bash
bun installbash
cp .env.example .env
Edit .env with the exchange credentials and overrides you plan to use.bash
bun run index.ts
Use the arrow keys to pick a strategy, Enter to start, Esc to go back, and Ctrl+C to exit..env.example captures all defaults; the most common settings are summarised below.
| Variable | Purpose |
|---|---|
EXCHANGE |
Choose the venue (aster / binance / standx / grvt / lighter / backpack / paradex / nado / ondoperps) |
TRADE_SYMBOL |
Contract symbol (defaults to BTCUSDT) |
TRADE_AMOUNT |
Order size in base asset units |
LOSS_LIMIT |
Max per-trade loss in USDT before forced close |
TRAILING_PROFIT / TRAILING_CALLBACK_RATE |
Trailing stop trigger (USDT) and pullback percentage |
PROFIT_LOCK_TRIGGER_USD / PROFIT_LOCK_OFFSET_USD |
Profit lock trigger and offset thresholds |
BOLLINGER_* |
Bollinger bandwidth filters for the trend engine |
PRICE_TICK / QTY_STEP |
Exchange precision filters for price and quantity |
POLL_INTERVAL_MS |
Trend engine polling cadence in milliseconds |
MAX_CLOSE_SLIPPAGE_PCT |
Allowed deviation vs mark price when closing |
MAKER_* |
Maker-specific knobs (quote offsets, refresh cadence, slippage guard, etc.) |
CLI flags override environment variables at runtime:
bash bun run index.ts --exchange grvt --strategy maker bun run index.ts -e lighter -s offset-maker --silent
Each supported exchange has a standalone Chinese and English configuration guide covering credential creation, required variables, environment selection, symbol formats, read-only verification, and security controls.
| Exchange | English Guide | 中文教程 |
|---|---|---|
| Aster | Configuration Guide | 配置教程 |
| Binance | Configuration Guide | 配置教程 |
| StandX | Configuration Guide | 配置教程 |
| GRVT | Configuration Guide | 配置教程 |
| Lighter | Configuration Guide | 配置教程 |
| Backpack | Configuration Guide | 配置教程 |
| Paradex | Configuration Guide | 配置教程 |
| Nado | Configuration Guide | 配置教程 |
| Ondo Perps | Configuration Guide | 配置教程 |
bun run index.ts # Launch the CLI (default entrypoint)
bun run start # Alias for bun run index.ts
bun run dev # Development entrypoint
bun run lint # Run Oxlint checks
bun run lint:fix # Apply safe Oxlint fixes
bun x vitest run # Execute the full Vitest suite
The project now supports a standalone command mode with the command name ritmex-bot:
ritmex-bot doctor
ritmex-bot exchange list
ritmex-bot market ticker --exchange binance --symbol BTCUSDT
ritmex-bot order create --exchange binance --symbol BTCUSDT --side buy --type limit --quantity 0.01 --price 90000 --dry-run
ritmex-bot strategy run --strategy maker --exchange standx --silent --dry-run
# Global install
bun add -g ritmex-bot
ritmex-bot doctor
# No install
bunx ritmex-bot doctor
--exchange: picks exchange using the existing env/config logic--symbol: passed through as-is (no symbol normalization)--dry-run: simulation mode (no real create/cancel side effects)--json: structured JSON output for AI agents--timeout: command timeout in millisecondsSkip the Ink menu and start a strategy directly:
bun run index.ts --strategy trend --silent
bun run index.ts --strategy maker --silent
bun run index.ts --strategy offset-maker --silent
Combine with --exchange/-e to pin the venue for that run.
Convenience aliases exposed via package.json:
bun run start:trend:silent
bun run start:maker:silent
bun run start:offset:silent
Install pm2 locally (e.g. bun add -d pm2) and launch the process:
bunx pm2 start bun --name ritmex-trend --cwd . --restart-delay 5000 -- run index.ts --strategy trend --silent
You can also call the bundled scripts:
bun run pm2:start:trend
bun run pm2:start:maker
bun run pm2:start:offset
Run pm2 save afterwards if you want the process list to survive reboots.
Powered by Vitest:
bun run lint
bun run lint:fix
bun run test
bun x vitest --watch
.env lives in the repo root and variable names are spelled correctly.PRICE_TICK, QTY_STEP, and TRADE_SYMBOL with the exchange filters.
See simple-readme.md for more detailed walkthroughs.Algorithmic trading carries risk. Validate strategies with paper trading or small capital first, safeguard your API keys, and only grant the minimum required permissions.
browse all types & interfaces →
$ claude mcp add ritmex-bot \
-- python -m otcore.mcp_server <graph>