clodds 1.2.9 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/dist/skills/bundled/acp/SKILL.md +188 -0
  2. package/dist/skills/bundled/acp/index.d.ts +0 -3
  3. package/dist/skills/bundled/acp/index.js +1 -1
  4. package/dist/skills/bundled/acp/index.js.map +1 -1
  5. package/dist/skills/bundled/agentbets/SKILL.md +19 -0
  6. package/dist/skills/bundled/agentbets/index.js +1 -1
  7. package/dist/skills/bundled/agentbets/index.js.map +1 -1
  8. package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
  9. package/dist/skills/bundled/ai-strategy/index.js +1 -1
  10. package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
  11. package/dist/skills/bundled/alerts/SKILL.md +87 -0
  12. package/dist/skills/bundled/analytics/SKILL.md +252 -0
  13. package/dist/skills/bundled/analytics/index.js +2 -2
  14. package/dist/skills/bundled/analytics/index.js.map +1 -1
  15. package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
  16. package/dist/skills/bundled/arbitrage/index.js +6 -1
  17. package/dist/skills/bundled/arbitrage/index.js.map +1 -1
  18. package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
  19. package/dist/skills/bundled/auto-reply/index.js +2 -2
  20. package/dist/skills/bundled/auto-reply/index.js.map +1 -1
  21. package/dist/skills/bundled/automation/SKILL.md +242 -0
  22. package/dist/skills/bundled/automation/index.js +2 -2
  23. package/dist/skills/bundled/automation/index.js.map +1 -1
  24. package/dist/skills/bundled/backtest/SKILL.md +225 -0
  25. package/dist/skills/bundled/bags/SKILL.md +131 -0
  26. package/dist/skills/bundled/bankr/SKILL.md +114 -0
  27. package/dist/skills/bundled/betfair/SKILL.md +113 -0
  28. package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
  29. package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
  30. package/dist/skills/bundled/binance-futures/index.js +1 -2
  31. package/dist/skills/bundled/binance-futures/index.js.map +1 -1
  32. package/dist/skills/bundled/botchan/SKILL.md +66 -0
  33. package/dist/skills/bundled/botchan/index.d.ts +0 -3
  34. package/dist/skills/bundled/botchan/index.js +0 -1
  35. package/dist/skills/bundled/botchan/index.js.map +1 -1
  36. package/dist/skills/bundled/bridge/SKILL.md +215 -0
  37. package/dist/skills/bundled/bridge/index.js +6 -0
  38. package/dist/skills/bundled/bridge/index.js.map +1 -1
  39. package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
  40. package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
  41. package/dist/skills/bundled/bybit-futures/index.js +0 -1
  42. package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
  43. package/dist/skills/bundled/clanker/SKILL.md +125 -0
  44. package/dist/skills/bundled/clanker/index.d.ts +0 -3
  45. package/dist/skills/bundled/clanker/index.js +0 -1
  46. package/dist/skills/bundled/clanker/index.js.map +1 -1
  47. package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
  48. package/dist/skills/bundled/copy-trading/index.js +15 -8
  49. package/dist/skills/bundled/copy-trading/index.js.map +1 -1
  50. package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
  51. package/dist/skills/bundled/credentials/SKILL.md +261 -0
  52. package/dist/skills/bundled/credentials/index.js +4 -0
  53. package/dist/skills/bundled/credentials/index.js.map +1 -1
  54. package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
  55. package/dist/skills/bundled/crypto-hft/index.js +18 -3
  56. package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
  57. package/dist/skills/bundled/dca/SKILL.md +27 -0
  58. package/dist/skills/bundled/dex/SKILL.md +92 -0
  59. package/dist/skills/bundled/dex/index.js +77 -29
  60. package/dist/skills/bundled/dex/index.js.map +1 -1
  61. package/dist/skills/bundled/divergence/SKILL.md +83 -0
  62. package/dist/skills/bundled/doctor/SKILL.md +267 -0
  63. package/dist/skills/bundled/doctor/index.js +2 -8
  64. package/dist/skills/bundled/doctor/index.js.map +1 -1
  65. package/dist/skills/bundled/drift/SKILL.md +53 -0
  66. package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
  67. package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
  68. package/dist/skills/bundled/drift-sdk/index.js +0 -1
  69. package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
  70. package/dist/skills/bundled/edge/SKILL.md +84 -0
  71. package/dist/skills/bundled/embeddings/SKILL.md +244 -0
  72. package/dist/skills/bundled/endaoment/SKILL.md +65 -0
  73. package/dist/skills/bundled/endaoment/index.d.ts +0 -3
  74. package/dist/skills/bundled/endaoment/index.js +0 -1
  75. package/dist/skills/bundled/endaoment/index.js.map +1 -1
  76. package/dist/skills/bundled/ens/SKILL.md +63 -0
  77. package/dist/skills/bundled/ens/index.d.ts +0 -3
  78. package/dist/skills/bundled/ens/index.js +0 -1
  79. package/dist/skills/bundled/ens/index.js.map +1 -1
  80. package/dist/skills/bundled/erc8004/SKILL.md +79 -0
  81. package/dist/skills/bundled/erc8004/index.d.ts +0 -3
  82. package/dist/skills/bundled/erc8004/index.js +0 -1
  83. package/dist/skills/bundled/erc8004/index.js.map +1 -1
  84. package/dist/skills/bundled/execution/SKILL.md +278 -0
  85. package/dist/skills/bundled/farcaster/SKILL.md +80 -0
  86. package/dist/skills/bundled/farcaster/index.js +12 -0
  87. package/dist/skills/bundled/farcaster/index.js.map +1 -1
  88. package/dist/skills/bundled/features/SKILL.md +20 -0
  89. package/dist/skills/bundled/feeds/SKILL.md +288 -0
  90. package/dist/skills/bundled/harden/SKILL.md +74 -0
  91. package/dist/skills/bundled/history/SKILL.md +257 -0
  92. package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
  93. package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
  94. package/dist/skills/bundled/hyperliquid/index.js +0 -1
  95. package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
  96. package/dist/skills/bundled/identity/SKILL.md +228 -0
  97. package/dist/skills/bundled/identity/index.js +2 -2
  98. package/dist/skills/bundled/identity/index.js.map +1 -1
  99. package/dist/skills/bundled/integrations/SKILL.md +321 -0
  100. package/dist/skills/bundled/integrations/index.js +2 -2
  101. package/dist/skills/bundled/integrations/index.js.map +1 -1
  102. package/dist/skills/bundled/jupiter/SKILL.md +163 -0
  103. package/dist/skills/bundled/jupiter/index.js +2 -2
  104. package/dist/skills/bundled/kamino/SKILL.md +69 -0
  105. package/dist/skills/bundled/ledger/SKILL.md +20 -0
  106. package/dist/skills/bundled/lighter/SKILL.md +83 -0
  107. package/dist/skills/bundled/lighter/index.d.ts +0 -3
  108. package/dist/skills/bundled/lighter/index.js +0 -1
  109. package/dist/skills/bundled/lighter/index.js.map +1 -1
  110. package/dist/skills/bundled/marginfi/SKILL.md +62 -0
  111. package/dist/skills/bundled/market-index/SKILL.md +242 -0
  112. package/dist/skills/bundled/market-index/index.js +1 -3
  113. package/dist/skills/bundled/market-index/index.js.map +1 -1
  114. package/dist/skills/bundled/markets/SKILL.md +49 -0
  115. package/dist/skills/bundled/mcp/SKILL.md +235 -0
  116. package/dist/skills/bundled/mcp/index.js +1 -3
  117. package/dist/skills/bundled/mcp/index.js.map +1 -1
  118. package/dist/skills/bundled/memory/SKILL.md +209 -0
  119. package/dist/skills/bundled/metaculus/SKILL.md +62 -0
  120. package/dist/skills/bundled/metaculus/index.js +4 -1
  121. package/dist/skills/bundled/metaculus/index.js.map +1 -1
  122. package/dist/skills/bundled/meteora/SKILL.md +28 -0
  123. package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
  124. package/dist/skills/bundled/metrics/SKILL.md +338 -0
  125. package/dist/skills/bundled/mev/SKILL.md +239 -0
  126. package/dist/skills/bundled/mev/index.js +2 -2
  127. package/dist/skills/bundled/mev/index.js.map +1 -1
  128. package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
  129. package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
  130. package/dist/skills/bundled/mexc-futures/index.js +0 -1
  131. package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
  132. package/dist/skills/bundled/mm/SKILL.md +142 -0
  133. package/dist/skills/bundled/mm/index.js +28 -27
  134. package/dist/skills/bundled/mm/index.js.map +1 -1
  135. package/dist/skills/bundled/monitoring/SKILL.md +249 -0
  136. package/dist/skills/bundled/news/SKILL.md +95 -0
  137. package/dist/skills/bundled/news/index.js +1 -2
  138. package/dist/skills/bundled/news/index.js.map +1 -1
  139. package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
  140. package/dist/skills/bundled/opinion/SKILL.md +87 -0
  141. package/dist/skills/bundled/opportunity/SKILL.md +308 -0
  142. package/dist/skills/bundled/orca/SKILL.md +28 -0
  143. package/dist/skills/bundled/orca/index.js +11 -7
  144. package/dist/skills/bundled/orca/index.js.map +1 -1
  145. package/dist/skills/bundled/pairing/SKILL.md +275 -0
  146. package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
  147. package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
  148. package/dist/skills/bundled/pancakeswap/index.js +0 -1
  149. package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
  150. package/dist/skills/bundled/percolator/SKILL.md +22 -0
  151. package/dist/skills/bundled/permissions/SKILL.md +269 -0
  152. package/dist/skills/bundled/permissions/index.js +2 -2
  153. package/dist/skills/bundled/permissions/index.js.map +1 -1
  154. package/dist/skills/bundled/plugins/SKILL.md +263 -0
  155. package/dist/skills/bundled/plugins/index.js +2 -2
  156. package/dist/skills/bundled/plugins/index.js.map +1 -1
  157. package/dist/skills/bundled/portfolio/SKILL.md +161 -0
  158. package/dist/skills/bundled/portfolio/index.js +1 -1
  159. package/dist/skills/bundled/portfolio/index.js.map +1 -1
  160. package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
  161. package/dist/skills/bundled/positions/SKILL.md +262 -0
  162. package/dist/skills/bundled/predictfun/SKILL.md +109 -0
  163. package/dist/skills/bundled/predictfun/index.js +1 -1
  164. package/dist/skills/bundled/predictfun/index.js.map +1 -1
  165. package/dist/skills/bundled/predictit/SKILL.md +66 -0
  166. package/dist/skills/bundled/predictit/index.js +4 -1
  167. package/dist/skills/bundled/predictit/index.js.map +1 -1
  168. package/dist/skills/bundled/presence/SKILL.md +217 -0
  169. package/dist/skills/bundled/presence/index.js +2 -2
  170. package/dist/skills/bundled/presence/index.js.map +1 -1
  171. package/dist/skills/bundled/processes/SKILL.md +254 -0
  172. package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
  173. package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
  174. package/dist/skills/bundled/pumpfun/index.js +82 -8
  175. package/dist/skills/bundled/pumpfun/index.js.map +1 -1
  176. package/dist/skills/bundled/qmd/SKILL.md +129 -0
  177. package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
  178. package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
  179. package/dist/skills/bundled/qrcoin/index.js +0 -1
  180. package/dist/skills/bundled/qrcoin/index.js.map +1 -1
  181. package/dist/skills/bundled/raydium/SKILL.md +198 -0
  182. package/dist/skills/bundled/remote/SKILL.md +201 -0
  183. package/dist/skills/bundled/research/SKILL.md +83 -0
  184. package/dist/skills/bundled/research/index.js +2 -2
  185. package/dist/skills/bundled/research/index.js.map +1 -1
  186. package/dist/skills/bundled/risk/SKILL.md +323 -0
  187. package/dist/skills/bundled/router/SKILL.md +233 -0
  188. package/dist/skills/bundled/routing/SKILL.md +258 -0
  189. package/dist/skills/bundled/sandbox/SKILL.md +257 -0
  190. package/dist/skills/bundled/search-config/SKILL.md +257 -0
  191. package/dist/skills/bundled/search-config/index.js +2 -2
  192. package/dist/skills/bundled/search-config/index.js.map +1 -1
  193. package/dist/skills/bundled/sessions/SKILL.md +251 -0
  194. package/dist/skills/bundled/sessions/index.js +1 -1
  195. package/dist/skills/bundled/sessions/index.js.map +1 -1
  196. package/dist/skills/bundled/setup/SKILL.md +53 -0
  197. package/dist/skills/bundled/shield/SKILL.md +21 -0
  198. package/dist/skills/bundled/signals/SKILL.md +106 -0
  199. package/dist/skills/bundled/signals/index.d.ts +0 -3
  200. package/dist/skills/bundled/signals/index.js +3 -4
  201. package/dist/skills/bundled/signals/index.js.map +1 -1
  202. package/dist/skills/bundled/sizing/SKILL.md +238 -0
  203. package/dist/skills/bundled/slippage/SKILL.md +306 -0
  204. package/dist/skills/bundled/smarkets/SKILL.md +107 -0
  205. package/dist/skills/bundled/smarkets/index.js +3 -3
  206. package/dist/skills/bundled/smarkets/index.js.map +1 -1
  207. package/dist/skills/bundled/solend/SKILL.md +63 -0
  208. package/dist/skills/bundled/strategy/SKILL.md +266 -0
  209. package/dist/skills/bundled/streaming/SKILL.md +150 -0
  210. package/dist/skills/bundled/streaming/index.js +2 -2
  211. package/dist/skills/bundled/streaming/index.js.map +1 -1
  212. package/dist/skills/bundled/tailscale/SKILL.md +249 -0
  213. package/dist/skills/bundled/tailscale/index.js +2 -2
  214. package/dist/skills/bundled/tailscale/index.js.map +1 -1
  215. package/dist/skills/bundled/ticks/SKILL.md +61 -0
  216. package/dist/skills/bundled/token-security/SKILL.md +18 -0
  217. package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
  218. package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
  219. package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
  220. package/dist/skills/bundled/trading-kalshi/index.js +2 -0
  221. package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
  222. package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
  223. package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
  224. package/dist/skills/bundled/trading-polymarket/index.js +28 -19
  225. package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
  226. package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
  227. package/dist/skills/bundled/trading-solana/index.js +1 -1
  228. package/dist/skills/bundled/trading-solana/index.js.map +1 -1
  229. package/dist/skills/bundled/trading-system/SKILL.md +290 -0
  230. package/dist/skills/bundled/triggers/SKILL.md +433 -0
  231. package/dist/skills/bundled/tts/SKILL.md +220 -0
  232. package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
  233. package/dist/skills/bundled/usage/SKILL.md +239 -0
  234. package/dist/skills/bundled/usage/index.js +2 -2
  235. package/dist/skills/bundled/usage/index.js.map +1 -1
  236. package/dist/skills/bundled/veil/SKILL.md +76 -0
  237. package/dist/skills/bundled/veil/index.d.ts +0 -3
  238. package/dist/skills/bundled/veil/index.js +0 -1
  239. package/dist/skills/bundled/veil/index.js.map +1 -1
  240. package/dist/skills/bundled/verify/SKILL.md +199 -0
  241. package/dist/skills/bundled/verify/index.d.ts +0 -3
  242. package/dist/skills/bundled/verify/index.js +0 -1
  243. package/dist/skills/bundled/verify/index.js.map +1 -1
  244. package/dist/skills/bundled/virtuals/SKILL.md +82 -0
  245. package/dist/skills/bundled/voice/SKILL.md +217 -0
  246. package/dist/skills/bundled/voice/index.js +2 -2
  247. package/dist/skills/bundled/voice/index.js.map +1 -1
  248. package/dist/skills/bundled/weather/SKILL.md +80 -0
  249. package/dist/skills/bundled/weather/index.js +3 -0
  250. package/dist/skills/bundled/weather/index.js.map +1 -1
  251. package/dist/skills/bundled/webhooks/SKILL.md +297 -0
  252. package/dist/skills/bundled/webhooks/index.js +2 -2
  253. package/dist/skills/bundled/webhooks/index.js.map +1 -1
  254. package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
  255. package/dist/skills/bundled/whale-tracking/index.js +2 -2
  256. package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
  257. package/dist/skills/bundled/yoink/SKILL.md +54 -0
  258. package/dist/skills/bundled/yoink/index.d.ts +0 -3
  259. package/dist/skills/bundled/yoink/index.js +0 -1
  260. package/dist/skills/bundled/yoink/index.js.map +1 -1
  261. package/dist/skills/executor.js +5 -3
  262. package/dist/skills/executor.js.map +1 -1
  263. package/package.json +2 -2
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: pump-swarm
3
+ description: "Coordinated multi-wallet trading on Pump.fun"
4
+ command: swarm
5
+ emoji: "🐝"
6
+ gates:
7
+ envs:
8
+ - SOLANA_PRIVATE_KEY
9
+ ---
10
+
11
+ # Pump.fun Swarm Trading
12
+
13
+ Coordinate up to **20 wallets** to execute synchronized trades on Pump.fun tokens.
14
+
15
+ ## Quick Start
16
+
17
+ ```bash
18
+ # Set up wallets
19
+ export SOLANA_PRIVATE_KEY="your-main-wallet-key" # wallet_0
20
+ export SOLANA_SWARM_KEY_1="second-wallet-key" # wallet_1
21
+ export SOLANA_SWARM_KEY_2="third-wallet-key" # wallet_2
22
+ # ... up to SOLANA_SWARM_KEY_20
23
+
24
+ # Optional
25
+ export SOLANA_RPC_URL="https://your-rpc.com"
26
+ export PUMPPORTAL_API_KEY="your-api-key"
27
+ ```
28
+
29
+ ## Commands
30
+
31
+ ### Wallet Management
32
+
33
+ ```
34
+ /swarm wallets List all swarm wallets with addresses
35
+ /swarm balances Fetch SOL balances from chain
36
+ /swarm enable <wallet_id> Enable a wallet for trading
37
+ /swarm disable <wallet_id> Disable a wallet
38
+ ```
39
+
40
+ ### Trading
41
+
42
+ ```
43
+ /swarm buy <mint> <sol> [options] Buy with all enabled wallets
44
+ /swarm sell <mint> <amount|%> [opts] Sell from wallets with positions
45
+ ```
46
+
47
+ ### Position Management
48
+
49
+ ```
50
+ /swarm position <mint> Show cached token positions
51
+ /swarm refresh <mint> Fetch fresh positions from chain (required before sell)
52
+ ```
53
+
54
+ ## Execution Modes
55
+
56
+ | Mode | Flag | Best For | Description |
57
+ |------|------|----------|-------------|
58
+ | **Parallel** | `--parallel` | Speed (>5 wallets) | All wallets execute simultaneously |
59
+ | **Bundle** | `--bundle` | Atomicity (≤5) | Single Jito bundle, all-or-nothing |
60
+ | **Multi-Bundle** | `--multi-bundle` | Atomicity (6-20) | Multiple Jito bundles in parallel |
61
+ | **Sequential** | `--sequential` | Stealth | Staggered 200-400ms delays |
62
+
63
+ ### Auto Mode Selection (Default)
64
+ - 1 wallet → Parallel (direct submit)
65
+ - 2-5 wallets → Single Jito Bundle
66
+ - 6-20 wallets → Multi-Bundle (chunks of 5)
67
+
68
+ ## Other Options
69
+
70
+ | Option | Description |
71
+ |--------|-------------|
72
+ | `--preset <name>` | Apply a saved preset |
73
+ | `--wallets <id1,id2>` | Use specific wallets only |
74
+ | `--slippage <bps>` | Slippage tolerance (default: 500 = 5%) |
75
+ | `--pool <pool>` | Pool: pump, raydium, auto (pumpfun only) |
76
+ | `--dex <dex>` | DEX: pumpfun (default), bags, meteora |
77
+ | `--pool-address <addr>` | Specific pool address (for Meteora) |
78
+
79
+ ## Examples
80
+
81
+ ```bash
82
+ # Buy 0.1 SOL worth on each enabled wallet (auto mode)
83
+ /swarm buy ABC123mint... 0.1
84
+
85
+ # Buy with specific wallets only
86
+ /swarm buy ABC123mint... 0.2 --wallets wallet_0,wallet_1
87
+
88
+ # Buy with a preset
89
+ /swarm buy ABC123mint... 0.1 --preset stealth
90
+
91
+ # Sell 100% with multiple Jito bundles (for >5 wallets)
92
+ /swarm sell ABC123mint... 100% --multi-bundle
93
+
94
+ # Sell 50% with staggered timing (stealth mode)
95
+ /swarm sell ABC123mint... 50% --sequential
96
+
97
+ # Sell with preset
98
+ /swarm sell ABC123mint... 100% --preset fast
99
+
100
+ # Check positions before selling
101
+ /swarm refresh ABC123mint...
102
+ /swarm position ABC123mint...
103
+
104
+ # Multi-DEX examples
105
+ /swarm buy ABC123mint... 0.1 --dex bags # Buy on Bags.fm
106
+ /swarm buy ABC123mint... 0.1 --dex meteora # Buy on Meteora DLMM
107
+ /swarm sell ABC123mint... 100% --dex bags # Sell on Bags.fm
108
+ ```
109
+
110
+ ## Execution Modes Deep Dive
111
+
112
+ ### Parallel (Default for >5 wallets)
113
+ - **Speed:** All wallets submit simultaneously via `Promise.all`
114
+ - **Risk:** No atomicity - some may succeed, others fail
115
+ - **Use when:** Speed is priority, or bundles keep failing
116
+
117
+ ### Jito Bundle (Default for 2-5 wallets)
118
+ - **Atomic:** All transactions succeed or all fail together
119
+ - **MEV-protected:** No front-running between your own wallets
120
+ - **Cost:** ~10,000 lamports tip per bundle
121
+ - **Limit:** Max 5 transactions per bundle (Jito constraint)
122
+
123
+ ### Multi-Bundle (Recommended for 6-20 wallets)
124
+ - **Chunked:** Splits wallets into groups of 5
125
+ - **Parallel bundles:** All chunks submit simultaneously
126
+ - **Partial atomicity:** Each chunk is atomic, but chunks are independent
127
+ - **Example:** 12 wallets → 3 bundles of [5, 5, 2] wallets
128
+
129
+ ### Sequential (Stealth mode)
130
+ - **Staggered:** 200-400ms random delay between wallets
131
+ - **Amount variance:** ±5% to avoid detection patterns
132
+ - **Rate limited:** 5 seconds minimum between trades per wallet
133
+ - **Use when:** Want to avoid pattern detection
134
+
135
+ ## How It Works
136
+
137
+ ### Buy Flow
138
+ 1. Refreshes SOL balances from chain
139
+ 2. Filters wallets with sufficient balance (≥0.01 SOL + amount)
140
+ 3. Builds transaction for each wallet via PumpPortal API
141
+ 4. Signs all transactions locally
142
+ 5. Submits via selected execution mode
143
+ 6. Reports results per wallet
144
+
145
+ ### Sell Flow
146
+ 1. **Fetches actual token balances from chain** (critical!)
147
+ 2. Filters wallets with positions
148
+ 3. Calculates sell amount (% of position or exact)
149
+ 4. Builds and signs transactions
150
+ 5. Submits via selected execution mode
151
+ 6. Reports results per wallet
152
+
153
+ ## Safety Features
154
+
155
+ - **Balance check:** Verifies sufficient SOL before buy
156
+ - **Position check:** Fetches real token balances before sell
157
+ - **Max amount:** Rejects buy amounts > 10 SOL per wallet
158
+ - **Confirmation timeout:** 60 second timeout per transaction
159
+ - **Error reporting:** Shows detailed errors per wallet
160
+ - **Bundle fallback:** Failed bundles automatically retry as parallel
161
+
162
+ ## Configuration
163
+
164
+ | Env Variable | Description |
165
+ |--------------|-------------|
166
+ | `SOLANA_PRIVATE_KEY` | Main wallet (wallet_0) |
167
+ | `SOLANA_SWARM_KEY_1..20` | Additional swarm wallets |
168
+ | `SOLANA_RPC_URL` | Custom RPC endpoint (faster = better) |
169
+ | `PUMPPORTAL_API_KEY` | PumpPortal API key (optional, for pumpfun) |
170
+ | `BAGS_API_KEY` | Bags.fm API key (required for bags DEX) |
171
+
172
+ ## Multi-DEX Support
173
+
174
+ The swarm system supports trading across multiple DEXes:
175
+
176
+ | DEX | Flag | Best For | Requires |
177
+ |-----|------|----------|----------|
178
+ | Pump.fun | `--dex pumpfun` (default) | Memecoins, new launches | `PUMPPORTAL_API_KEY` (optional) |
179
+ | Bags.fm | `--dex bags` | Bags-launched tokens | `BAGS_API_KEY` |
180
+ | Meteora | `--dex meteora` | DLMM pools, concentrated liquidity | - |
181
+
182
+ ### Multi-DEX Examples
183
+
184
+ ```bash
185
+ # Buy on Pump.fun (default)
186
+ /swarm buy ABC123... 0.1
187
+
188
+ # Buy on Bags.fm
189
+ /swarm buy ABC123... 0.1 --dex bags
190
+
191
+ # Buy on Meteora with specific pool
192
+ /swarm buy ABC123... 0.1 --dex meteora --pool-address <pool_address>
193
+
194
+ # Sell on Bags.fm with stealth preset
195
+ /swarm sell ABC123... 100% --dex bags --preset stealth
196
+ ```
197
+
198
+ ### Notes
199
+ - Default DEX is `pumpfun` for backward compatibility
200
+ - Bags requires `BAGS_API_KEY` - will error if missing
201
+ - Meteora can auto-discover pools or use a specific `--pool-address`
202
+ - All execution modes (parallel, bundle, sequential) work with all DEXes
203
+ - Presets work with all DEXes
204
+
205
+ ## Agent Tools (12)
206
+
207
+ | Tool | Description |
208
+ |------|-------------|
209
+ | `swarm_wallets` | List all swarm wallets |
210
+ | `swarm_balances` | Refresh SOL balances from chain |
211
+ | `swarm_buy` | Coordinated buy across wallets (supports `preset` param) |
212
+ | `swarm_sell` | Coordinated sell across wallets (supports `preset` param) |
213
+ | `swarm_position` | Get cached positions |
214
+ | `swarm_refresh` | Fetch fresh positions from chain |
215
+ | `swarm_enable` | Enable a wallet |
216
+ | `swarm_disable` | Disable a wallet |
217
+ | `swarm_preset_save` | Save a trading preset |
218
+ | `swarm_preset_list` | List saved presets |
219
+ | `swarm_preset_get` | Get preset details |
220
+ | `swarm_preset_delete` | Delete a preset |
221
+
222
+ ## Scaling Notes
223
+
224
+ - **Max wallets:** 20 (wallet_0 + SOLANA_SWARM_KEY_1..20)
225
+ - **Jito bundle limit:** 5 txs per bundle (handled automatically)
226
+ - **Multi-bundle parallel:** All bundles submit simultaneously
227
+ - **RPC recommendation:** Use dedicated RPC for best performance
228
+ - **Tip amount:** 10,000 lamports per bundle (~$0.002)
229
+
230
+ ## Presets
231
+
232
+ Save and reuse trading configurations across tokens and strategies.
233
+
234
+ ### Preset Commands
235
+
236
+ ```bash
237
+ /swarm preset save <name> [options] Save a preset
238
+ /swarm preset list [type] List presets
239
+ /swarm preset show <name> Show preset details
240
+ /swarm preset delete <name> Delete a preset
241
+ ```
242
+
243
+ ### Preset Save Options
244
+
245
+ | Option | Description |
246
+ |--------|-------------|
247
+ | `--type <type>` | Preset type: strategy, token, wallet_group |
248
+ | `--desc "..."` | Preset description |
249
+ | `--mint <addr>` | Token address (for token presets) |
250
+ | `--amount <sol>` | Default SOL per wallet |
251
+ | `--slippage <bps>` | Slippage in basis points |
252
+ | `--pool <pool>` | Pool: pump, raydium, auto |
253
+ | `--mode <mode>` | parallel, bundle, multi-bundle, sequential |
254
+ | `--wallets <ids>` | Wallet IDs (for wallet_group presets) |
255
+
256
+ ### Built-in Presets
257
+
258
+ | Name | Mode | Slippage | Pool | Use Case |
259
+ |------|------|----------|------|----------|
260
+ | `fast` | parallel | 5% | auto | Speed priority |
261
+ | `atomic` | multi-bundle | 5% | auto | All-or-nothing execution |
262
+ | `stealth` | sequential | 3% | auto | Pattern avoidance |
263
+ | `aggressive` | parallel | 10% | pump | High volatility tokens |
264
+ | `safe` | bundle | 2% | auto | Conservative trading |
265
+
266
+ ### Preset Examples
267
+
268
+ ```bash
269
+ # Create a custom strategy preset
270
+ /swarm preset save my_stealth --type strategy --mode sequential --slippage 300
271
+
272
+ # Create a token preset for BONK
273
+ /swarm preset save bonk_entry --type token --mint DezXAZ... --slippage 1000 --amount 0.1
274
+
275
+ # Create a wallet group preset
276
+ /swarm preset save top5 --type wallet_group --wallets wallet_0,wallet_1,wallet_2,wallet_3,wallet_4
277
+
278
+ # List all presets
279
+ /swarm preset list
280
+
281
+ # List only strategy presets
282
+ /swarm preset list strategy
283
+
284
+ # Use preset in trade
285
+ /swarm buy ABC... 0.1 --preset my_stealth
286
+ /swarm sell ABC... 100% --preset fast
287
+
288
+ # Delete a preset
289
+ /swarm preset delete old_preset
290
+ ```
291
+
292
+ ### Preset Types
293
+
294
+ | Type | Purpose |
295
+ |------|---------|
296
+ | `strategy` | Reusable trading settings (mode, slippage, pool) |
297
+ | `token` | Token-specific settings with saved mint address |
298
+ | `wallet_group` | Named wallet combinations for specific trades |
299
+
300
+ ## Troubleshooting
301
+
302
+ | Issue | Solution |
303
+ |-------|----------|
304
+ | Bundle keeps failing | Try `--parallel` or check network congestion |
305
+ | Positions not showing | Run `/swarm refresh <mint>` first |
306
+ | Insufficient balance | Check with `/swarm balances` |
307
+ | Slow execution | Use dedicated RPC via `SOLANA_RPC_URL` |
308
+ | Some wallets skipped | Wallet disabled or insufficient balance |
309
+ | Preset not found | Check name with `/swarm preset list` |
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: pumpfun
3
+ description: "Pump.fun - Complete Solana memecoin launchpad. Discovery, trending, gainers, losers, token data all work without a key. Trading requires SOLANA_PRIVATE_KEY."
4
+ command: pump
5
+ emoji: "🚀"
6
+ ---
7
+
8
+ # Pump.fun - Complete API Coverage (32 Tools)
9
+
10
+ Pump.fun is the leading Solana memecoin launchpad with bonding curve trading.
11
+
12
+ ## Trading
13
+
14
+ ```
15
+ /pump buy <mint> <amount> [options] Buy tokens (amount in SOL)
16
+ /pump sell <mint> <amount|%> [options] Sell tokens (amount or percentage)
17
+ /pump quote <mint> <amount> <action> Get swap quote
18
+ ```
19
+
20
+ **Options:**
21
+ - `--pool <pool>` - Pool: pump, raydium, pump-amm, launchlab, bonk, auto
22
+ - `--slippage <bps>` - Slippage in basis points (default: 500 = 5%)
23
+ - `--priority <lamports>` - Priority fee for faster execution
24
+
25
+ **Examples:**
26
+ ```
27
+ /pump buy ABC123... 0.1
28
+ /pump buy ABC123... 0.5 --pool auto --slippage 1000
29
+ /pump sell ABC123... 100%
30
+ /pump sell ABC123... 50% --pool raydium
31
+ ```
32
+
33
+ ## Discovery
34
+
35
+ ```
36
+ /pump trending Top tokens by 24h volume (DexScreener enriched)
37
+ /pump gainers Top 24h price gainers
38
+ /pump losers Top 24h price losers
39
+ /pump hot Most active right now (1h transactions)
40
+ /pump new-hot Hottest new tokens by volume
41
+ /pump new Recently created tokens
42
+ /pump live Currently trading tokens
43
+ /pump graduated Tokens migrated to Raydium
44
+ /pump search <query> Search tokens by name/symbol
45
+ /pump volatile High volatility tokens
46
+ /pump koth King of the Hill (30-35K mcap)
47
+ /pump for-you Personalized recommendations
48
+ /pump metas Trending narratives/keywords
49
+ ```
50
+
51
+ ## Token Data
52
+
53
+ ```
54
+ /pump token <mint> Full token info
55
+ /pump stats <mint> Volume, txns, liquidity, price change (DexScreener)
56
+ /pump price <mint> Current price + 24h stats
57
+ /pump holders <mint> Top holders list
58
+ /pump trades <mint> [--limit N] Recent trades for token
59
+ /pump chart <mint> [--interval X] OHLCV price chart
60
+ /pump similar <mint> Find similar tokens
61
+ ```
62
+
63
+ **Intervals:** 1m, 5m, 15m, 1h, 4h, 1d
64
+
65
+ ## Creator Tools
66
+
67
+ ```
68
+ /pump user-coins <address> Tokens created by wallet
69
+ /pump create <name> <symbol> <desc> Launch new token
70
+ /pump claim <mint> Claim creator fees
71
+ /pump ipfs-upload <name> <symbol> <desc> Upload metadata to IPFS
72
+ ```
73
+
74
+ **Create Options:**
75
+ - `--image <url>` - Token image URL
76
+ - `--twitter <url>` - Twitter link
77
+ - `--telegram <url>` - Telegram link
78
+ - `--website <url>` - Website link
79
+ - `--initial <SOL>` - Initial buy amount
80
+
81
+ ## Platform Data
82
+
83
+ ```
84
+ /pump latest-trades [--limit N] Latest trades platform-wide
85
+ /pump sol-price Current SOL price
86
+ ```
87
+
88
+ ## Monitoring (WebSocket)
89
+
90
+ ```
91
+ /pump watch <mint> Watch token for real-time trades
92
+ /pump snipe <symbol> Wait for token with symbol to launch
93
+ ```
94
+
95
+ ## Configuration
96
+
97
+ ```bash
98
+ export SOLANA_PRIVATE_KEY="your-private-key"
99
+ export PUMPPORTAL_API_KEY="your-api-key" # Optional, for trading API
100
+ export SOLANA_RPC_URL="your-rpc-url" # Optional, custom RPC
101
+ ```
102
+
103
+ ## Pool Options
104
+
105
+ | Pool | Description |
106
+ |------|-------------|
107
+ | `pump` | Pump.fun bonding curve (default) |
108
+ | `raydium` | Raydium AMM (graduated tokens) |
109
+ | `pump-amm` | Pump.fun native AMM |
110
+ | `launchlab` | LaunchLab pools |
111
+ | `raydium-cpmm` | Raydium CPMM pools |
112
+ | `bonk` | Bonk pools |
113
+ | `auto` | Automatic best route |
114
+
115
+ ## API Sources
116
+
117
+ - **Trading:** PumpPortal (pumpportal.fun) - 0.5% fee
118
+ - **Data:** Pump.fun Frontend API v3 (frontend-api-v3.pump.fun)
119
+ - **Analytics:** Advanced API v2 (advanced-api-v2.pump.fun)
120
+ - **Volatility:** Volatility API v2 (volatility-api-v2.pump.fun)
121
+ - **WebSocket:** wss://pumpportal.fun/api/data
122
+
123
+ ## Complete Tool List (32 Tools)
124
+
125
+ | Category | Tools |
126
+ |----------|-------|
127
+ | **Trading** | trade (buy/sell), quote |
128
+ | **Discovery** | trending, gainers, losers, hot, new-hot, new, live, graduated, search, volatile, koth, for-you, metas |
129
+ | **Token Data** | token, stats, price, holders, trades, chart, similar |
130
+ | **Creator** | user-coins, create, claim, ipfs-upload |
131
+ | **Platform** | latest-trades, sol-price |
132
+
133
+ ## Features
134
+
135
+ - Bonding curve trading with automatic graduation
136
+ - Multi-pool routing (Pump, Raydium, CPMM, etc.)
137
+ - Token creation with IPFS metadata upload
138
+ - Creator fee claiming
139
+ - Real-time trade streaming via WebSocket
140
+ - Token sniping support
141
+ - OHLCV charts and analytics
142
+ - Holder analysis
143
+ - Trending metas/narratives discovery
144
+ - Similar token recommendations
145
+ - Platform-wide trade feed
@@ -151,12 +151,28 @@ function formatPrice(price) {
151
151
  return price.toFixed(4);
152
152
  }
