Not in the top 1,000 by GitHub stars
galleonlabs/hypergrok-trading-desk
Hyperliquid trading desk for AI agents: 7 roles, 17 skills and keyless market tools. Research first; execution requires your API wallet and approved tickets. Grok Bot, Claude Code, Cursor, Codex, Gemini CLI and Grok Build.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/desk-execution-protocol/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-incident-response/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-monitoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-operating-model/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-post-trade-review/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-risk-limits/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-strategy-lab/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/desk-trade-lifecycle/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Local scripts
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hypergrok-bootstrap/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-account/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-advanced/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-api-reference/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-market-data/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
A local comparison is unavailable. You can inspect the recorded versions on GitHub.
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-orders/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-positions/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-setup/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Network or broad shell
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
skills/hyperliquid-websocket/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Not checked yet → After Instructions only
4d0ae81c7fbd → 8ec18c3fe979
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Not checked yet
First observation → 4d0ae81c7fbd
No earlier version was observed for comparison.
Verified commit 8ec18c3fe979d7d5978ee666301e9b59ff498f73
git clone --filter=blob:none --no-checkout https://github.com/galleonlabs/hypergrok-trading-desk.git .hotskills/galleonlabs-hypergrok-trading-desk && git -C .hotskills/galleonlabs-hypergrok-trading-desk checkout --detach 8ec18c3fe979d7d5978ee666301e9b59ff498f73
# Copy each selected skill directory from .hotskills/galleonlabs-hypergrok-trading-desk into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/galleonlabs/hypergrok-trading-desk.git .hotskills/galleonlabs-hypergrok-trading-desk && git -C .hotskills/galleonlabs-hypergrok-trading-desk checkout --detach 8ec18c3fe979d7d5978ee666301e9b59ff498f73
# Copy each selected skill directory from .hotskills/galleonlabs-hypergrok-trading-desk into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/galleonlabs/hypergrok-trading-desk.git .hotskills/galleonlabs-hypergrok-trading-desk && git -C .hotskills/galleonlabs-hypergrok-trading-desk checkout --detach 8ec18c3fe979d7d5978ee666301e9b59ff498f73
# Copy each selected skill directory from .hotskills/galleonlabs-hypergrok-trading-desk into .gemini/skills/<skill-name>/Heat
8.2- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- desk-execution-protocol
skills/desk-execution-protocol - desk-incident-response
skills/desk-incident-response - desk-monitoring
skills/desk-monitoring - desk-operating-model
skills/desk-operating-model - desk-post-trade-review
skills/desk-post-trade-review - desk-risk-limits
skills/desk-risk-limits - desk-strategy-lab
skills/desk-strategy-lab - desk-trade-lifecycle
skills/desk-trade-lifecycle - hypergrok-bootstrap
skills/hypergrok-bootstrap - hyperliquid-account
skills/hyperliquid-account - hyperliquid-advanced
skills/hyperliquid-advanced - hyperliquid-api-reference
skills/hyperliquid-api-reference - hyperliquid-market-data
skills/hyperliquid-market-data - hyperliquid-orders
skills/hyperliquid-orders - hyperliquid-positions
skills/hyperliquid-positions - hyperliquid-setup
skills/hyperliquid-setup - hyperliquid-websocket
skills/hyperliquid-websocket
How it works
desk-execution-protocol
When your agent uses it
The Execution Trader's procedure for turning an approved ticket into one Hyperliquid action and reconciling it - the pre-send checklist, order construction rules, single-send discipline, unknown-result handling and the execution report. Use before and after every send, cancel, modify, leverage change or close.
What it loads into context
Frontmatter
97 tokensAlways available to the agent
SKILL.md
2,411 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Pre-send checklist
- Send
- Unknown results
- Reconciliation
- Cancels, modifies, leverage, closes
- Rehearsal rule
- Report
- Never
Files
../../.claude-plugin/marketplace.jsonasset760 bytes../../.claude-plugin/plugin.jsonasset607 bytes../../hooks/exchange-write-gate.jsonasset393 bytes../../hooks/exchange-write-gate.jsonasset393 bytesATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore10,873 bytes
Read SKILL.md
# Execution protocol
This is the only skill on the desk that ends with a request to Hyperliquid's `/exchange` endpoint, and only the Execution Trader uses it. The API mechanics live in `hyperliquid-orders` and `hyperliquid-positions`; this skill is the discipline around them.
## Inputs
- The proposal file `/workspace/trading-desk/proposals/<id>.md` with a Risk Manager PASS and exact ticket fields.
- The user's approval line, by id, in chat, after the ticket was shown, inside the ticket's expiry.
- The desk computer configured per `hyperliquid-setup`: `HYPERLIQUID_NETWORK`, `HYPERLIQUID_ACCOUNT_ADDRESS`, and the API wallet key available to scripts from the environment (never printed).
## Pre-send checklist
Run every item and write the result under `## execution` before sending. Any failure: do not send, name the item, hand back to the Desk Lead.
View the complete source on GitHubdesk-incident-response
When your agent uses it
What the desk does when something goes wrong on Hyperliquid - unknown send results, unexpected fills or positions, unprotected positions, stuck or orphaned orders, API outages, rate limiting, and suspected API wallet compromise. Contain first, reconcile from the exchange record, act only through approved tickets, then review. Use the moment anything does not match the ticket.
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
1,781 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Declare
- Playbooks
- Containment rules
- Close the incident
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore8,166 bytes
Read SKILL.md
# Incident response
An incident is any moment when the exchange record and the desk's expectation disagree, or when the desk cannot see the exchange at all. The reflex is: stop adding, look, contain with approval, then review. Never widen the harm by improvising.
## Declare
Any Bot can declare an incident. Post on the floor:
```
INCIDENT INC-20260817-01 | 11:40 UTC | HG-20260817-02 | send timeout, result unknown | owner: Execution Trader
```
The Desk Lead confirms an owner (usually the Execution Trader for order/position incidents, the Risk Manager for exposure incidents, the Desk Lead for access incidents). New proposals pause until the incident is contained.
View the complete source on GitHubdesk-monitoring
When your agent uses it
How the desk watches markets and the account between trades using Grok Bot routines and WebSocket or polling watches - the desk brief, book checks, funding and price watches, alert conditions and what a watch may and may not do. Use when the user asks for briefings, alerts, "watch X" or scheduled checks.
What it loads into context
Frontmatter
101 tokensAlways available to the agent
SKILL.md
1,641 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Grok Bot routines
- The desk brief
- When to post
- Watches
- Hygiene
- Never
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore6,757 bytesSKILL.mdcore6,757 bytes
Read SKILL.md
# Monitoring, briefs and watches
Monitoring is read-only. A watch may fetch, compute, save and alert. It may never send to the exchange. If a watch condition implies action ("stop got hit, re-enter"), the alert opens a proposal; the lifecycle does the rest.
## Grok Bot routines
Each Bot can own routines (schedules or event triggers). Ask the owning Bot to create one with: schedule and time zone, input source, expected result, approval boundary. Keep routines few and specific; the app keeps only recent run records, so a routine that produces something durable should also write to `/workspace/trading-desk`.
Recommended starting set (the user picks; none is on by default):
| Routine | Owner | Schedule | Output |
| --- | --- | --- | --- |
| Desk brief | Desk Lead | once a day at the user's chosen time | `briefs/YYYY-MM-DD-desk.md` and a short post |
| Book check | Risk Manager | every 4-8 hours while positions are open | alert only if something changed or a limit is near |View the complete source on GitHubdesk-operating-model
When your agent uses it
How the HyperGrok trading desk works as a team of Grok Bots - roles, seats, shared workspace, evidence standard, approval model and handoff format. Use when setting up the desk, when a Bot is unsure who owns something, or when a request does not fit the normal trade lifecycle.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
2,061 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Task handling
- Roles and seats
- Shared computer and workspace
- Engagement levels
- Evidence standard
- Approval model
- Excluded on purpose
- Handoff format
- Message discipline on the floor
- When something does not fit
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore9,608 bytes
Read SKILL.md
# Desk operating model
The desk is a team of Bots inside one user's Grok Bot workspace. Each Bot has one job. This skill is the constitution every Bot follows; the trade-by-trade procedure is in `desk-trade-lifecycle`.
## Task handling
Use the user's request and prior context to carry authorized work through the current engagement level. Resolve routine details yourself; ask only for missing inputs that change the result, risk, or authority. Continue independent reads and preparation while waiting. A side question does not cancel the active task. Missing approval blocks a send, not the research or preparation needed to present an exact ticket.
User instructions govern workflow and style defaults, subject to system and tool controls and the financial boundaries below. When a skill blocks a path, name and link its exact file, quote the rule, and explain the missing input or authority. Do not invent an approval requirement for an ordinary read.
Delegate independent market and research work to the smallest useful set of available specialists, with a concrete deliverable and owner. Keep risk sign-off, approval, and execution in lifecycle order. Check returned evidence; agent agreement never replaces it. Lead requested reports with a plain conclusion, then the evidence that supports it, retaining required ticket and handoff fields.
## Roles and seats
View the complete source on GitHubdesk-post-trade-review
When your agent uses it
The Trade Reviewer's procedure for journaling desk activity and reviewing trades from the exchange record - process graded separately from outcome, execution costs measured, one repeatable finding per review, plus the weekly desk review. Use after any send, when a trade closes, on the weekly routine, or when the user asks "how did that go".
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
1,317 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Journal
- 2. Trade review
- 3. Weekly desk review
- 4. Incident review
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore5,072 bytes
Read SKILL.md
# Journal and post-trade review
The journal is the desk's memory; the review is how the desk learns. Both come from the exchange record first and chat second, and both keep process and outcome apart.
## 1. Journal
`/workspace/trading-desk/journal/YYYY-MM-DD.md`, one file per active day, appended in time order. Entry types:
```
14:02 UTC HG-20260816-01 opened ETH-PERP long idea (user); status evidence
14:12 UTC HG-20260816-01 risk PASS 0.4827 ETH, stop 2,900, 0.5% risk stressed (risk-limits v3)
14:29 UTC HG-20260816-01 approval "approve HG-20260816-01" (user)
14:31 UTC HG-20260816-01 sent buy 0.4827 @ 3,000 Gtc + sl 2,900 (normalTpsl); cloid 0x9f3e...; oid 1839201122, sl waitingForFill
16:05 UTC HG-20260816-01 fill 0.4827 @ 3,000.0 maker, fee $0.29View the complete source on GitHubdesk-risk-limits
When your agent uses it
How the Risk Manager writes the desk's risk limits with the user, sizes every proposed trade from live account state and Hyperliquid's real constraints, checks the book, and issues a PASS or REJECT with exact ticket fields. Use for setting up or changing limits, sizing any trade, and answering "how's the book".
What it loads into context
Frontmatter
103 tokensAlways available to the agent
SKILL.md
3,383 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. Desk ceilings
- 1. Write the limits file (setup, or on change)
- 2. Size a trade
- 3. Book check ("how's the book")
- 4. When the desk hits a limit
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore14,528 bytesSKILL.mdcore14,528 bytes
Read SKILL.md
# Risk limits and sizing
The user sets the desk's limits, in writing, once; the Risk Manager enforces them on every ticket using live data. Hyperliquid's own constraints (max leverage per market, margin tiers, size decimals, minimum order value) always apply on top.
## 0. Desk ceilings
These ceilings reject limits files that exceed the desk's bounds. They are maximum permitted settings, not recommended risk levels; the user chooses stricter limits below.
| Ceiling | Value |
| --- | --- |
| max risk per trade | 2% of equity |
| max total open risk | 6% of equity |
| max leverage on any market | 20x, and never above the exchange or tier max |
| daily loss stop | -10% of start-of-day equity |View the complete source on GitHubdesk-strategy-lab
When your agent uses it
How the Strategist works with the user to turn their own trading idea into explicit rules, backtest it honestly on Hyperliquid candle and funding history, and paper-trade it on testnet through the desk lifecycle. Method only - the desk ships no strategies and makes no return claims. Use when the user wants to design, test, compare or paper-trade an idea.
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
2,544 tokensWhen the skill is activated
Reference documents
2,185 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workspace
- 1. Rules first
- 2. Data
- 3. Backtest honestly
- 4. Sanity checks before believing anything
- 5. Paper trade on testnet
- 6. Abandon cleanly
- Never
Scripts executed separately
../../scripts/research_dataset.py../../scripts/research_dataset.py../../scripts/research_dataset.py
Files
../../docs/RESEARCH_DATASETS.mddoc8,381 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytesATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore10,686 bytesSKILL.mdcore10,686 bytesSKILL.mdcore10,686 bytesSKILL.mdcore10,686 bytesSKILL.mdcore10,686 bytesSKILL.mdcore10,686 bytes
Read SKILL.md
# Strategy lab
The lab exists so the user can find out whether their idea holds up before risking money on it. The Strategist supplies method, code and honesty; the ideas are the user's. Nothing here recommends what to trade.
## Workspace
```
/workspace/trading-desk/strategies/<name>/
RULES.md the rules, in words, agreed with the user before any code
data.md bundle paths, manifest hashes, requests, coverage and verification
backtest.py readable, single-file backtest
runs/YYYY-MM-DD-HHMM.md one file per run: parameters, results, caveats
POSTMORTEM.md if the idea is abandoned: why, in one paragraph
/workspace/trading-desk/data/<unique-name>/ immutable research bundle: manifest, sources and CSVsView the complete source on GitHubdesk-trade-lifecycle
When your agent uses it
The end-to-end procedure for one trade on the HyperGrok desk - from an idea to a reviewed, journaled result - with the ticket format, who owns each stage, and what "done" looks like. Use whenever the user wants to open, adjust or close a position, or whenever any Bot is about to touch the exchange write path.
What it loads into context
Frontmatter
109 tokensAlways available to the agent
SKILL.md
1,902 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. Open a proposal
- 1. Evidence
- 2. Risk sign-off
- 3. User approval
- 4. Execution
- 5. Reconciliation
- 6. Review
- Adjustments and exits are trades too
- Paper trading and testnet
- Definitions of done
- Common failure modes and the fix
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore7,888 bytes
Read SKILL.md
# Trade lifecycle
Every position change on the desk goes through the same seven stages, in order. Skipping one is a defect, not a shortcut. The Desk Lead keeps the lifecycle moving; the owner of each stage does the work.
```
idea -> evidence -> risk sign-off -> user approval -> execution -> reconciliation -> review
DL MA/RA RM user ET ET TR
```
## 0. Open a proposal
**Owner: Desk Lead.** As soon as a trade idea appears (from the user, the Strategist, or a routine), assign an id `HG-YYYYMMDD-NN` (NN increments per day) and create `/workspace/trading-desk/proposals/<id>.md`:
```markdownView the complete source on GitHubhypergrok-bootstrap
When your agent uses it
Build and verify a HyperGrok trading desk from the pinned public release. Use for first-run setup, repair, or a readiness check. Starts with a live zero-key Opening Bell, installs the seven role profiles and seventeen shared skills, prepares the Trading Floor, and returns an evidence receipt. Read-only by default; never requests a wallet or places an order.
What it loads into context
Frontmatter
109 tokensAlways available to the agent
SKILL.md
2,147 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Safety boundary
- 1. Install the reviewed release
- 2. Ring the Opening Bell
- 3. Prepare the desk
- 4. Build the team
- 5. Record the research desk
- 6. Verify and return the receipt
Scripts executed separately
../../hooks/exchange_write_gate.py../../scripts/check.sh../../scripts/check.sh../../scripts/check_grok_template.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_manifests.py../../scripts/check_npm_package.py../../scripts/check_public_template.py../../scripts/cli_journeys.py../../scripts/desk_doctor.py../../scripts/opening_bell.py../../scripts/release_bump.py../../scripts/research_dataset.py../../scripts/research_dataset.py../../scripts/research_dataset.py../../scripts/test_check_grok_template.py../../scripts/test_check_manifests.py../../scripts/test_check_manifests.py../../scripts/test_check_npm_package.py../../scripts/test_check_public_template.py../../scripts/test_desk_doctor.py../../scripts/test_exchange_write_gate.py../../scripts/test_exchange_write_gate.py../../scripts/test_exchange_write_gate.py../../scripts/test_exchange_write_gate.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_order_rounding.py../../scripts/test_release_bump.py../../scripts/test_release_bump.py../../scripts/test_release_bump.py../../scripts/test_release_bump.py../../scripts/test_stop_cost.py../../scripts/test_stop_cost.py
Files
../../hooks/exchange_write_gate.pyruns4,804 bytes../../scripts/check.shruns5,723 bytes../../scripts/check.shruns5,723 bytes../../scripts/check_grok_template.pyruns10,052 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_manifests.pyruns21,265 bytes../../scripts/check_npm_package.pyruns8,661 bytes../../scripts/check_public_template.pyruns2,853 bytes../../scripts/cli_journeys.pyruns5,604 bytes../../scripts/desk_doctor.pyruns12,815 bytes../../scripts/opening_bell.pyruns19,649 bytes../../scripts/release_bump.pyruns11,540 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/test_check_grok_template.pyruns7,703 bytes../../scripts/test_check_manifests.pyruns13,739 bytes../../scripts/test_check_manifests.pyruns13,739 bytes../../scripts/test_check_npm_package.pyruns7,164 bytes../../scripts/test_check_public_template.pyruns1,963 bytes../../scripts/test_desk_doctor.pyruns12,540 bytes../../scripts/test_exchange_write_gate.pyruns6,518 bytes../../scripts/test_exchange_write_gate.pyruns6,518 bytes../../scripts/test_exchange_write_gate.pyruns6,518 bytes../../scripts/test_exchange_write_gate.pyruns6,518 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_order_rounding.pyruns12,141 bytes../../scripts/test_release_bump.pyruns17,403 bytes../../scripts/test_release_bump.pyruns17,403 bytes../../scripts/test_release_bump.pyruns17,403 bytes../../scripts/test_release_bump.pyruns17,403 bytes../../scripts/test_stop_cost.pyruns13,936 bytes../../scripts/test_stop_cost.pyruns13,936 bytesATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytesSKILL.mdcore9,942 bytes
Read SKILL.md
# HyperGrok bootstrap
Turn a fresh shared **Desk Lead** into a working HyperGrok desk. Finish with evidence, not a claim that setup probably worked.
## Safety boundary
Bootstrap is research-only.
- Do not request, read or store an API wallet, private key, seed phrase or exchange secret.
- Do not call Hyperliquid `/exchange`, create an order, alter leverage, move funds or change approval settings.
- Public `POST /info` market reads are allowed. State mainnet, request type and UTC time.
- Local writes are limited to `/workspace/hypergrok` and `/workspace/trading-desk`.
- Creating the seven named Bots and the private Trading Floor group is in scope. Sharing anything publicly is not.
- If a capability is unavailable, return the exact manual card or step and continue independent supported work. Do not pretend it happened or mark dependent checks complete.View the complete source on GitHubhyperliquid-account
When your agent uses it
Read a Hyperliquid account from the desk computer - positions and margin, spot balances, open orders including trigger details, fills, funding paid, ledger updates, order status by oid or cloid, historical orders, portfolio history, fee tier and rate-limit budget - with curl and Python SDK examples. Read-only, needs only the account address. Use for sizing inputs, book checks, reconciliation and reviews.
What it loads into context
Frontmatter
127 tokensAlways available to the agent
SKILL.md
2,716 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Perp account state
- Spot balances
- Open orders
- Order status by oid or cloid
- Fills
- Funding paid and ledger
- Historical orders and TWAP fills
- Portfolio history, fees, rate limit, role
- Sub-accounts and vaults (read only on this desk)
- Book check recipe (Risk Manager)
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytesSKILL.mdcore10,417 bytes
Read SKILL.md
# Hyperliquid account reads
All reads are `POST /info`, unsigned. Use the **account** address (the main wallet the desk trades for), never the API wallet's address: queries on an agent address return empty results.
```bash
ADDR=$HYPERLIQUID_ACCOUNT_ADDRESS
BASE=$([ "$HYPERLIQUID_NETWORK" = mainnet ] && echo https://api.hyperliquid.xyz || echo https://api.hyperliquid-testnet.xyz)
hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d "$1"; }
```
```python
import os
from hyperliquid.info import Info
from hyperliquid.utils import constantsView the complete source on GitHubhyperliquid-advanced
When your agent uses it
Less common Hyperliquid actions and their rules - dead-man's switch (scheduleCancel), TWAP orders, spot orders, expiresAfter and nonces, API wallet approval from code, sub-account and vault addressing, HIP-3 dexs, and what the desk deliberately does not do (transfers, withdrawals, builder fees, staking). Write actions are Execution Trader only, on an approved ticket. Use when a ticket asks for one of these or when a user asks whether the desk can.
What it loads into context
Frontmatter
146 tokensAlways available to the agent
SKILL.md
2,844 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Dead-man's switch (`scheduleCancel`)
- TWAP
- Spot orders
- expiresAfter and nonces
- Approving an API wallet from code
- Sub-accounts and vaults
- HIP-3 builder dexs
- Rate limits and `reserveRequestWeight`
- Deliberately not on this desk
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore11,456 bytesSKILL.mdcore11,456 bytesSKILL.mdcore11,456 bytes
Read SKILL.md
# Hyperliquid advanced actions
Uses the same header as `hyperliquid-orders` (`info`, `exchange`, `ACCOUNT`, `round_px`, `round_sz`, `new_cloid`). Everything that signs is Execution Trader only, on a ticket.
## Dead-man's switch (`scheduleCancel`)
Tells the exchange to cancel **all** of the account's open orders at a future time unless you push the time out or clear it. Useful when the desk runs a watch that could die while resting orders sit on the book. The user asks for it explicitly; the report states the time.
```python
from hyperliquid.utils.signing import get_timestamp_ms
res = exchange.schedule_cancel(get_timestamp_ms() + 10 * 60 * 1000) # 10 minutes out; must be >= 5 s in the future
res = exchange.schedule_cancel(None) # clear it
```
View the complete source on GitHubhyperliquid-api-reference
When your agent uses it
Compact reference for the Hyperliquid API as the desk uses it - endpoints and envelopes, desk-used /info request types and /exchange actions with their signing schemes, order and status vocabularies, asset ids, tick and lot rules, rate limits, WebSocket subscription list, error strings, and where the official docs are. Use to look up an exact field, request type or limit before writing a call, and to map an error string to its cause.
What it loads into context
Frontmatter
157 tokensAlways available to the agent
SKILL.md
4,270 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Endpoints
- /info request types
- /exchange actions
- Signing (what the SDKs do for you)
- Asset ids and coin names
- Tick and lot
- Rate limits
- WebSocket
- Error strings
- Trading facts the desk quotes
- Official pages worth fetching
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore14,343 bytes
Read SKILL.md
# Hyperliquid API reference (desk edition)
Desk-used contracts rechecked against the official docs and SDKs on 2026-10-25 ([scope and evidence](../../docs/PROVENANCE.md#hyperliquid-compatibility-review---2026-10-25)). This is a scoped reference, not an exhaustive inventory of the exchange's growing API. When in doubt, fetch the page: append `.md` to any docs URL for raw markdown, for example `https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint.md`.
## Endpoints
| | Mainnet | Testnet |
| --- | --- | --- |
| REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` |
| WebSocket | `wss://api.hyperliquid.xyz/ws` | `wss://api.hyperliquid-testnet.xyz/ws` |
| HyperEVM RPC | `https://rpc.hyperliquid.xyz/evm` (chain 999) | `https://rpc.hyperliquid-testnet.xyz/evm` (chain 998) |
- `POST /info` body `{"type": "<request>", ...}`, unsigned; response is the bare payload. Unknown `type` or missing field: HTTP 422; invalid JSON: HTTP 400.
- `POST /exchange` body `{"action": {...}, "nonce": <ms>, "signature": {"r","s","v"}, "vaultAddress"?: "0x...", "expiresAfter"?: <ms>}`; response `{"status":"ok","response":{"type":"order"|"cancel"|"default"|..., "data"?: {...}}}` or `{"status":"err","response":"<string>"}`, both HTTP 200.View the complete source on GitHubhyperliquid-market-data
When your agent uses it
Read live Hyperliquid market data from the desk computer with curl or the Python SDK - mid, mark and oracle prices, order book depth, funding (current, predicted, historical), open interest, volume, candles, perp and spot metadata, margin tiers, and how to save datasets for the strategy lab. Read-only, no key. Use for any market brief, depth read, funding question or data pull.
What it loads into context
Frontmatter
133 tokensAlways available to the agent
SKILL.md
4,512 tokensWhen the skill is activated
Reference documents
2,185 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Read-only snapshot contract
- Prices
- Market metadata, funding, open interest, volume
- Order book and depth
- Candles
- Funding history and predictions
- Spot markets
- HIP-3 builder perps
- Brief format
- Rate limits
- Pitfalls
Scripts executed separately
../../scripts/check.sh../../scripts/check_grok_template.py../../scripts/desk_doctor.py../../scripts/opening_bell.py../../scripts/research_dataset.py../../scripts/research_dataset.py../../scripts/research_dataset.py
Files
../../docs/RESEARCH_DATASETS.mddoc8,381 bytes../../scripts/check.shruns5,723 bytes../../scripts/check_grok_template.pyruns10,052 bytes../../scripts/desk_doctor.pyruns12,815 bytes../../scripts/opening_bell.pyruns19,649 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytes../../scripts/research_dataset.pyruns22,441 bytesATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytesSKILL.mdcore16,634 bytes
Read SKILL.md
# Hyperliquid market data
All reads are `POST /info` with a JSON body; no key, no signing. Market data is usually read from **mainnet** even when the desk trades on testnet, because testnet prices and books are thin; say which network a figure came from. Every figure the desk reports carries source (request type), network and UTC time.
```bash
BASE=https://api.hyperliquid.xyz # or https://api.hyperliquid-testnet.xyz
hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d "$1"; }
```
Python header (SDK):
```python
from hyperliquid.info import Info
from hyperliquid.utils import constantsView the complete source on GitHubhyperliquid-orders
When your agent uses it
Place, cancel and modify Hyperliquid orders correctly from the desk computer - limit and IOC (market-style) orders, take-profit and stop-loss trigger orders with grouping, client order ids, reduce-only, batch actions, price and size rounding, and how to read every response status. Write path - Execution Trader only, on an approved ticket. Use for any order action and for reconciling by cloid.
What it loads into context
Frontmatter
129 tokensAlways available to the agent
SKILL.md
5,831 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Concepts you must get right
- Python (official SDK, `hyperliquid-python-sdk`)
- TypeScript (`@nktkas/hyperliquid`)
- Raw wire format (for reference and for reading responses)
- Error strings you will meet
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytesSKILL.mdcore21,641 bytes
Read SKILL.md
# Hyperliquid orders
Everything here ends in a signed request to `/exchange`. On this desk only the Execution Trader runs it, only on a ticket with a Risk PASS and the user's approval by id, and only once per approval (`desk-execution-protocol`). Reads used for reconciliation are in `hyperliquid-account`.
## Concepts you must get right
- **Asset index, not symbol.** Perps use the index of the coin in `meta.universe` (BTC is 0 on mainnet, but never hardcode: read `meta`). Spot uses `10000 + index` in `spotMeta.universe`. The Python SDK's `Exchange` accepts the coin name and resolves the index; the TS SDK wants the number.
- **Price rounding.** At most 5 significant figures, and at most `6 - szDecimals` decimal places for perps (`8 - szDecimals` for spot). Integer prices are always valid. Wrong precision is rejected by the exchange.
- **Size rounding.** Round **down** to the market's `szDecimals`. Never round up.
- **Minimum order value** is 10 USD notional.
- **Time in force:** `Gtc` rests until filled or cancelled; `Ioc` fills what it can immediately and cancels the rest; `Alo` (add liquidity only) rests or is rejected if it would take.
- **There is no market order.** A market-style order is an `Ioc` limit at a price bounded by your slippage tolerance (buy: above mid; sell: below mid).
- **reduceOnly** orders can only reduce an existing position; use it for exits, stops and take-profits.
- **cloid** (client order id) is `0x` + 32 hex characters (16 bytes). Unique per order. It lets you query and cancel an order even if the response was lost.View the complete source on GitHubhyperliquid-positions
When your agent uses it
Manage Hyperliquid perp positions and margin from the desk computer - read positions and margin, set leverage and cross/isolated mode, add isolated margin, understand margin tiers and liquidation price, close a position with a reduce-only IOC, and clean up orphaned orders. Write actions are Execution Trader only, on an approved ticket. Use for leverage changes, closes, protection checks and margin questions.
What it loads into context
Frontmatter
126 tokensAlways available to the agent
SKILL.md
2,486 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Concepts
- Read positions and margin
- Set leverage and margin mode (write)
- Close a position (write)
- Protection check (read)
- Liquidation distance
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytesSKILL.mdcore9,996 bytes
Read SKILL.md
# Hyperliquid positions and margin
Reads here are for everyone (Risk Manager first); the write actions (`updateLeverage`, `updateIsolatedMargin`, closes) are Execution Trader only, on a ticket. Order mechanics are in `hyperliquid-orders`.
## Concepts
- **Cross margin** (default): all cross positions share the account's margin, and unrealised PnL counts as margin; liquidation is account-wide. **Isolated margin:** the position has its own margin; only that margin is at risk, and you can add to or remove from it (some markets are `strictIsolated` and refuse removal; HIP-3 markets may be `noCross`).
- **Leverage** is set per market and per mode with `updateLeverage`; it caps position size against margin, it is not "how much you win". Max leverage is per market and **tiered by notional** (see margin tiers).
- **Margin tiers:** each perp has a margin table (`meta.marginTables`, matched to the asset via `marginTableId`) listing notional thresholds and the max leverage allowed above each. Bigger positions get less leverage.
- **Maintenance margin** is half of the initial margin at the max leverage of the applicable tier (so between 1.25% for a 40x market and 16.7% for a 3x market); liquidation happens when account (cross) or position (isolated) equity falls below maintenance margin, on **mark** price. Large positions are liquidated partially first; the cross liquidation price does not depend on your leverage setting.
- **Liquidation price** is reported by the exchange per position (`liquidationPx`); use that, do not recompute.
- **Funding** is exchanged every hour between longs and shorts at the market's funding rate; it changes equity while a position is open.
- **Closing** is an order in the opposite direction with `reduceOnly`. Full close at market: reduce-only IOC at a slippage-bounded price for the live position size.
View the complete source on GitHubhyperliquid-setup
When your agent uses it
Prepare the desk computer to work with Hyperliquid - install the SDKs, pick testnet or mainnet, verify connectivity, and (only when the user asks) provision a trade-only API wallet through the secure secret store and verify it is approved. Use during desk setup, when moving between research, testnet and mainnet levels, when a key is rotated, or when any Hyperliquid call fails with an environment problem.
What it loads into context
Frontmatter
134 tokensAlways available to the agent
SKILL.md
2,689 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Networks
- 2. Install
- 3. Connectivity check (no key)
- 4. API wallet (only when the user asks to trade)
- 5. Readiness check (before the first send)
- 6. Rotation and revocation
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytesSKILL.mdcore10,666 bytes
Read SKILL.md
# Hyperliquid setup
Sections 1-3 are read-only and safe to run at any time. Section 4 provisions a key and is done only when the user asks to move to a testnet or mainnet desk. Section 5 is the readiness check the Execution Trader runs before its first send.
## 1. Networks
| | Mainnet | Testnet |
| --- | --- | --- |
| REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` |
| WebSocket | `wss://api.hyperliquid.xyz/ws` | `wss://api.hyperliquid-testnet.xyz/ws` |
| App | `https://app.hyperliquid.xyz` | `https://app.hyperliquid-testnet.xyz` |
| Faucet | - | `https://app.hyperliquid-testnet.xyz/drip` |
Reads (`/info`) need no key. Writes (`/exchange`) need a signing key and are signed differently per network, so a key and its network go together. The desk records the network in `/workspace/trading-desk/desk.md` and in the environment.View the complete source on GitHubhyperliquid-websocket
When your agent uses it
Subscribe to live Hyperliquid data over WebSocket from the desk computer - mids, order book, trades, candles, best bid/offer, and per-account fills, order updates and events - with raw JSON, Python SDK and TypeScript examples, plus how to run a supervised watch that logs to a file and alerts. Read-only. Use for monitoring, fill notifications and any watch that polling would make expensive.
What it loads into context
Frontmatter
130 tokensAlways available to the agent
SKILL.md
2,752 tokensWhen the skill is activated
Reference documents
434 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Protocol
- Python (official SDK)
- TypeScript (`@nktkas/hyperliquid`)
- Recover after a gap or restart
- Raw (websocat or any client)
- Watch pattern
- Pitfalls
Files
ATTRIBUTION.mddoc2,205 bytesLICENSEasset1,069 bytesSKILL.mdcore10,866 bytesSKILL.mdcore10,866 bytesSKILL.mdcore10,866 bytesSKILL.mdcore10,866 bytesSKILL.mdcore10,866 bytes
Read SKILL.md
# Hyperliquid WebSocket
Read-only, no key. Endpoints: `wss://api.hyperliquid.xyz/ws` (mainnet), `wss://api.hyperliquid-testnet.xyz/ws` (testnet). Prefer WebSocket over polling for anything continuous: fills, order updates, book and price watches.
## Protocol
Subscribe: `{"method": "subscribe", "subscription": {...}}`. Unsubscribe with `"method": "unsubscribe"`. The server acknowledges with `{"channel": "subscriptionResponse", ...}` then streams `{"channel": "<type>", "data": ...}`. Send `{"method": "ping"}` periodically (the SDKs do it for you; the server expects activity within about a minute) and expect `{"channel": "pong"}`.
Subscription types the desk uses:
| Type | Subscription JSON | Data |
| --- | --- | --- |
| Mids for all markets | `{"type":"allMids"}` (optional `"dex"`) | `{"mids": {"BTC": "97123.5", ...}}` |
| Order book | `{"type":"l2Book","coin":"ETH"}` (optional `nSigFigs`, `mantissa`, `fast: true` for 5 levels) | `{"coin","time","levels":[bids,asks]}`, up to 20 levels a side, pushed on each block at least 0.5 s after the last push |View the complete source on GitHubSkills included
- desk-execution-protocol
- desk-incident-response
- desk-monitoring
- desk-operating-model
- desk-post-trade-review
- desk-risk-limits
- desk-strategy-lab
- desk-trade-lifecycle
- hypergrok-bootstrap
- hyperliquid-account
- hyperliquid-advanced
- hyperliquid-api-reference
- hyperliquid-market-data
- hyperliquid-orders
- hyperliquid-positions
- hyperliquid-setup
- hyperliquid-websocket
Repository facts
- License
- MIT
- Created
- Aug 16, 2026
- Last pushed
- Nov 4, 2026
- Forks
- 83
- Open issues
- 1
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 104 notes
hooks/exchange-write-gate.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedhooks/exchange-write-gate.json:1Plugin-wide analysis incomplete; see repository notesskills/desk-monitoring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedhooks/exchange-write-gate.json:1Plugin-wide analysis incomplete; see repository noteshooks/exchange-write-gate.json:1Plugin-wide analysis incomplete; see repository notesskills/desk-risk-limits/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/research_dataset.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/research_dataset.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/desk-strategy-lab/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/desk-strategy-lab/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/desk-strategy-lab/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/desk-strategy-lab/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/desk-strategy-lab/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedhooks/exchange-write-gate.json:1Plugin-wide analysis incomplete; see repository notesscripts/check.sh:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check_manifests.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check_manifests.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check_manifests.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check_manifests.py:1Analysis incomplete: Referenced executable target unavailable; not analyzedscripts/check_manifests.py:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 5 dangerous shell commandsin 2 files: scripts/test_order_rounding.py:21 desk-trade-lifecycle/SKILL.md:17
- 273 network referencesin 42 files: scripts/research_dataset.py:5 scripts/opening_bell.py:21 scripts/test_check_manifests.py:116 and 39 more
- No hidden or obfuscated text
- No instruction overrides
- 58 executable scriptsin 20 files: scripts/check_manifests.py:1 scripts/research_dataset.py:1 scripts/test_order_rounding.py:1 and 17 more
- 26 references to secretsin 9 files: scripts/test_check_npm_package.py:104 hyperliquid-setup/SKILL.md:90 hyperliquid-orders/SKILL.md:44 and 6 more
- No requests to vote in Hot
Show all 362 signals by file
.claude-plugin/marketplace.json
- Network accessline 18
"name": "Galleon Labs" }, "homepage": "https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 19
}, "homepage": "https://github.com/galleonlabs/hypergrok-trading-desk", "repository": "https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 20
"homepage": "https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 21
"repository": "https://github.com/galleonlabs/hypergrok-trading-desk",
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Galleon Labs", "url": "https://galleonlabs.io" - Network accessline 6
"name": "Galleon Labs", "url": "https://galleonlabs.io" }, - Network accessline 7
"url": "https://galleonlabs.io" - Network accessline 8
}, "homepage": "https://github.com/galleonlabs/hypergrok-trading-desk", "repository": "https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 9
"homepage": "https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 10
"repository": "https://github.com/galleonlabs/hypergrok-trading-desk",
docs/RESEARCH_DATASETS.md
- Network accessline 77
- [Hyperliquid info endpoint](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint): candle availability, field identity, supported intervals and timestamp-overlap pagination. - Network accessline 77
- [Hyperliquid info endpoint](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint): candle availability, field identity, supported intervals and timestamp-overlap pagination. - Network accessline 78
- [Hyperliquid perpetuals](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals): DEX metadata, delisting flags and funding history records. - Network accessline 78
- [Hyperliquid perpetuals](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals): DEX metadata, delisting flags and funding history records. - Network accessline 79
- [Hyperliquid funding](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/funding): hourly payment and oracle-based cash flow. - Network accessline 79
- [Hyperliquid funding](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/funding): hourly payment and oracle-based cash flow. - Network accessline 80
- [Hyperliquid rate limits](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/rate-limits-and-user-limits): weighted public-read budget. Local pacing is a client bound, not a guarantee against HTTP 429 on a shared IP. - Network accessline 80
- [Hyperliquid rate limits](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/rate-limits-and-user-limits): weighted public-read budget. Local pacing is a client bound, not a guarantee against HTTP 429 on a shared IP.
hooks/exchange_write_gate.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/check.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env bash - Network accessline 88
text = open(path, encoding="utf-8").read() for target in link_re.findall(text): if target.startswith(("http://", "https://", "mailto:", "#")): continue - Network accessline 88
text = open(path, encoding="utf-8").read() for target in link_re.findall(text): if target.startswith(("http://", "https://", "mailto:", "#")): continue - Network accessline 89
for target in link_re.findall(text): if target.startswith(("http://", "https://", "mailto:", "#")): continue target = target.split("#")[0] - Network accessline 89
for target in link_re.findall(text): if target.startswith(("http://", "https://", "mailto:", "#")): continue target = target.split("#")[0] - Network accessline 90
if target.startswith(("http://", "https://", "mailto:", "#")): continue - Network accessline 90
if target.startswith(("http://", "https://", "mailto:", "#")): continue
scripts/check_grok_template.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 12
REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 12
REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 14
PUBLIC_URL_RE = re.compile(r"https://x\.ai/bot/[A-Za-z0-9_-]+$") - Network accessline 14
PUBLIC_URL_RE = re.compile(r"https://x\.ai/bot/[A-Za-z0-9_-]+$") - Network accessline 211
elif status == "published": if not isinstance(public_url, str) or not PUBLIC_URL_RE.fullmatch(public_url): errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL") - Network accessline 211
elif status == "published": if not isinstance(public_url, str) or not PUBLIC_URL_RE.fullmatch(public_url): errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL") - Network accessline 212
if not isinstance(public_url, str) or not PUBLIC_URL_RE.fullmatch(public_url): errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL") else: - Network accessline 212
if not isinstance(public_url, str) or not PUBLIC_URL_RE.fullmatch(public_url): errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL") else: - Network accessline 213
errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL") - Network accessline 213
errors.append(f"{TEMPLATE}: published template needs an https://x.ai/bot/<id> URL")
scripts/check_manifests.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 17
CANONICAL_NAME = "hypergrok" REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 18
REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 58
SKILLS_SH_RE = re.compile( r"https://(?:www\.)?skills\.sh/([A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+(?:/[A-Za-z0-9_.-]+)?)" - Network accessline 59
r"https://(?:www\.)?skills\.sh/([A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+(?:/[A-Za-z0-9_.-]+)?)" - Network accessline 285
if target == CANONICAL_NAME: continue # marketplace install uses the validated index ref expected_target = REPOSITORY.removeprefix("https://github.com/") + "@" + expected - Network accessline 286
continue # marketplace install uses the validated index ref expected_target = REPOSITORY.removeprefix("https://github.com/") + "@" + expected if target != expected_target: - Network accessline 287
expected_target = REPOSITORY.removeprefix("https://github.com/") + "@" + expected - Network accessline 315
if not isinstance(marketplace, dict): return shorthand = REPOSITORY.removeprefix("https://github.com/") - Network accessline 316
return shorthand = REPOSITORY.removeprefix("https://github.com/") market_name = marketplace.get("name") - Network accessline 317
shorthand = REPOSITORY.removeprefix("https://github.com/") - Network accessline 363
shorthand = REPOSITORY.removeprefix("https://github.com/")
scripts/check_npm_package.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 17
NAME = "hypergrok-trading-desk" REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 18
REPOSITORY = "https://github.com/galleonlabs/hypergrok-trading-desk" - Network accessline 99
if plugin.get("repository") != REPOSITORY: errors.append("plugin.json: repository must match the npm package repository") if package.get("publishConfig") != {"access": "public", "registry": "https://registry.npmjs.org/"}: - Network accessline 100
errors.append("plugin.json: repository must match the npm package repository") if package.get("publishConfig") != {"access": "public", "registry": "https://registry.npmjs.org/"}: errors.append("package.json: publishConfig must t - Network accessline 101
if package.get("publishConfig") != {"access": "public", "registry": "https://registry.npmjs.org/"}:
scripts/check_public_template.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 25
if html_path: return html_path.read_text(encoding="utf-8") request = urllib.request.Request( - Network accessline 26
return html_path.read_text(encoding="utf-8") request = urllib.request.Request( url, - Network accessline 27
request = urllib.request.Request( - Network accessline 29
headers={"User-Agent": "hypergrok-public-template-check/1"}, ) with urllib.request.urlopen(request, timeout=20) as response: - Network accessline 30
) with urllib.request.urlopen(request, timeout=20) as response: return response.read().decode("utf-8", errors="replace") - Network accessline 31
with urllib.request.urlopen(request, timeout=20) as response: - Network accessline 42
def check(page: str, manifest: dict[str, object]) -> None: share_url = str(manifest["publicShareUrl"]) match = re.fullmatch(r"https://x\.ai/bot/([A-Za-z0-9_-]+)", share_url) - Network accessline 43
share_url = str(manifest["publicShareUrl"]) match = re.fullmatch(r"https://x\.ai/bot/([A-Za-z0-9_-]+)", share_url) if not match: - Network accessline 44
match = re.fullmatch(r"https://x\.ai/bot/([A-Za-z0-9_-]+)", share_url)
scripts/cli_journeys.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 31
def do_POST(self): payload = json.loads(self.rfile.read(int(self.headers["Content-Length"]))) requests.append((self.path, payload)) - Network accessline 32
payload = json.loads(self.rfile.read(int(self.headers["Content-Length"]))) requests.append((self.path, payload)) responses = {"meta": META, "metaAndAssetCtxs": [META, [CONTEXT]], "l2Book": BOOK, "candleSnapshot": CANDLES} - Network accessline 33
requests.append((self.path, payload)) - Access to secretsline 49
[Credential-related source omitted] - Network accessline 57
thread = threading.Thread(target=server.serve_forever, daemon=True) thread.start() base = f"http://127.0.0.1:{server.server_port}" - Network accessline 58
thread.start() base = f"http://127.0.0.1:{server.server_port}" checked = 0 - Network accessline 59
base = f"http://127.0.0.1:{server.server_port}"
scripts/desk_doctor.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 199
def check_public_api(base_url: str, timeout: float) -> Check: request = urllib.request.Request( - Network accessline 199
def check_public_api(base_url: str, timeout: float) -> Check: request = urllib.request.Request( - Network accessline 200
request = urllib.request.Request( - Network accessline 200
request = urllib.request.Request( - Network accessline 205
) try: with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 205
) try: with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 206
try: with urllib.request.urlopen(request, timeout=timeout) as response: payload = json.load(response) - Network accessline 206
try: with urllib.request.urlopen(request, timeout=timeout) as response: payload = json.load(response) - Network accessline 207
with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 207
with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 209
if not isinstance(payload, dict) or not payload.get("ETH"): return Check("FAIL", "public API", "allMids response did not contain ETH") network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if ba - Network accessline 209
if not isinstance(payload, dict) or not payload.get("ETH"): return Check("FAIL", "public API", "allMids response did not contain ETH") network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if ba - Network accessline 210
return Check("FAIL", "public API", "allMids response did not contain ETH") network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" re - Network accessline 210
return Check("FAIL", "public API", "allMids response did not contain ETH") network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" re - Network accessline 211
network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" return Check("PASS", "public API", f"{network} /info allMids answered without a key") - Network accessline 211
network = "mainnet" if base_url == "https://api.hyperliquid.xyz" else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" return Check("PASS", "public API", f"{network} /info allMids answered without a key")
scripts/opening_bell.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
DEFAULT_BASE_URL = "https://api.hyperliquid.xyz" - Network accessline 21
DEFAULT_BASE_URL = "https://api.hyperliquid.xyz" - Network accessline 36
def post_info(base_url: str, payload: dict, timeout: float = 15.0, user_agent: str = USER_AGENT): body = json.dumps(payload).encode("utf-8") request = urllib.request.Request( - Network accessline 36
def post_info(base_url: str, payload: dict, timeout: float = 15.0, user_agent: str = USER_AGENT): body = json.dumps(payload).encode("utf-8") request = urllib.request.Request( - Network accessline 37
body = json.dumps(payload).encode("utf-8") request = urllib.request.Request( f"{base_url.rstrip('/')}/info", - Network accessline 37
body = json.dumps(payload).encode("utf-8") request = urllib.request.Request( f"{base_url.rstrip('/')}/info", - Network accessline 38
request = urllib.request.Request( - Network accessline 38
request = urllib.request.Request( - Network accessline 42
method="POST", ) with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 42
method="POST", ) with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 43
) with urllib.request.urlopen(request, timeout=timeout) as response: return json.load(response) - Network accessline 43
) with urllib.request.urlopen(request, timeout=timeout) as response: return json.load(response) - Network accessline 44
with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 44
with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 326
else: pages = fetch_books(coin, base_url, timeout) network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" - Network accessline 326
else: pages = fetch_books(coin, base_url, timeout) network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" - Network accessline 327
pages = fetch_books(coin, base_url, timeout) network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" snapshot = build_snapshot(meta, pages, coin, netw - Network accessline 327
pages = fetch_books(coin, base_url, timeout) network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" snapshot = build_snapshot(meta, pages, coin, netw - Network accessline 328
network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom" - Network accessline 328
network = "mainnet" if base_url == DEFAULT_BASE_URL else "testnet" if base_url == "https://api.hyperliquid-testnet.xyz" else "custom"
scripts/release_bump.py
scripts/research_dataset.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 5
import csv import hashlib from http.client import HTTPException - Network accessline 5
import csv import hashlib from http.client import HTTPException - Network accessline 5
import csv import hashlib from http.client import HTTPException - Network accessline 6
import hashlib from http.client import HTTPException import io - Network accessline 6
import hashlib from http.client import HTTPException import io - Network accessline 6
import hashlib from http.client import HTTPException import io - Network accessline 7
from http.client import HTTPException - Network accessline 7
from http.client import HTTPException - Network accessline 7
from http.client import HTTPException - Network accessline 132
record = {"request": payload} self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 132
record = {"request": payload} self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 132
record = {"request": payload} self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 133
self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), headers={"Content-Type": "application/json", "User-Agent": "hypergrok- - Network accessline 133
self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), headers={"Content-Type": "application/json", "User-Agent": "hypergrok- - Network accessline 133
self.records.append(record) request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), headers={"Content-Type": "application/json", "User-Agent": "hypergrok- - Network accessline 134
request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 134
request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 134
request = urllib.request.Request(self.base_url + "/info", data=json.dumps(payload).encode(), - Network accessline 135
headers={"Content-Type": "application/json", "User-Agent": "hypergrok-research-dataset/1"}, method="POST") try: with urllib.request.urlopen(request, timeout=self.timeout) as response: - Network accessline 135
headers={"Content-Type": "application/json", "User-Agent": "hypergrok-research-dataset/1"}, method="POST") try: with urllib.request.urlopen(request, timeout=self.timeout) as response: - Network accessline 135
headers={"Content-Type": "application/json", "User-Agent": "hypergrok-research-dataset/1"}, method="POST") try: with urllib.request.urlopen(request, timeout=self.timeout) as response: - Network accessline 136
try: with urllib.request.urlopen(request, timeout=self.timeout) as response: raw = response.read(MAX_RESPONSE_BYTES + 1) - Network accessline 136
try: with urllib.request.urlopen(request, timeout=self.timeout) as response: raw = response.read(MAX_RESPONSE_BYTES + 1) - Network accessline 136
try: with urllib.request.urlopen(request, timeout=self.timeout) as response: raw = response.read(MAX_RESPONSE_BYTES + 1) - Network accessline 137
with urllib.request.urlopen(request, timeout=self.timeout) as response: - Network accessline 137
with urllib.request.urlopen(request, timeout=self.timeout) as response: - Network accessline 137
with urllib.request.urlopen(request, timeout=self.timeout) as response:
scripts/test_check_grok_template.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 58
def invalid_public_url(root): edit(root, lambda data: data.update(status="published", publicShareUrl="https://example.com/bot")) - Network accessline 59
edit(root, lambda data: data.update(status="published", publicShareUrl="https://example.com/bot")) - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 170
[Credential-related source omitted]
scripts/test_check_manifests.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Network accessline 116
root, "README.md", "https://www.skills.sh/galleonlabs/hypergrok-trading-desk)", - Network accessline 117
"README.md", "https://www.skills.sh/galleonlabs/hypergrok-trading-desk)", "https://www.skills.sh/galleonlabs/hypergrok-trading-desk/hypergrok)", - Network accessline 118
"https://www.skills.sh/galleonlabs/hypergrok-trading-desk)", - Network accessline 119
"https://www.skills.sh/galleonlabs/hypergrok-trading-desk/hypergrok)", - Network accessline 189
edit(root, ".grok-plugin/marketplace.json", lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git", - Network accessline 190
lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git", "ref": "v0.9.0"})) - Network accessline 191
"source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git", - Network accessline 197
edit(root, ".grok-plugin/marketplace.json", lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git"})) - Network accessline 198
lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git"})) return ".grok-plugin/marketplace.json", "ref" - Network accessline 199
"source": "url", "url": "https://github.com/galleonlabs/hypergrok-trading-desk.git"})) - Network accessline 204
edit(root, ".grok-plugin/marketplace.json", lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/other.git", - Network accessline 205
lambda d: d["plugins"][0].update(source={ "source": "url", "url": "https://github.com/galleonlabs/other.git", "ref": current_pin(root)})) - Network accessline 206
"source": "url", "url": "https://github.com/galleonlabs/other.git", - Network accessline 240
def gemini_documented_wrong_repository(root): replace(root, "docs/hyperliquid-gemini-cli.md", "gemini extensions install https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 241
replace(root, "docs/hyperliquid-gemini-cli.md", "gemini extensions install https://github.com/galleonlabs/hypergrok-trading-desk", "gemini extensions install https://github.com/galleonlabs/hypergrok") - Network accessline 242
"gemini extensions install https://github.com/galleonlabs/hypergrok-trading-desk", - Network accessline 243
"gemini extensions install https://github.com/galleonlabs/hypergrok") - Network accessline 248
with open(os.path.join(root, "docs", "FAQ.md"), "a", encoding="utf-8") as fh: fh.write("\ngemini extensions install " "https://github.com/galleonlabs/hypergrok-trading-desk --ref main\n") - Network accessline 249
fh.write("\ngemini extensions install " "https://github.com/galleonlabs/hypergrok-trading-desk --ref main\n") return "docs/FAQ.md", "--ref main" - Network accessline 250
"https://github.com/galleonlabs/hypergrok-trading-desk --ref main\n")
scripts/test_check_npm_package.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 63
def test_repository_drift(self): self.edit(lambda data: data["repository"].update(url="git+https://github.com/example/other.git")) - Network accessline 64
self.edit(lambda data: data["repository"].update(url="git+https://github.com/example/other.git")) - Network accessline 67
def test_registry_drift(self): self.edit(lambda data: data["publishConfig"].update(registry="https://example.com")) - Network accessline 68
self.edit(lambda data: data["publishConfig"].update(registry="https://example.com")) - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 154
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted]
scripts/test_check_public_template.py
scripts/test_desk_doctor.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/test_exchange_write_gate.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Network accessline 60
def test_raw_exchange_posts_ask(self): for command in ( "curl -s -X POST https://api.hyperliquid.xyz/exchange -d @signed.json", - Network accessline 61
for command in ( "curl -s -X POST https://api.hyperliquid.xyz/exchange -d @signed.json", "curl -s -X POST https://api.hyperliquid-testnet.xyz/exchange -d @signed.json", - Network accessline 62
"curl -s -X POST https://api.hyperliquid.xyz/exchange -d @signed.json", - Network accessline 63
"curl -s -X POST https://api.hyperliquid-testnet.xyz/exchange -d @signed.json", - Network accessline 64
'python3 -c \'requests.post(f"{BASE}/exchange", json=payload)\'', - Network accessline 65
"node -e 'fetch(BASE + \"/exchange\", opts)'", - Network accessline 86
"python3 scripts/research_dataset.py --verify data/eth-1h --json", "bash scripts/check.sh", 'curl -s https://api.hyperliquid.xyz/info -H "Content-Type: application/json" -d \'{"type":"allMids"}\'', - Network accessline 87
"bash scripts/check.sh", 'curl -s https://api.hyperliquid.xyz/info -H "Content-Type: application/json" -d \'{"type":"allMids"}\'', "python3 -c 'info.user_state(ADDR); info.open_orders(ADDR)'", - Network accessline 88
'curl -s https://api.hyperliquid.xyz/info -H "Content-Type: application/json" -d \'{"type":"allMids"}\'',
scripts/test_order_rounding.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Dangerous shell operationline 21
exec(compile(helpers, '<published order helpers>', 'exec'), namespace) - Dangerous shell operationline 31
exec(compile(spot_helpers, '<published spot helpers>', 'exec'), spot_namespace) - Dangerous shell operationline 49
exec(compile(snippet, '<published close>', 'exec'), scope) - Dangerous shell operationline 92
exec(code, scope)
scripts/test_release_bump.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Executable scriptline 1
Executable file; content unavailable - Access to secretsline 243
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted]
scripts/test_stop_cost.py
- Executable scriptline 1
#!/usr/bin/env python3 - Executable scriptline 1
Executable file; content unavailable - Network accessline 206
[*WORKED, "--coin", "xyz:TSLA"], [*WORKED, "--coin", "bad coin"], ["--entry", "1", "--stop", "0.5", "--equity", "100", "--risk-pct", "1", "--slip-bps", "5000"], [*WORKED, "--testnet", "--base-url", "https:/ - Network accessline 207
["--entry", "1", "--stop", "0.5", "--equity", "100", "--risk-pct", "1", "--slip-bps", "5000"], [*WORKED, "--testnet", "--base-url", "https://example.com"], [*WORKED, "--unknown"]] for case in cases: - Network accessline 208
[*WORKED, "--testnet", "--base-url", "https://example.com"], [*WORKED, "--unknown"]]
skills/desk-execution-protocol/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-incident-response/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-incident-response/SKILL.md
- Network accessline 63
- `/info` failing or slow: mark the desk **blind**; no new tickets; watches log the outage; check `https://api.hyperliquid.xyz/info` with a tiny `allMids` call every minute; report when back.
skills/desk-monitoring/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-operating-model/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-post-trade-review/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-risk-limits/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-strategy-lab/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-trade-lifecycle/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/desk-trade-lifecycle/SKILL.md
- Dangerous shell operationline 17
DL MA/RA RM user ET ET TR
skills/hypergrok-bootstrap/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hypergrok-bootstrap/SKILL.md
skills/hyperliquid-account/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-account/SKILL.md
- Network accessline 1
--- name: hyperliquid-account description: Read a Hyperliquid account from the desk computer - positions and margin, spot balances, open orders including trigger details, fills, funding paid, ledger updates, order status by oid or cloid, hi - Network accessline 2
name: hyperliquid-account description: Read a Hyperliquid account from the desk computer - positions and margin, spot balances, open orders including trigger details, fills, funding paid, ledger updates, order status by oid or cloid, histor - Network accessline 3
description: Read a Hyperliquid account from the desk computer - positions and margin, spot balances, open orders including trigger details, fills, funding paid, ledger updates, order status by oid or cloid, historical orders, portfolio his - Network accessline 17
ADDR=$HYPERLIQUID_ACCOUNT_ADDRESS BASE=$([ "$HYPERLIQUID_NETWORK" = mainnet ] && echo https://api.hyperliquid.xyz || echo https://api.hyperliquid-testnet.xyz) hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d - Network accessline 18
BASE=$([ "$HYPERLIQUID_NETWORK" = mainnet ] && echo https://api.hyperliquid.xyz || echo https://api.hyperliquid-testnet.xyz) - Network accessline 19
hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d "$1"; } - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted]
skills/hyperliquid-advanced/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-api-reference/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-api-reference/SKILL.md
- Network accessline 7
author: Galleon Labs category: hyperliquid docs: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api - Network accessline 8
category: hyperliquid docs: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api --- - Network accessline 9
docs: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api - Network accessline 14
Desk-used contracts rechecked against the official docs and SDKs on 2026-10-25 ([scope and evidence](../../docs/PROVENANCE.md#hyperliquid-compatibility-review---2026-10-25)). This is a scoped reference, not an exhaustive inventory of the ex - Network accessline 18
| | Mainnet | Testnet | | --- | --- | --- | | REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | - Network accessline 19
| --- | --- | --- | | REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | | WebSocket | `wss://api.hyperliquid.xyz/ws` | `wss://api.hyperliquid-testnet.xyz/ws` | - Network accessline 20
| REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | - Network accessline 22
| HyperEVM RPC | `https://rpc.hyperliquid.xyz/evm` (chain 999) | `https://rpc.hyperliquid-testnet.xyz/evm` (chain 998) | - Network accessline 142
`for-developers/api/info-endpoint`, `.../info-endpoint/perpetuals`, `.../info-endpoint/spot`, `.../exchange-endpoint`, `.../signing`, `.../nonces-and-api-wallets`, `.../rate-limits-and-user-limits`, `.../tick-and-lot-size`, `.../asset-ids`,
skills/hyperliquid-market-data/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-market-data/SKILL.md
- Network accessline 1
--- name: hyperliquid-market-data description: Read live Hyperliquid market data from the desk computer with curl or the Python SDK - mid, mark and oracle prices, order book depth, funding (current, predicted, historical), open interest, vo - Network accessline 2
name: hyperliquid-market-data description: Read live Hyperliquid market data from the desk computer with curl or the Python SDK - mid, mark and oracle prices, order book depth, funding (current, predicted, historical), open interest, volume - Network accessline 3
description: Read live Hyperliquid market data from the desk computer with curl or the Python SDK - mid, mark and oracle prices, order book depth, funding (current, predicted, historical), open interest, volume, candles, perp and spot metad - Network accessline 17
BASE=https://api.hyperliquid.xyz # or https://api.hyperliquid-testnet.xyz hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d "$1"; } - Network accessline 18
hl() { curl -sS -m 15 -X POST "$BASE/info" -H 'Content-Type: application/json' -d "$1"; }
skills/hyperliquid-orders/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-orders/SKILL.md
skills/hyperliquid-positions/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-positions/SKILL.md
- Network accessline 29
ADDR=$HYPERLIQUID_ACCOUNT_ADDRESS BASE=$([ "$HYPERLIQUID_NETWORK" = mainnet ] && echo https://api.hyperliquid.xyz || echo https://api.hyperliquid-testnet.xyz) curl -sS -X POST $BASE/info -H 'Content-Type: application/json' -d "{\"type\":\"c - Network accessline 30
BASE=$([ "$HYPERLIQUID_NETWORK" = mainnet ] && echo https://api.hyperliquid.xyz || echo https://api.hyperliquid-testnet.xyz) curl -sS -X POST $BASE/info -H 'Content-Type: application/json' -d "{\"type\":\"clearinghouseState\",\"user\":\"$AD - Network accessline 31
curl -sS -X POST $BASE/info -H 'Content-Type: application/json' -d "{\"type\":\"clearinghouseState\",\"user\":\"$ADDR\"}" | jq '{ - Network accessline 43
curl -sS -X POST $BASE/info -H 'Content-Type: application/json' -d '{"type":"meta"}' \ - Network accessline 109
curl -sS -X POST $BASE/info -H 'Content-Type: application/json' -d "{\"type\":\"frontendOpenOrders\",\"user\":\"$ADDR\"}" \
skills/hyperliquid-setup/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
skills/hyperliquid-setup/SKILL.md
- Network accessline 18
| | Mainnet | Testnet | | --- | --- | --- | | REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | - Network accessline 19
| --- | --- | --- | | REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | | WebSocket | `wss://api.hyperliquid.xyz/ws` | `wss://api.hyperliquid-testnet.xyz/ws` | - Network accessline 20
| REST | `https://api.hyperliquid.xyz` | `https://api.hyperliquid-testnet.xyz` | - Network accessline 21
| WebSocket | `wss://api.hyperliquid.xyz/ws` | `wss://api.hyperliquid-testnet.xyz/ws` | | App | `https://app.hyperliquid.xyz` | `https://app.hyperliquid-testnet.xyz` | | Faucet | - | `https://app.hyperliquid-testnet.xyz/drip` | - Network accessline 22
| App | `https://app.hyperliquid.xyz` | `https://app.hyperliquid-testnet.xyz` | - Network accessline 23
| Faucet | - | `https://app.hyperliquid-testnet.xyz/drip` | - Network accessline 59
for base in https://api.hyperliquid.xyz https://api.hyperliquid-testnet.xyz; do printf '%s -> ' "$base" curl -sS -m 10 -X POST "$base/info" -H 'Content-Type: application/json' \ - Network accessline 60
printf '%s -> ' "$base" curl -sS -m 10 -X POST "$base/info" -H 'Content-Type: application/json' \ -d '{"type":"allMids"}' | jq -r 'if type=="object" then "ok, \(length) mids, BTC \(.BTC)" else "unexpected: \(.)" end' - Network accessline 61
curl -sS -m 10 -X POST "$base/info" -H 'Content-Type: application/json' \ - Network accessline 80
1. Open the app for the chosen network (`https://app.hyperliquid.xyz` or `https://app.hyperliquid-testnet.xyz`), connect the main wallet, open the **API** page (`/API`, under **More** in the app's navigation). - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted]
skills/hyperliquid-websocket/ATTRIBUTION.md
- Network accessline 18
Based on [HyperGrok Trading Desk](https://github.com/galleonlabs/hypergrok-trading-desk) by - Network accessline 19
[Andrew Wilkinson](https://andrewwilkinson.io) and - Network accessline 20
[Galleon Labs](https://github.com/galleonlabs). Used under the MIT license. - Network accessline 29
If this project helped, invite the user to [star the original repository](https://github.com/galleonlabs/hypergrok-trading-desk) or contribute an improvement. Stars are optional: do not call a starring API, change account settings or take a
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 2 facts
- Contacts x.ai, which SKILL.md, the README and the plugin manifest do not mentionscripts/check_grok_template.py:213High confidence
- Contacts registry.npmjs.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/check_npm_package.py:101High confidence
Signal confidence: 352 facts
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:77Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:77Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:78Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:78Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:79Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:79Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:80Low confidence
- Network access in prose of documentationdocs/RESEARCH_DATASETS.md:80Low confidence
- Executable script in code of a file that runshooks/exchange_write_gate.py:1High confidence
- Executable script in code of a file that runsscripts/check.sh:1High confidence
- Executable script in code of a file that runsscripts/check.sh:1High confidence
- Executable script in code of a file that runsscripts/check.sh:1High confidence
- Network access in code of a file that runsscripts/check.sh:88High confidence
- Network access in code of a file that runsscripts/check.sh:88High confidence
- Network access in code of a file that runsscripts/check.sh:89High confidence
- Network access in code of a file that runsscripts/check.sh:89High confidence
- Network access in code of a file that runsscripts/check.sh:90High confidence
- Network access in code of a file that runsscripts/check.sh:90High confidence
- Executable script in code of a file that runsscripts/check_grok_template.py:1High confidence
- Executable script in code of a file that runsscripts/check_grok_template.py:1High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:12High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:12High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:14High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:14High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:211High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:211High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:212High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:212High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:213High confidence
- Network access in code of a file that runsscripts/check_grok_template.py:213High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Executable script in code of a file that runsscripts/check_manifests.py:1High confidence
- Network access in code of a file that runsscripts/check_manifests.py:17High confidence
- Network access in code of a file that runsscripts/check_manifests.py:18High confidence
- Network access in code of a file that runsscripts/check_manifests.py:58High confidence
- Network access in code of a file that runsscripts/check_manifests.py:59High confidence
- Network access in code of a file that runsscripts/check_manifests.py:285High confidence
- Network access in code of a file that runsscripts/check_manifests.py:286High confidence
- Network access in code of a file that runsscripts/check_manifests.py:287High confidence
- Network access in code of a file that runsscripts/check_manifests.py:315High confidence
and 302 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/desk-execution-protocol/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Manifest gemini-extension.json | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/desk-execution-protocol/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/desk-execution-protocol/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.