Perp Cli README

The full upstream README, mirrored for reference. Install config, tool schemas, adoption signals and our own overview live on the Perp Cli listing page.

English | 한국어 | 中文 | 日本語

perp-cli

npm version npm downloads license

One CLI for perpetual futures across many DEXs — trade, compare funding, move funds and run bots from the terminal, or hand it to an AI agent (JSON output, MCP server, agent skill).

  • Trade on 10 venues: Hyperliquid (incl. HIP-3 dexes), Pacifica, Lighter, Lighter RH, Aster, Ondo Perps, Arcus, QFEX, RISEx, TxFlow (bridge and perp-perp arb cover the original four: Pacifica, Hyperliquid, Lighter, Aster)
  • Market data only: GRVT, Extended, Variational — plus Derive options data

Install

Terminal
npm install -g perp-cli
perp --version

# Or without a global install
npx -y perp-cli --json portfolio

The package ships three executables: perp (the CLI), perp-mcp (the MCP server, stdio) and perp-guardrail (the signing guardrail).

Quick start

1. Look around — no keys needed.

bash
perp -e hl market list                  # markets, prices, funding
perp -e hl market book BTC              # order book
perp arb scan --rates                   # funding rates across venues

2. Add a wallet. The setup wizard creates or imports an encrypted OWS vault wallet, picks venues and registers agent keys (it asks before every signature and never moves funds):

bash
perp setup
perp wallet show

Keys are read from a hidden prompt or stdin — never from argv or ~/.perp/.env. One EVM key covers Hyperliquid, Lighter and Aster. For other paths (one-line key import, scriptable setup, keys created on the exchange website) see docs/setup.md.

3. Check your account and trade. Add -n testnet to any command to use testnet.

bash
perp --json portfolio                                 # balances + positions + risk on every venue
perp --json --dry-run -e hl trade market BTC buy 0.001   # validate only, nothing is sent
perp --json -e hl trade market BTC buy 0.001          # market order (bounded by the slippage setting)
perp --json -e hl trade close BTC

AI Agent Skill

Drop-in skill for Claude Code, Cursor, Codex, Gemini CLI, and other agent CLIs. Bundles a non-interactive command guide, ops playbook, strategy framework, and reusable shell scripts (preflight, arb monitor, validation) so your agent stops at the right confirmation points and never wedges on interactive wizards.

Install

bash
# Claude Code — slash command
/install-skill hypurrquant/perp-cli

# Cursor / Codex / generic agent CLIs — via npx
npx skills add hypurrquant/perp-cli

# Manual install (any agent that reads a Skills directory)
git clone https://github.com/hypurrquant/perp-cli.git
cp -R perp-cli/skills/perp-cli ~/.claude/skills/        # or your CLI's skills dir

The skill ships inside the npm package (perp-cli/skills/perp-cli), so a global install also makes it available locally:

Terminal
npm install -g perp-cli@latest
ls "$(npm root -g)/perp-cli/skills/perp-cli"

What's in the skill

FilePurpose
SKILL.mdTop-level agent guide — rules, workflows, examples
references/commands.mdFull non-interactive command reference (every group)
references/agent-operations.mdSetup flows, idempotency, error handling, common mistakes
references/strategies.mdFunding-arb decision framework + risk management
scripts/preflight.shInstall + wallet + connectivity + risk readiness check
scripts/arb-monitor.shLive monitor for open arb positions
scripts/spot-perp-scan.shScan spot+perp opportunities with balance context
scripts/funding-analysis.shCross-exchange funding overview / per-symbol drilldown
scripts/validate-arb.shPre-execution validation (price / balance / risk / dry-run)

See skills/perp-cli/SKILL.md for the full agent guide.

Features

  • Funding rate arb — perp-perp and spot-perp scans, one-command dual-leg entry and exit
  • Portfolio — one call returns balances, positions and risk across every venue
  • Funds — deposit, withdraw, transfer, multi-provider bridge (CCTP / Relay / deBridge), inter-exchange rebalance
  • Bots — TWAP, grid, DCA, trailing stop and more, with background job management
  • Agent-first — --json, --fields, --ndjson, --dry-run, runtime schema introspection
  • Safety — pre-trade validation, a slippage bound on every market order, client-id deduplication, response sanitization

Venues

Venue-eTradingChain / collateral
Hyperliquidhyperliquid (hl)✅HyperEVM, USDC; HIP-3 dexes via --dex
Pacificapacifica (pac)✅Solana, USDC
Lighterlighter (lt)✅Ethereum L2, USDC
Lighter RHlighter-rh (lrh)✅Robinhood chain, USDG
Asteraster (ast)✅BNB Chain, USDT / USDC
Ondo Perpsondo✅off-chain, USDC
Arcusarcus✅ (access whitelist)Robinhood chain, USDG
QFEXqfex (qf)✅ (manual trading only)custodial; equities, indices, commodities
RISExrisex✅ (manual trading only; mainnet not yet verified)RISE chain, USDC
GRVTgrvtmarket data onlyUSDT
Extendedextended (ext)market data onlyStarknet; crypto + equities / FX
Variationalvariational (var)market data onlyRFQ venue
TxFlowtxflow (txf)✅ (manual trading only; mainnet not yet verified, whitelist)official API (Beta), USDC
Derivederiveoptions data only—

Common commands

bash
# Market data
perp --json -e <EX> market list | book <SYM> | funding <SYM> | kline <SYM> 1h

# Trading
perp --json -e <EX> trade buy <SYM> <SIZE> --tp <PX> --sl <PX>    # entry protected by TP/SL
perp --json -e <EX> trade limit <SYM> buy <PX> <SIZE>
perp --json -e <EX> trade close <SYM>                              # or: flatten (every position)

# Account
perp --json portfolio
perp --json -e <EX> account positions
perp --json account balance --address <ADDR>                       # any account, keyless

# Funding arb
perp --json arb scan --min 5
perp --json arb exec <SYM> <longEx> <shortEx> <USD>

# Funds
perp --json funds deposit hyperliquid 100
perp --json funds bridge send --from solana --to arbitrum --amount 100

Full list with every group: docs/commands.md. Global flags: --json, --fields <f>, --ndjson, --dry-run, -n testnet, -e <venue>, --dex <name> (HIP-3), -w, --wallet <name>.

Command Groups

GroupDescription
marketPrices, orderbook, funding, klines, HIP-3 dexes
accountBalance, positions, orders, margin
tradeMarket/limit/stop orders, close, scale, split execution
outcomeHyperliquid Outcome (HIP-4) — binary/range contracts, quoted per outcome (outcomeMeta quoteToken, USDC today), no leverage
optionsOptions market data, read-only (Derive: -e derive options underlyings / expiries / chain / quote)
printPacifica Print — strike orders earning a premium per cycle: games, quote, positions, history, events, deposit / cancel (--dry-run)
vaultPacifica vaults (API: lakes) — list, info, positions, deposit (master wallet only) / withdraw (--dry-run)
arbFunding rate arb — scan, exec, close, monitor (perp-perp & spot-perp)
strategy19 bot algorithms (grid, dca, twap, APEX, REFLECT, presets) + nested scripted plans
fundsDeposit, withdraw, transfer, cross-chain bridge (multi-provider), inter-exchange rebalance
riskRisk limits, liquidation distance, guardrails
walletMulti-wallet management, agent wallets (wallet agent ...), builder fees (wallet builder ..., off by default), margin mode / subaccount / API keys (wallet manage ...), on-chain balances
historyExecution log, PnL, performance breakdown
portfolioCross-exchange unified overview (replaces former account balance / status / dashboard; account balance --address reads any account's balances, keyless)
healthAdapter health check: ping every venue's REST endpoint (connectivity + latency)
settingsCLI settings (referrals, defaults, fees, builder fees, deBridge affiliate)
backtestStrategy backtesting
backgroundBackground process supervisor (tmux sessions for strategies, alerts, etc.)
alertsFunding rate alerts (Telegram / Discord) with background daemon
setupSetup wizard: OWS wallet, venues, agent wallets, slippage, default venue (alias: init; --non-interactive for scripts)

Agent-First CLI Design

Built following agent-first CLI principles:

bash
# Every command returns structured JSON envelope
perp --json portfolio
# → { "ok": true, "data": {...}, "meta": { "timestamp": "..." } }

# Filter output to specific fields (saves tokens)
perp --json --fields totalEquity,risk portfolio

# Stream large lists as NDJSON (one JSON per line)
perp --json --ndjson -e hl market list

# Pre-validate before executing
perp --json -e hl trade check BTC buy 0.01
perp --json --dry-run -e hl trade market BTC buy 0.01

# Idempotent orders with client ID (Hyperliquid: a 128-bit cloid, 0x + 32 hex; --auto-id generates one)
perp --json -e hl trade market BTC buy 0.01 --client-id 0x1234567890abcdef1234567890abcdef
perp --json -e hl trade status c:0x1234567890abcdef1234567890abcdef

All responses are auto-sanitized (control chars stripped, prompt injection patterns blocked). Errors include retryable flag — only retry when true.

MCP Server

Glama MCP server

perp-mcp serves 31 tools to Claude Desktop, Cursor and other MCP clients. Market data needs no keys; for account and trading tools run perp setup first (the server reads the same wallet). Never put private keys in the MCP config.

config.json
{
  "mcpServers": {
    "perp-cli": {
      "command": "npx",
      "args": ["-y", "-p", "perp-cli", "perp-mcp"]
    }
  }
}

Testnet, the full tool list, resources and prompts: docs/mcp.md.

Documentation

DocWhat's in it
SetupWallets, agent keys, keys created on the exchange website, where secrets are stored
VenuesSupport matrix, venue ids, QFEX / RISEx / GRVT / Extended / Variational / TxFlow / Derive details
TradingTime in force, TP/SL, stops, order edit, slippage, spot trading, builder fees
CommandsEvery command group with examples, Telegram alerts
Mainnet verificationWhat has been run with real money, per venue
MCP serverConfiguration, testnet, tools, resources, prompts
Signing guardrailperp-guardrail, the OWS policy executable for agent keys
TestingTest suites and the venue checklist
CHANGELOGRelease notes

License

MIT