153
153
  function formatMarketCap(mcap) {
154
+ if (mcap >= 1_000_000_000)
155
+ return `$${(mcap / 1_000_000_000).toFixed(2)}B`;
154
156
  if (mcap >= 1_000_000)
155
157
  return `$${(mcap / 1_000_000).toFixed(2)}M`;
156
158
  if (mcap >= 1_000)
157
159
  return `$${(mcap / 1_000).toFixed(1)}K`;
158
160
  return `$${mcap.toFixed(0)}`;
159
161
  }
162
+ function formatPriceUsd(priceStr) {
163
+ if (!priceStr || priceStr === '0')
164
+ return 'N/A';
165
+ const p = parseFloat(priceStr);
166
+ if (isNaN(p) || p === 0)
167
+ return 'N/A';
168
+ if (p < 0.000001)
169
+ return `$${p.toExponential(2)}`;
170
+ if (p < 0.01)
171
+ return `$${p.toFixed(8)}`;
172
+ if (p < 1)
173
+ return `$${p.toFixed(6)}`;
174
+ return `$${p.toFixed(4)}`;
175
+ }
160
176
  // ============================================================================
161
177
  // Trading Handlers
162
178
  // ============================================================================
@@ -376,7 +392,15 @@ async function enrichWithDexScreener(mints) {
376
392
  if (!mints.length)
377
393
  return result;
378
394
  try {
379
- const resp = await fetch(`https://api.dexscreener.com/tokens/v1/solana/${mints.join(',')}`);
395
+ const controller = new AbortController();
396
+ const timeout = setTimeout(() => controller.abort(), 10_000);
397
+ let resp;
398
+ try {
399
+ resp = await fetch(`https://api.dexscreener.com/tokens/v1/solana/${mints.join(',')}`, { signal: controller.signal });
400
+ }
401
+ finally {
402
+ clearTimeout(timeout);
403
+ }
380
404
  if (!resp.ok)
381
405
  return result;
382
406
  const pairs = await resp.json();
@@ -413,9 +437,27 @@ async function enrichWithDexScreener(mints) {
413
437
  catch { /* best-effort */ }
414
438
  return result;
415
439
  }
416
- async function getTopPumpTokenMints(limit = 20) {
417
- const tokens = await pumpFrontendRequest(`/coins?limit=${limit}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=true`);
418
- return tokens?.map(t => t.mint) || [];
440
+ async function getTopPumpTokenMints(limit = 20, includeActive = true) {
441
+ if (!includeActive) {
442
+ // Graduated only
443
+ const tokens = await pumpFrontendRequest(`/coins?limit=${limit}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=true`);
444
+ return tokens?.map(t => t.mint) || [];
445
+ }
446
+ // Fetch both graduated (by mcap) and active bonding curve tokens for broader coverage
447
+ const [graduated, active] = await Promise.allSettled([
448
+ pumpFrontendRequest(`/coins?limit=${Math.ceil(limit * 0.6)}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=true`),
449
+ pumpFrontendRequest(`/coins?limit=${Math.ceil(limit * 0.6)}&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=false`),
450
+ ]);
451
+ const mints = new Set();
452
+ if (graduated.status === 'fulfilled') {
453
+ for (const t of graduated.value || [])
454
+ mints.add(t.mint);
455
+ }
456
+ if (active.status === 'fulfilled') {
457
+ for (const t of active.value || [])
458
+ mints.add(t.mint);
459
+ }
460
+ return [...mints].slice(0, limit);
419
461
  }
420
462
  // ============================================================================
421
463
  // Discovery Handlers
@@ -460,7 +502,7 @@ async function handleGainers() {
460
502
  const arrow = t.change24h >= 0 ? '📈' : '📉';
461
503
  output += `${i + 1}. ${arrow} **${t.symbol}** ${t.change24h >= 0 ? '+' : ''}${t.change24h.toFixed(1)}%\n`;
462
504
  output += ` MCap: ${formatMarketCap(t.marketCap)} | Vol: ${formatMarketCap(t.vol24h)}`;
463
- output += ` | $${parseFloat(t.priceUsd).toFixed(6)}\n`;
505
+ output += ` | ${formatPriceUsd(t.priceUsd)}\n`;
464
506
  output += ` \`${t.mint.slice(0, 20)}...\`\n\n`;
465
507
  }
466
508
  return output;
@@ -481,9 +523,10 @@ async function handleLosers() {
481
523
  let output = '**Top Losers on Pump.fun (24h)**\n\n';
482
524
  for (let i = 0; i < tokens.length; i++) {
483
525
  const t = tokens[i];
484
- output += `${i + 1}. 📉 **${t.symbol}** ${t.change24h.toFixed(1)}%\n`;
526
+ const arrow = t.change24h < 0 ? '📉' : '📈';
527
+ output += `${i + 1}. ${arrow} **${t.symbol}** ${t.change24h >= 0 ? '+' : ''}${t.change24h.toFixed(1)}%\n`;
485
528
  output += ` MCap: ${formatMarketCap(t.marketCap)} | Vol: ${formatMarketCap(t.vol24h)}`;
486
- output += ` | $${parseFloat(t.priceUsd).toFixed(6)}\n`;
529
+ output += ` | ${formatPriceUsd(t.priceUsd)}\n`;
487
530
  output += ` \`${t.mint.slice(0, 20)}...\`\n\n`;
488
531
  }
489
532
  return output;
@@ -559,7 +602,7 @@ async function handleStats(mint) {
559
602
  return `No market data found for \`${mint.slice(0, 20)}...\``;
560
603
  return `**${t.symbol} - Market Stats**
561
604
 
562
- Price: $${parseFloat(t.priceUsd).toFixed(8)}
605
+ Price: ${formatPriceUsd(t.priceUsd)}
563
606
  Market Cap: ${formatMarketCap(t.marketCap)}
564
607
  Liquidity: ${formatMarketCap(t.liquidity)}
565
608
  DEX: ${t.dex}
@@ -582,6 +625,33 @@ DEX: ${t.dex}
582
625
  return `Error: ${error instanceof Error ? error.message : String(error)}`;
583
626
  }
584
627
  }
628
+ async function handleGraduating() {
629
+ try {
630
+ // Fetch active bonding curve tokens sorted by market cap (highest = closest to graduating)
631
+ const tokens = await pumpFrontendRequest('/coins?limit=50&offset=0&sort=market_cap&order=DESC&includeNsfw=false&complete=false');
632
+ if (!tokens?.length)
633
+ return 'No active tokens found.';
634
+ // Filter for tokens with high bonding curve progress (>60%)
635
+ const nearGrad = tokens.filter(t => t.bondingCurveProgress !== undefined && t.bondingCurveProgress > 0.6);
636
+ if (!nearGrad.length)
637
+ return 'No tokens near graduation found (>60% bonding curve).';
638
+ // Sort by progress descending
639
+ nearGrad.sort((a, b) => (b.bondingCurveProgress || 0) - (a.bondingCurveProgress || 0));
640
+ let output = '**Near Graduation (Bonding Curve >60%)**\n\n';
641
+ for (const t of nearGrad.slice(0, 15)) {
642
+ const pct = ((t.bondingCurveProgress || 0) * 100).toFixed(1);
643
+ output += `**${t.symbol}** - ${t.name}\n`;
644
+ output += ` Progress: **${pct}%** | MCap: ${formatMarketCap(t.marketCap || 0)}`;
645
+ if (t.holders)
646
+ output += ` | Holders: ${t.holders}`;
647
+ output += `\n \`${t.mint.slice(0, 20)}...\`\n\n`;
648
+ }
649
+ return output;
650
+ }
651
+ catch (error) {
652
+ return `Error: ${error instanceof Error ? error.message : String(error)}`;
653
+ }
654
+ }
585
655
  async function handleNew() {
586
656
  try {
587
657
  const tokens = await pumpFrontendRequest('/coins/currently-live?limit=20&offset=0&includeNsfw=false&order=DESC');
@@ -1483,6 +1553,9 @@ async function execute(args) {
1483
1553
  return handleVolatile();
1484
1554
  case 'koth':
1485
1555
  return handleKOTH();
1556
+ case 'graduating':
1557
+ case 'near-grad':
1558
+ return handleGraduating();
1486
1559
  case 'gainers':
1487
1560
  return handleGainers();
1488
1561
  case 'losers':
@@ -1558,6 +1631,7 @@ async function execute(args) {
1558
1631
  /pump new Recently created
1559
1632
  /pump live Currently trading
1560
1633
  /pump graduated Migrated to Raydium
1634
+ /pump graduating Near graduation (>60% bonding)
1561
1635
  /pump search <query> Search tokens
1562
1636
  /pump volatile High volatility
1563
1637
  /pump koth King of the Hill (30-35K)