Skip to content
nirholasPublic

About

Autonomous perp-trading agents on Hyperliquid with hard risk limits enforced in code, a tamper-evident public journal, paper + live modes, and an MCP server.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

perpad

Autonomous perp-trading agents on Hyperliquid, with limits the model cannot override.

License: MIT Node TypeScript MCP llms.txt

Docs · Quickstart · Risk engine · Roadmap

An LLM agent reads live BTC and ETH prices from Hyperliquid, checks its account, then opens or closes isolated-margin perps. Every order passes a deterministic risk engine. Every thought, action and refusal is written to a hash-chained journal anyone can verify.

        ┌────────────┐  5 tools   ┌──────────────┐  clamp / deny  ┌────────────┐
 tick → │  Claude    │ ─────────▶ │ risk engine  │ ─────────────▶ │   venue    │ → Hyperliquid
        │  (agent)   │ ◀───────── │ (pure code)  │                │ live/paper │
        └─────┬──────┘  verdicts  └──────────────┘                └────────────┘
              └──────────── every step ──▶ hash-chained journal (JSONL)

Why

Most trading-agent demos give a model an exchange key and hope. perpad inverts that. The model has five tools and no way to withdraw, transfer, change limits or use cross margin. The only path to an order runs through code that reads live exchange limits. If the model asks for 100x on a 40x market it gets 40x or a refusal, and the refusal is journaled.

Quickstart (paper mode, no exchange key)

git clone https://github.com/nirholas/perpad && cd perpad
npm install && npm run build
export ANTHROPIC_API_KEY=sk-ant-...
node dist/cli.js run examples/btc-eth.json --once
node dist/cli.js verify journal/tidewatcher.jsonl

Paper mode uses real Hyperliquid prices with simulated fills, the 0.045% taker fee and isolated liquidation. Going live needs HL_PRIVATE_KEY (a Hyperliquid API wallet, which can trade but not withdraw), HL_ACCOUNT_ADDRESS, and both --live --i-understand-real-funds. Try "testnet": true first.

Features

Hard limits Allowed markets, max leverage clamped to the live exchange cap (BTC 40x, ETH 25x today), margin per trade, open positions, daily-loss kill switch
Journal SHA-256 chained JSONL. perpad verify pinpoints the first edited or missing entry
Venues HyperliquidVenue (real, @nktkas/hyperliquid) and PaperVenue behind one interface
MCP server Read-only: get_markets, check_risk, read_journal. Holds no key
Fee math Integer micro-unit 30/70 split, $15 sweep minimum, buyback / compound / payout routing
Agent discovery llms.txt, llms-full.txt, A2A agent card, MCP metadata, AGENTS.md

Library

import { Agent, Journal, PaperVenue, HyperliquidPrices } from "perpad";

const venue = new PaperVenue(new HyperliquidPrices(), 1000);
await new Agent(config, venue, new Journal("journal/a.jsonl")).tick();
import { evaluate } from "perpad";
evaluate(
  { coin: "BTC", side: "long", leverage: 100, marginUsd: 900 },
  { openCoins: [], withdrawableUsd: 1000, dailyPnlUsd: 0, exchangeMaxLeverage: { BTC: 40 } },
  { markets: ["BTC"], maxLeverage: 50, marginPerTradeUsd: 100, maxOpenPositions: 1 },
); // { allowed: true, adjusted: { leverage: 40, marginUsd: 100 } }

MCP

{ "mcpServers": { "perpad": { "command": "npx", "args": ["-y", "github:nirholas/perpad", "mcp", "journal/agent.jsonl"] } } }

Status and roadmap

v0.1 ships the trading core, journal, paper and live venues, MCP server and fee math, covered by 21 tests including a live Hyperliquid read. The Solana leg (claim pump.fun creator fees, swap, bridge, deposit to Hyperliquid), coin launch flow, buybacks and journal anchoring are on the roadmap. They are not shipped and nothing here pretends otherwise.

Security and risk

Leveraged perps can lose all margin quickly. This is software, not financial advice, and makes no profit claims. Read the security model and SECURITY.md. Independent project, not affiliated with Hyperliquid, pump.fun or Anthropic.

Contributing

PRs welcome. See CONTRIBUTING.md. Questions and ideas go to Discussions.

Development

npm test            # 21 tests, includes a live read-only Hyperliquid call
npm run typecheck
npm run site:build  # regenerates docs/ (GitHub Pages)

MIT © nirholas

Support the project

If perpad saves you time, star it on GitHub. Stars are how other developers and AI agents find the repositories worth trusting, and they cost you one click.

Know someone who would use it? Post on X · Share on Bluesky · Share on LinkedIn · Submit to Hacker News · Share on Reddit

Built for AI agents too

Coding agents and LLM tooling can read this repo directly: AGENTS.md, llms.txt, llms-full.txt. Point an agent at https://github.com/nirholas/perpad and it has the context it needs.

More from the same author

Contributors

Contributors

Star history

Star History Chart

About

Autonomous perp-trading agents on Hyperliquid with hard risk limits enforced in code, a tamper-evident public journal, paper + live modes, and an MCP server.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages