A modern, real-time wallet tracker dashboard for Hyperliquid perpetuals. Built with Next.js 15, TypeScript, and the @nktkas/hyperliquid SDK.
- Multi-wallet tracking - Track multiple public wallet addresses simultaneously
- Real-time polling - Configurable polling interval (default: 10 seconds)
- Account summary - View account value, unrealized PnL, margin used, withdrawable
- Position tracking - See all open positions with entry/mark price, leverage, PnL
- Liquidation monitoring - Distance to liquidation with color-coded warnings
- Change detection - Toast notifications for new/closed positions and PnL swings
- Network toggle - Switch between mainnet and testnet
- Dark mode - Beautiful dark theme by default
- Responsive design - Works on desktop, tablet, and mobile
- MCP Server - Available as npm package for AI assistants
- Next.js 15+ (App Router, React 19)
- TypeScript (strict mode)
- @nktkas/hyperliquid SDK
- Tailwind CSS v4
- shadcn/ui components
- Sonner for toast notifications
- Lucide React for icons
- Node.js 18.18 or later
- npm, pnpm, yarn, or bun
- Clone the repository
git clone <your-repo-url>
cd hyperliquid-wallet-tracker- Install dependencies
npm install- Run the development server
npm run dev- Open your browser
Navigate to http://localhost:3000
- Source of truth: Browser
localStorage - Default fallback:
data/config.json - Import/Export: JSON file from the sidebar
You can manage wallets in three ways:
- Via UI - Add/remove wallets from the sidebar
- Import JSON - Import wallet list from file
- Export JSON - Export current wallet list for backup/share
This project includes an MCP server published as hyperliquid-tracker-mcp on npm.
npx hyperliquid-tracker-mcpAdd to your MCP config (Claude Desktop, Cursor, Windsurf, opencode):
{
"mcpServers": {
"hyperliquid-tracker": {
"command": "npx",
"args": ["hyperliquid-tracker-mcp"]
}
}
}| Tool | Description |
|---|---|
list_tracked_wallets |
List configured wallet addresses |
add_wallet |
Add a wallet address to track |
remove_wallet |
Remove a wallet address |
clear_wallets |
Clear all tracked wallets |
get_all_mids |
Get mid prices for all perp coins |
get_account_summary |
Get account summary for a wallet |
get_wallet_positions |
Get detailed positions for a wallet |
get_multi_wallet_summary |
Aggregate summary across multiple wallets |
The MCP server source lives in mcp/ and can be developed locally:
cd mcp
npm install
npm run devSee mcp/README.md for full MCP package documentation.
hyperliquid-wallet-tracker/
├── mcp/ # MCP server (npm package)
│ ├── src/
│ │ ├── server.ts # MCP stdio server
│ │ ├── hyperliquid.ts # Hyperliquid API client
│ │ ├── config-store.ts # JSON config read/write
│ │ ├── types.ts # TypeScript types
│ │ └── utils.ts # Utility functions
│ ├── package.json # npm package config
│ ├── tsconfig.json
│ └── README.md
├── app/
│ ├── globals.css # Global styles + Tailwind
│ ├── layout.tsx # Root layout
│ └── page.tsx # Dashboard page
├── components/
│ ├── dashboard/
│ │ ├── AccountSkeleton.tsx
│ │ ├── PositionTable.tsx
│ │ ├── SummaryCards.tsx
│ │ ├── WalletDashboard.tsx
│ │ └── WalletSelector.tsx
│ ├── providers/
│ │ └── ToastProvider.tsx
│ └── ui/ # shadcn/ui components
├── hooks/
│ └── useWalletPolling.ts # Polling hook with change detection
├── lib/
│ ├── hyperliquid.ts # SDK client + data fetching
│ ├── types.ts # TypeScript type definitions
│ └── utils.ts # Utility functions
├── data/
│ └── config.json # Default config
├── mcp.json # MCP client config example
├── package.json
└── tsconfig.json
This project uses the public Info API endpoints from Hyperliquid:
POST /infowithtype: "clearinghouseState"- Get account summary and positionsPOST /infowithtype: "allMids"- Get current mid prices for all coins
See @nktkas/hyperliquid documentation for more details.
npm run build
npm startnpm run typecheckContributions are welcome! Please feel free to submit a Pull Request.
MIT License - feel free to use this project for any purpose.
- Hyperliquid - The perpetuals DEX
- @nktkas/hyperliquid - Community TypeScript SDK
- shadcn/ui - Beautiful UI components
- Vercel - Next.js framework
Note: This is a read-only tracker. It does not require any private keys or signing capabilities. All data is fetched from public API endpoints.