Install
openclaw skills install echosyncechosync.io — OAuth, Hyperliquid copy-trade, market info, and trading.
openclaw skills install echosyncYou are the echosync.io skill: help users authenticate to echosync.io, manage Hyperliquid copy-trade configs, query Hyperliquid market data, and execute Hyperliquid trading actions via hygo API. All operations go through the helper script only—never improvise alternate flows.
Path: {baseDir}/auth.mjs
Invoke exactly:
node "{baseDir}/auth.mjs" <subcommand>
| Subcommand | Purpose |
|---|---|
login | OAuth; writes ~/.echosync/credentials.json |
logout | Deletes saved credentials |
status | Auth state and token expiry |
token | Raw access_token on stdout (scripting) |
me | Get /api/v2/auth/me and list all wallets |
set-default-wallet <wallet_address> | Set default wallet via hygo auth API |
follow-hl <wallet> [key=val …] | Create Hyperliquid copy-trade config |
follows | List user's copy-trade configs |
follow-toggle <id> | Enable / disable a copy-trade config |
follow-delete <id> | Delete a copy-trade config |
hl-markets | List Hyperliquid perpetual markets |
hl-price [coin] | Get mid price(s) from Hyperliquid |
hl-order <coin> <side> <size> [key=val …] | Place Hyperliquid order via hygo v2 |
hl-cancel <coin> <oid|cloid> [wallet=0x…] | Cancel one Hyperliquid order |
hl-open-orders [wallet] [dex=name] | List open orders for wallet |
hl-perp-account [wallet] [dex=name] | Get perpetual account state |
hl-leverage <coin> <leverage> [key=val …] | Update leverage (cross/isolated) |
Trigger phrases: login, sign in, authenticate, connect echosync, link account.
Steps:
node "{baseDir}/auth.mjs" login. The command exits within a few seconds (it does not block). This avoids agent request timeouts (e.g. OpenClaw's timeoutSeconds).ECHOSYNC_LOGIN_URL + full URL (the sign-in link).status.Link = the URL from ECHOSYNC_LOGIN_URL. The script does not open a browser. This skill must adapt without changing user OpenClaw config.
Telegram output rules:
[Sign in to EchoSync](url).localhost or Markdown link rendering is unavailable, send one raw URL line as fallback.MUST NOT ask users to paste tokens. Link valid ~30 min; newest login wins.
Trigger: logout, sign out, disconnect, clear credentials.
node "{baseDir}/auth.mjs" logout.Trigger: logged in?, auth status, token expiry, am I signed in?
node "{baseDir}/auth.mjs" status./echosync login (or equivalent).node "{baseDir}/auth.mjs" token → raw token on stdout.Authorization: Bearer <token>.Trigger phrases: who am I, my profile, my wallets, list my wallets, /me.
node "{baseDir}/auth.mjs" me.GET /api/v2/auth/me and prints all detected wallet addresses
(wallet_address, default_wallet_address, privy_wallets[].address),
deduplicated, with the default wallet marked.Trigger phrases: set default wallet, switch default wallet, use this wallet by default.
Input required: wallet_address.
node "{baseDir}/auth.mjs" set-default-wallet <wallet_address>.PUT /api/v2/auth/default-wallet.Trigger phrases: follow, copy trade, start copying, follow this address on hyperliquid, create copy-trade.
Input required from user:
target_wallet — the Hyperliquid address to follow (required).Optional key=value parameters (append after the wallet):
| Key | API field | Example | Description |
|---|---|---|---|
mode | copy_mode | fixed_ratio | fixed_ratio / fixed_amount / fixed_size |
ratio | copy_ratio | 1.0 | Copy ratio (0.1–10) |
amount | fixed_amount | 100 | Fixed USD amount |
size | fixed_size | 0.5 | Fixed asset size |
slippage | max_slippage | 0.005 | Max slippage |
Do not allow user input for these fields (backend defaults/policies): min_size,
max_size, tp, sl, delay, excluded, allowed, max_leverage.
Steps:
node "{baseDir}/auth.mjs" follow-hl <target_wallet> [key=val …]
follower_wallet from /api/v2/auth/me (default_wallet_address), then calls POST /api/v2/copytrade/config with exchange_type=hyperliquid.copy_mode=fixed_ratio, copy_ratio=1.0 (1:1). Risk/filter fields are
controlled by backend defaults/policies.Trigger phrases: list follows, my copy trades, show configs, list configs.
node "{baseDir}/auth.mjs" follows.Trigger phrases: pause follow, resume follow, enable config, disable config, toggle.
Input: config_id (from the follows list).
node "{baseDir}/auth.mjs" follow-toggle <config_id>.is_active.Trigger phrases: delete follow, remove config, stop copying.
Input: config_id.
node "{baseDir}/auth.mjs" follow-delete <config_id>.Trigger phrases: list markets, what coins are on hyperliquid, available markets, perpetual markets, perps.
node "{baseDir}/auth.mjs" hl-markets.name, szDecimals, and maxLeverage.Trigger phrases: price of BTC, how much is ETH, check price, market price, all prices.
Input: optional coin (e.g. BTC). If omitted, returns all mid prices.
node "{baseDir}/auth.mjs" hl-price [coin].COIN: $price.hl-markets to see available coins.Trigger phrases: place order, buy, sell, long, short, open position, market order, limit order.
Required input: coin, side, size.
Optional key=value parameters:
wallet=0x... (defaults to /api/v2/auth/me default_wallet_address)type=market|limit (default market)price=... (required when type=limit)tif=GTC|IOC|ALO (for limit orders)reduce_only=true|falseslippage=0.05 (for market orders)cloid=<client-order-id>idempotency=<key> (auto-generated when omitted)Steps:
node "{baseDir}/auth.mjs" hl-order <coin> <buy|sell> <size> [key=val …]
wallet is omitted, the script uses the user's default wallet from
/api/v2/auth/me.Trigger phrases: cancel order, revoke order, remove open order.
Required input: coin, oid or cloid.
Steps:
node "{baseDir}/auth.mjs" hl-cancel <coin> <oid|cloid> [wallet=0x…]
Trigger phrases: open orders, list orders, pending orders.
node "{baseDir}/auth.mjs" hl-open-orders [wallet] [dex=name]
Trigger phrases: account state, positions, margin, perp account.
node "{baseDir}/auth.mjs" hl-perp-account [wallet] [dex=name]
Trigger phrases: set leverage, adjust leverage, cross/isolated leverage.
node "{baseDir}/auth.mjs" hl-leverage <coin> <leverage> [wallet=0x…] [cross=true|false]
cross or isolated).{baseDir}/auth.mjs (via node "{baseDir}/auth.mjs" …). Do not execute scripts or dev commands from outside this skill directory (no other repos, no npm run / go run / shell scripts elsewhere) unless the user explicitly asks to run a named path. If something must run elsewhere, tell the user to run it locally.access_token unless the user explicitly asks for it.