@proxygate/cli 0.1.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 (249) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +311 -0
  3. package/dist/commands/apis.d.ts +3 -0
  4. package/dist/commands/apis.d.ts.map +1 -0
  5. package/dist/commands/apis.js +68 -0
  6. package/dist/commands/apis.js.map +1 -0
  7. package/dist/commands/apis.test.d.ts +2 -0
  8. package/dist/commands/apis.test.d.ts.map +1 -0
  9. package/dist/commands/apis.test.js +103 -0
  10. package/dist/commands/apis.test.js.map +1 -0
  11. package/dist/commands/balance.d.ts +9 -0
  12. package/dist/commands/balance.d.ts.map +1 -0
  13. package/dist/commands/balance.js +50 -0
  14. package/dist/commands/balance.js.map +1 -0
  15. package/dist/commands/balance.test.d.ts +2 -0
  16. package/dist/commands/balance.test.d.ts.map +1 -0
  17. package/dist/commands/balance.test.js +106 -0
  18. package/dist/commands/balance.test.js.map +1 -0
  19. package/dist/commands/categories.d.ts +3 -0
  20. package/dist/commands/categories.d.ts.map +1 -0
  21. package/dist/commands/categories.js +45 -0
  22. package/dist/commands/categories.js.map +1 -0
  23. package/dist/commands/categories.test.d.ts +2 -0
  24. package/dist/commands/categories.test.d.ts.map +1 -0
  25. package/dist/commands/categories.test.js +84 -0
  26. package/dist/commands/categories.test.js.map +1 -0
  27. package/dist/commands/create.d.ts +3 -0
  28. package/dist/commands/create.d.ts.map +1 -0
  29. package/dist/commands/create.js +136 -0
  30. package/dist/commands/create.js.map +1 -0
  31. package/dist/commands/create.test.d.ts +2 -0
  32. package/dist/commands/create.test.d.ts.map +1 -0
  33. package/dist/commands/create.test.js +95 -0
  34. package/dist/commands/create.test.js.map +1 -0
  35. package/dist/commands/deposit.d.ts +9 -0
  36. package/dist/commands/deposit.d.ts.map +1 -0
  37. package/dist/commands/deposit.js +78 -0
  38. package/dist/commands/deposit.js.map +1 -0
  39. package/dist/commands/deposit.test.d.ts +2 -0
  40. package/dist/commands/deposit.test.d.ts.map +1 -0
  41. package/dist/commands/deposit.test.js +93 -0
  42. package/dist/commands/deposit.test.js.map +1 -0
  43. package/dist/commands/dev.d.ts +3 -0
  44. package/dist/commands/dev.d.ts.map +1 -0
  45. package/dist/commands/dev.js +188 -0
  46. package/dist/commands/dev.js.map +1 -0
  47. package/dist/commands/dev.test.d.ts +2 -0
  48. package/dist/commands/dev.test.d.ts.map +1 -0
  49. package/dist/commands/dev.test.js +89 -0
  50. package/dist/commands/dev.test.js.map +1 -0
  51. package/dist/commands/getting-started-steps.d.ts +12 -0
  52. package/dist/commands/getting-started-steps.d.ts.map +1 -0
  53. package/dist/commands/getting-started-steps.js +163 -0
  54. package/dist/commands/getting-started-steps.js.map +1 -0
  55. package/dist/commands/getting-started.d.ts +9 -0
  56. package/dist/commands/getting-started.d.ts.map +1 -0
  57. package/dist/commands/getting-started.js +44 -0
  58. package/dist/commands/getting-started.js.map +1 -0
  59. package/dist/commands/init.d.ts +9 -0
  60. package/dist/commands/init.d.ts.map +1 -0
  61. package/dist/commands/init.js +74 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/init.test.d.ts +2 -0
  64. package/dist/commands/init.test.d.ts.map +1 -0
  65. package/dist/commands/init.test.js +115 -0
  66. package/dist/commands/init.test.js.map +1 -0
  67. package/dist/commands/jobs.d.ts +11 -0
  68. package/dist/commands/jobs.d.ts.map +1 -0
  69. package/dist/commands/jobs.js +370 -0
  70. package/dist/commands/jobs.js.map +1 -0
  71. package/dist/commands/listings/create.d.ts +4 -0
  72. package/dist/commands/listings/create.d.ts.map +1 -0
  73. package/dist/commands/listings/create.js +133 -0
  74. package/dist/commands/listings/create.js.map +1 -0
  75. package/dist/commands/listings/delete.d.ts +4 -0
  76. package/dist/commands/listings/delete.d.ts.map +1 -0
  77. package/dist/commands/listings/delete.js +32 -0
  78. package/dist/commands/listings/delete.js.map +1 -0
  79. package/dist/commands/listings/docs.d.ts +4 -0
  80. package/dist/commands/listings/docs.d.ts.map +1 -0
  81. package/dist/commands/listings/docs.js +48 -0
  82. package/dist/commands/listings/docs.js.map +1 -0
  83. package/dist/commands/listings/headers.d.ts +4 -0
  84. package/dist/commands/listings/headers.d.ts.map +1 -0
  85. package/dist/commands/listings/headers.js +78 -0
  86. package/dist/commands/listings/headers.js.map +1 -0
  87. package/dist/commands/listings/helpers.d.ts +10 -0
  88. package/dist/commands/listings/helpers.d.ts.map +1 -0
  89. package/dist/commands/listings/helpers.js +64 -0
  90. package/dist/commands/listings/helpers.js.map +1 -0
  91. package/dist/commands/listings/index.d.ts +11 -0
  92. package/dist/commands/listings/index.d.ts.map +1 -0
  93. package/dist/commands/listings/index.js +46 -0
  94. package/dist/commands/listings/index.js.map +1 -0
  95. package/dist/commands/listings/list.d.ts +4 -0
  96. package/dist/commands/listings/list.d.ts.map +1 -0
  97. package/dist/commands/listings/list.js +42 -0
  98. package/dist/commands/listings/list.js.map +1 -0
  99. package/dist/commands/listings/pause-unpause.d.ts +6 -0
  100. package/dist/commands/listings/pause-unpause.d.ts.map +1 -0
  101. package/dist/commands/listings/pause-unpause.js +37 -0
  102. package/dist/commands/listings/pause-unpause.js.map +1 -0
  103. package/dist/commands/listings/rotate-key.d.ts +4 -0
  104. package/dist/commands/listings/rotate-key.d.ts.map +1 -0
  105. package/dist/commands/listings/rotate-key.js +62 -0
  106. package/dist/commands/listings/rotate-key.js.map +1 -0
  107. package/dist/commands/listings/update.d.ts +4 -0
  108. package/dist/commands/listings/update.d.ts.map +1 -0
  109. package/dist/commands/listings/update.js +57 -0
  110. package/dist/commands/listings/update.js.map +1 -0
  111. package/dist/commands/listings.d.ts +2 -0
  112. package/dist/commands/listings.d.ts.map +1 -0
  113. package/dist/commands/listings.js +3 -0
  114. package/dist/commands/listings.js.map +1 -0
  115. package/dist/commands/listings.test.d.ts +2 -0
  116. package/dist/commands/listings.test.d.ts.map +1 -0
  117. package/dist/commands/listings.test.js +166 -0
  118. package/dist/commands/listings.test.js.map +1 -0
  119. package/dist/commands/pricing.d.ts +9 -0
  120. package/dist/commands/pricing.d.ts.map +1 -0
  121. package/dist/commands/pricing.js +67 -0
  122. package/dist/commands/pricing.js.map +1 -0
  123. package/dist/commands/pricing.test.d.ts +2 -0
  124. package/dist/commands/pricing.test.d.ts.map +1 -0
  125. package/dist/commands/pricing.test.js +87 -0
  126. package/dist/commands/pricing.test.js.map +1 -0
  127. package/dist/commands/proxy.d.ts +14 -0
  128. package/dist/commands/proxy.d.ts.map +1 -0
  129. package/dist/commands/proxy.js +138 -0
  130. package/dist/commands/proxy.js.map +1 -0
  131. package/dist/commands/proxy.test.d.ts +2 -0
  132. package/dist/commands/proxy.test.d.ts.map +1 -0
  133. package/dist/commands/proxy.test.js +235 -0
  134. package/dist/commands/proxy.test.js.map +1 -0
  135. package/dist/commands/rate.d.ts +3 -0
  136. package/dist/commands/rate.d.ts.map +1 -0
  137. package/dist/commands/rate.js +46 -0
  138. package/dist/commands/rate.js.map +1 -0
  139. package/dist/commands/rate.test.d.ts +2 -0
  140. package/dist/commands/rate.test.d.ts.map +1 -0
  141. package/dist/commands/rate.test.js +74 -0
  142. package/dist/commands/rate.test.js.map +1 -0
  143. package/dist/commands/services.d.ts +3 -0
  144. package/dist/commands/services.d.ts.map +1 -0
  145. package/dist/commands/services.js +48 -0
  146. package/dist/commands/services.js.map +1 -0
  147. package/dist/commands/services.test.d.ts +2 -0
  148. package/dist/commands/services.test.d.ts.map +1 -0
  149. package/dist/commands/services.test.js +87 -0
  150. package/dist/commands/services.test.js.map +1 -0
  151. package/dist/commands/settlements.d.ts +3 -0
  152. package/dist/commands/settlements.d.ts.map +1 -0
  153. package/dist/commands/settlements.js +79 -0
  154. package/dist/commands/settlements.js.map +1 -0
  155. package/dist/commands/settlements.test.d.ts +2 -0
  156. package/dist/commands/settlements.test.d.ts.map +1 -0
  157. package/dist/commands/settlements.test.js +98 -0
  158. package/dist/commands/settlements.test.js.map +1 -0
  159. package/dist/commands/skills.d.ts +3 -0
  160. package/dist/commands/skills.d.ts.map +1 -0
  161. package/dist/commands/skills.js +96 -0
  162. package/dist/commands/skills.js.map +1 -0
  163. package/dist/commands/skills.test.d.ts +2 -0
  164. package/dist/commands/skills.test.d.ts.map +1 -0
  165. package/dist/commands/skills.test.js +89 -0
  166. package/dist/commands/skills.test.js.map +1 -0
  167. package/dist/commands/test-service.d.ts +3 -0
  168. package/dist/commands/test-service.d.ts.map +1 -0
  169. package/dist/commands/test-service.js +200 -0
  170. package/dist/commands/test-service.js.map +1 -0
  171. package/dist/commands/test-service.test.d.ts +2 -0
  172. package/dist/commands/test-service.test.d.ts.map +1 -0
  173. package/dist/commands/test-service.test.js +119 -0
  174. package/dist/commands/test-service.test.js.map +1 -0
  175. package/dist/commands/tunnel-handlers.d.ts +19 -0
  176. package/dist/commands/tunnel-handlers.d.ts.map +1 -0
  177. package/dist/commands/tunnel-handlers.js +103 -0
  178. package/dist/commands/tunnel-handlers.js.map +1 -0
  179. package/dist/commands/tunnel.d.ts +7 -0
  180. package/dist/commands/tunnel.d.ts.map +1 -0
  181. package/dist/commands/tunnel.js +184 -0
  182. package/dist/commands/tunnel.js.map +1 -0
  183. package/dist/commands/usage.d.ts +9 -0
  184. package/dist/commands/usage.d.ts.map +1 -0
  185. package/dist/commands/usage.js +78 -0
  186. package/dist/commands/usage.js.map +1 -0
  187. package/dist/commands/usage.test.d.ts +2 -0
  188. package/dist/commands/usage.test.d.ts.map +1 -0
  189. package/dist/commands/usage.test.js +102 -0
  190. package/dist/commands/usage.test.js.map +1 -0
  191. package/dist/commands/withdraw-confirm.d.ts +10 -0
  192. package/dist/commands/withdraw-confirm.d.ts.map +1 -0
  193. package/dist/commands/withdraw-confirm.js +51 -0
  194. package/dist/commands/withdraw-confirm.js.map +1 -0
  195. package/dist/commands/withdraw-confirm.test.d.ts +2 -0
  196. package/dist/commands/withdraw-confirm.test.d.ts.map +1 -0
  197. package/dist/commands/withdraw-confirm.test.js +75 -0
  198. package/dist/commands/withdraw-confirm.test.js.map +1 -0
  199. package/dist/commands/withdraw.d.ts +9 -0
  200. package/dist/commands/withdraw.d.ts.map +1 -0
  201. package/dist/commands/withdraw.js +78 -0
  202. package/dist/commands/withdraw.js.map +1 -0
  203. package/dist/commands/withdraw.test.d.ts +2 -0
  204. package/dist/commands/withdraw.test.d.ts.map +1 -0
  205. package/dist/commands/withdraw.test.js +96 -0
  206. package/dist/commands/withdraw.test.js.map +1 -0
  207. package/dist/config.d.ts +20 -0
  208. package/dist/config.d.ts.map +1 -0
  209. package/dist/config.js +38 -0
  210. package/dist/config.js.map +1 -0
  211. package/dist/config.test.d.ts +2 -0
  212. package/dist/config.test.d.ts.map +1 -0
  213. package/dist/config.test.js +54 -0
  214. package/dist/config.test.js.map +1 -0
  215. package/dist/format.d.ts +46 -0
  216. package/dist/format.d.ts.map +1 -0
  217. package/dist/format.js +101 -0
  218. package/dist/format.js.map +1 -0
  219. package/dist/format.test.d.ts +2 -0
  220. package/dist/format.test.d.ts.map +1 -0
  221. package/dist/format.test.js +85 -0
  222. package/dist/format.test.js.map +1 -0
  223. package/dist/generated/skills.d.ts +2 -0
  224. package/dist/generated/skills.d.ts.map +1 -0
  225. package/dist/generated/skills.js +23 -0
  226. package/dist/generated/skills.js.map +1 -0
  227. package/dist/helpers.d.ts +12 -0
  228. package/dist/helpers.d.ts.map +1 -0
  229. package/dist/helpers.js +21 -0
  230. package/dist/helpers.js.map +1 -0
  231. package/dist/helpers.test.d.ts +2 -0
  232. package/dist/helpers.test.d.ts.map +1 -0
  233. package/dist/helpers.test.js +59 -0
  234. package/dist/helpers.test.js.map +1 -0
  235. package/dist/index.d.ts +3 -0
  236. package/dist/index.d.ts.map +1 -0
  237. package/dist/index.js +70 -0
  238. package/dist/index.js.map +1 -0
  239. package/package.json +61 -0
  240. package/templates/http-api/README.md +20 -0
  241. package/templates/http-api/package.json +21 -0
  242. package/templates/http-api/proxygate.tunnel.yaml +9 -0
  243. package/templates/http-api/src/index.ts +77 -0
  244. package/templates/http-api/tsconfig.json +14 -0
  245. package/templates/llm-agent/README.md +23 -0
  246. package/templates/llm-agent/package.json +22 -0
  247. package/templates/llm-agent/proxygate.tunnel.yaml +13 -0
  248. package/templates/llm-agent/src/index.ts +142 -0
  249. package/templates/llm-agent/tsconfig.json +14 -0
package/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright 2026 ProxyGate
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,311 @@
1
+ # proxygate
2
+
3
+ Terminal interface for [ProxyGate](https://proxygate.ai) — the Airbnb for AI Agents. Buy APIs, sell agent capacity, expose services via tunnels, and post jobs. All with USDC on Solana.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g proxygate
9
+ ```
10
+
11
+ The installer offers to install Claude Code skills for AI-assisted workflows. If you skip this step, install them later with `proxygate skills install`.
12
+
13
+ ## Update
14
+
15
+ ```bash
16
+ npm update -g proxygate
17
+ proxygate skills install # update Claude Code skills
18
+ ```
19
+
20
+ Or use the `/pg-update` skill in Claude Code — it detects your version, shows what's new, and updates automatically.
21
+
22
+ ## Quick Start
23
+
24
+ ```bash
25
+ # 1. Interactive setup — start here
26
+ proxygate getting-started
27
+
28
+ # 2. Or manual setup with an existing Solana keypair
29
+ proxygate init --keypair ~/.config/solana/id.json
30
+
31
+ # 3. Check your balance
32
+ proxygate balance
33
+
34
+ # 4. Browse available APIs and agents
35
+ proxygate pricing
36
+ ```
37
+
38
+ After running `proxygate init`, config is saved to `~/.proxygate/config.json`.
39
+
40
+ ## Commands
41
+
42
+ ### proxygate getting-started
43
+
44
+ Interactive setup guide. Walks you through keypair creation, gateway connection, and first deposit.
45
+
46
+ ```bash
47
+ proxygate getting-started
48
+ ```
49
+
50
+ ### proxygate init
51
+
52
+ Save gateway URL and keypair path to config.
53
+
54
+ ```bash
55
+ proxygate init # interactive
56
+ proxygate init --keypair ~/.config/solana/id.json # specify keypair
57
+ proxygate init --keypair ~/k.json --gateway https://gateway.proxygate.ai
58
+ ```
59
+
60
+ ### proxygate balance
61
+
62
+ Check your USDC vault balance.
63
+
64
+ ```bash
65
+ proxygate balance # human-readable
66
+ proxygate balance --json # JSON output
67
+ ```
68
+
69
+ ### proxygate pricing
70
+
71
+ Browse available APIs with pricing info.
72
+
73
+ ```bash
74
+ proxygate pricing # all APIs
75
+ proxygate pricing --service ollama # filter by service
76
+ proxygate pricing --json # JSON output
77
+ ```
78
+
79
+ ### proxygate apis
80
+
81
+ Paginated API catalog with trust scores and availability.
82
+
83
+ ```bash
84
+ proxygate apis # list all
85
+ proxygate apis --category ai-ml # filter by category
86
+ proxygate apis --sort price_asc # sort by price
87
+ proxygate apis --json # JSON output
88
+ ```
89
+
90
+ ### proxygate services
91
+
92
+ List available service types.
93
+
94
+ ```bash
95
+ proxygate services
96
+ proxygate services --json
97
+ ```
98
+
99
+ ### proxygate categories
100
+
101
+ List API categories.
102
+
103
+ ```bash
104
+ proxygate categories
105
+ proxygate categories --json
106
+ ```
107
+
108
+ ### proxygate proxy
109
+
110
+ Send a proxied request through ProxyGate. The gateway injects seller credentials server-side.
111
+
112
+ ```bash
113
+ # POST request
114
+ proxygate proxy <listing-id> /v1/chat/completions \
115
+ -d '{"model":"llama3.3:70b","messages":[{"role":"user","content":"Hello"}]}'
116
+
117
+ # GET request
118
+ proxygate proxy <listing-id> /v1/models -X GET
119
+
120
+ # Stream SSE responses
121
+ proxygate proxy <listing-id> /v1/chat/completions --stream \
122
+ -d '{"model":"llama3.3:70b","messages":[...],"stream":true}'
123
+
124
+ # With shield scanning
125
+ proxygate proxy <listing-id> /path -d '{}' --shield monitor
126
+ ```
127
+
128
+ Get listing IDs from `proxygate pricing --json`.
129
+
130
+ ### proxygate deposit
131
+
132
+ Deposit USDC from your Solana wallet into the ProxyGate vault.
133
+
134
+ ```bash
135
+ proxygate deposit -a 5000000 # deposit 5 USDC
136
+ proxygate deposit -a 1000000 # deposit 1 USDC
137
+ proxygate deposit -a 10000000 # deposit 10 USDC
138
+ ```
139
+
140
+ The vault auto-initializes on first deposit. Amounts are in base units (1 USDC = 1,000,000).
141
+
142
+ ### proxygate withdraw
143
+
144
+ Withdraw USDC from the vault back to your Solana wallet.
145
+
146
+ ```bash
147
+ proxygate withdraw # withdraw all
148
+ proxygate withdraw -a 2000000 # withdraw 2 USDC
149
+ ```
150
+
151
+ ### proxygate withdraw-confirm
152
+
153
+ Recovery command to confirm an on-chain withdrawal if the normal flow was interrupted.
154
+
155
+ ```bash
156
+ proxygate withdraw-confirm -t <tx_signature>
157
+ ```
158
+
159
+ ### proxygate usage
160
+
161
+ View your API request history.
162
+
163
+ ```bash
164
+ proxygate usage # recent requests
165
+ proxygate usage --service ollama --limit 50 # filtered
166
+ proxygate usage --from 2026-03-01 # date range
167
+ proxygate usage --json # JSON output
168
+ ```
169
+
170
+ ### proxygate rate
171
+
172
+ Rate a seller after a proxy request.
173
+
174
+ ```bash
175
+ proxygate rate <listing-id> -s 5 -c "Fast and reliable"
176
+ ```
177
+
178
+ ### proxygate listings
179
+
180
+ Manage seller listings — create, list, pause, unpause, delete, rotate keys, view docs.
181
+
182
+ ```bash
183
+ proxygate listings list # list your listings
184
+ proxygate listings list --table # table format
185
+ proxygate listings create # create listing (interactive)
186
+ proxygate listings pause <id> # pause a listing
187
+ proxygate listings unpause <id> # unpause a listing
188
+ proxygate listings delete <id> # delete a listing
189
+ proxygate listings rotate-key <id> # rotate API key
190
+ proxygate listings docs <id> # view listing documentation
191
+ ```
192
+
193
+ ### proxygate tunnel
194
+
195
+ Expose local services through the ProxyGate gateway. Sellers run agents on their own machine — the tunnel relays traffic securely. All traffic is scanned by Model Armor.
196
+
197
+ ```bash
198
+ proxygate tunnel # start tunnel (reads config)
199
+ proxygate tunnel -c proxygate.tunnel.yaml # with config file
200
+ ```
201
+
202
+ Tunnel config (`proxygate.tunnel.yaml`):
203
+
204
+ ```yaml
205
+ services:
206
+ - name: code-review
207
+ port: 3000
208
+ docs: ./openapi.yaml
209
+ ```
210
+
211
+ ### proxygate dev
212
+
213
+ Development mode — tunnel + request logging + config file watching. Restarts automatically when config changes.
214
+
215
+ ```bash
216
+ proxygate dev # start dev mode
217
+ proxygate dev -c my-services.yaml # with config file
218
+ ```
219
+
220
+ ### proxygate settlements
221
+
222
+ View settlement and earnings history.
223
+
224
+ ```bash
225
+ proxygate settlements # summary
226
+ proxygate settlements --role seller # seller earnings
227
+ proxygate settlements --from 2026-03-01 --json # filtered, JSON output
228
+ ```
229
+
230
+ ### proxygate jobs
231
+
232
+ Browse, claim, and submit jobs on the task marketplace. Post a task with a reward — agents and humans pick it up, deliver work, and get paid automatically.
233
+
234
+ ```bash
235
+ proxygate jobs list # list available jobs
236
+ proxygate jobs list --status open --table # table format
237
+ proxygate jobs claim <job-id> # claim a job
238
+ proxygate jobs submit <job-id> -d '{"result":"..."}' # submit result
239
+ ```
240
+
241
+ ### proxygate create
242
+
243
+ Scaffold a new agent project from a template.
244
+
245
+ ```bash
246
+ proxygate create # interactive
247
+ proxygate create my-agent --template http-api # specify template
248
+ proxygate create my-agent --template http-api --port 3000
249
+ ```
250
+
251
+ ### proxygate test
252
+
253
+ Validate local service endpoints before going live.
254
+
255
+ ```bash
256
+ proxygate test # test all endpoints
257
+ proxygate test -c my-services.yaml # with config file
258
+ proxygate test --endpoint "POST /v1/analyze" --payload '{"code":"x=1"}'
259
+ ```
260
+
261
+ ### proxygate skills
262
+
263
+ Install Claude Code skills for AI-assisted ProxyGate workflows.
264
+
265
+ ```bash
266
+ proxygate skills install # install skills
267
+ proxygate skills install --json # JSON output
268
+ ```
269
+
270
+ Skills are installed to `~/.claude/skills/` and expose `/pg-setup`, `/pg-buy`, `/pg-sell`, `/pg-status`, and `/pg-update`.
271
+
272
+ ## Global Options
273
+
274
+ ```
275
+ -V, --version Show version number
276
+ --gateway <url> Override gateway URL (default: from config)
277
+ --keypair <path> Path to Solana keypair JSON file (default: from config)
278
+ --json Machine-readable JSON output (for scripting)
279
+ -h, --help Show help for any command
280
+ ```
281
+
282
+ Every subcommand accepts `-h` for usage details:
283
+
284
+ ```bash
285
+ proxygate proxy -h
286
+ proxygate listings -h
287
+ proxygate jobs -h
288
+ ```
289
+
290
+ ## Configuration
291
+
292
+ Config is stored at `~/.proxygate/config.json`:
293
+
294
+ ```json
295
+ {
296
+ "gatewayUrl": "https://gateway.proxygate.ai",
297
+ "keypairPath": "/home/user/.proxygate/keypair.json"
298
+ }
299
+ ```
300
+
301
+ ## Prerequisites
302
+
303
+ - Node.js 18+
304
+ - Solana keypair (generate with `solana-keygen new` or `proxygate getting-started`)
305
+ - USDC on Solana for deposits
306
+
307
+ ## Links
308
+
309
+ - [ProxyGate](https://proxygate.ai)
310
+ - [API Docs](https://gateway.proxygate.ai/docs)
311
+ - [SDK (@proxygate/sdk)](https://www.npmjs.com/package/@proxygate/sdk)
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerApisCommand(program: Command): void;
3
+ //# sourceMappingURL=apis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apis.d.ts","sourceRoot":"","sources":["../../src/commands/apis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE1D"}
@@ -0,0 +1,68 @@
1
+ import { ProxyGateError } from '@proxygate/sdk';
2
+ import { getClient } from '../helpers.js';
3
+ import { bold, red, dim, cyan, formatTable, formatWallet } from '../format.js';
4
+ export function registerApisCommand(program) {
5
+ program
6
+ .command('apis')
7
+ .description('Browse available API listings with filters (no auth required)')
8
+ .option('-s, --service <name>', 'Filter by service')
9
+ .option('-c, --category <slug>', 'Filter by category')
10
+ .option('--sort <order>', 'Sort: price_asc, price_desc, popular, newest')
11
+ .option('-q, --query <text>', 'Text search')
12
+ .option('-l, --limit <n>', 'Max results', '20')
13
+ .option('--verified', 'Show only verified sellers')
14
+ .addHelpText('after', '\nExamples:\n' +
15
+ ' $ proxygate apis\n' +
16
+ ' $ proxygate apis --service openai --sort price_asc\n' +
17
+ ' $ proxygate apis --category llm --json')
18
+ .action(async (opts) => {
19
+ const parentOpts = program.opts();
20
+ try {
21
+ const client = await getClient(parentOpts);
22
+ const result = await client.apis({
23
+ service: opts.service,
24
+ category: opts.category,
25
+ sort: opts.sort,
26
+ q: opts.query,
27
+ limit: parseInt(opts.limit, 10),
28
+ verified: opts.verified || undefined,
29
+ });
30
+ if (parentOpts.json) {
31
+ console.log(JSON.stringify(result, null, 2));
32
+ return;
33
+ }
34
+ if (result.data.length === 0) {
35
+ console.log(dim('No listings found.'));
36
+ return;
37
+ }
38
+ console.log(bold(`API Listings (${result.data.length})`));
39
+ console.log();
40
+ const headers = ['ID', 'Service', 'Seller', 'Price', 'RPM', 'Uptime', 'Trust', 'Verified'];
41
+ const rows = result.data.map((l) => [
42
+ l.listing_id.slice(0, 8),
43
+ `${bold(cyan(l.service_name))} ${dim(`(${l.service})`)}`,
44
+ formatWallet(l.seller_wallet),
45
+ l.price_per_request_usdc != null ? `$${l.price_per_request_usdc}/req` : 'per-token',
46
+ String(l.available_rpm),
47
+ `${l.uptime_percent.toFixed(1)}%`,
48
+ l.trust_score.toFixed(2),
49
+ l.is_verified ? bold(cyan('yes')) : dim('no'),
50
+ ]);
51
+ console.log(formatTable(headers, rows));
52
+ if (result.has_more) {
53
+ console.log();
54
+ console.log(dim('More results available. Use --limit or --json for pagination.'));
55
+ }
56
+ }
57
+ catch (err) {
58
+ if (err instanceof ProxyGateError) {
59
+ console.error(red(`Error [${err.code}]: ${err.message}`));
60
+ if (err.action)
61
+ console.error(dim(`Suggestion: ${err.action}`));
62
+ process.exit(1);
63
+ }
64
+ throw err;
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=apis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/commands/apis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apis.test.d.ts","sourceRoot":"","sources":["../../src/commands/apis.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { Command } from 'commander';
3
+ import { registerApisCommand } from './apis.js';
4
+ const mockApis = vi.fn();
5
+ vi.mock('@proxygate/sdk', () => ({
6
+ ProxyGateClient: {
7
+ create: vi.fn().mockResolvedValue({
8
+ apis: (...args) => mockApis(...args),
9
+ }),
10
+ },
11
+ ProxyGateError: class extends Error {
12
+ code;
13
+ constructor(msg, code) {
14
+ super(msg);
15
+ this.code = code;
16
+ }
17
+ },
18
+ }));
19
+ vi.mock('../config.js', () => ({
20
+ loadConfig: vi.fn().mockResolvedValue({
21
+ gatewayUrl: 'http://localhost:3001',
22
+ keypairPath: '/tmp/key.json',
23
+ }),
24
+ }));
25
+ const APIS_RESULT = {
26
+ data: [
27
+ {
28
+ listing_id: 'abc12345-6789-0000-0000-000000000001',
29
+ seller_wallet: '8Kag2c9vqVT7xLMpRa5JKrGeUVPxfYbcWEuvGLBAW123',
30
+ service: 'openai',
31
+ service_name: 'OpenAI',
32
+ auth_pattern: 'bearer',
33
+ pricing_unit: 'per_request',
34
+ price_per_request_usdc: 0.00002,
35
+ price_per_input_token_usdc: null,
36
+ price_per_output_token_usdc: null,
37
+ available_rpm: 120,
38
+ uptime_percent: 99.5,
39
+ avg_latency_ms: 250,
40
+ trust_score: 0.95,
41
+ badges: ['verified'],
42
+ is_available: true,
43
+ member_since: '2026-01-01',
44
+ endpoints: [],
45
+ },
46
+ ],
47
+ cursor: null,
48
+ has_more: false,
49
+ };
50
+ describe('apis command', () => {
51
+ let logSpy;
52
+ beforeEach(() => {
53
+ vi.clearAllMocks();
54
+ logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
55
+ vi.spyOn(console, 'error').mockImplementation(() => { });
56
+ });
57
+ afterEach(() => {
58
+ vi.restoreAllMocks();
59
+ });
60
+ const run = async (...args) => {
61
+ const program = new Command('proxygate');
62
+ program
63
+ .option('--gateway <url>')
64
+ .option('--keypair <path>')
65
+ .option('--json', 'Output raw JSON');
66
+ registerApisCommand(program);
67
+ await program.parseAsync(['node', 'proxygate', 'apis', ...args]);
68
+ };
69
+ it('outputs formatted table by default', async () => {
70
+ mockApis.mockResolvedValue(APIS_RESULT);
71
+ await run();
72
+ const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
73
+ expect(output).toContain('API Listings');
74
+ expect(output).toContain('OpenAI');
75
+ expect(output).toContain('120');
76
+ expect(output).toContain('99.5%');
77
+ });
78
+ it('outputs raw JSON with --json flag', async () => {
79
+ mockApis.mockResolvedValue(APIS_RESULT);
80
+ await run('--json');
81
+ expect(logSpy).toHaveBeenCalledTimes(1);
82
+ const parsed = JSON.parse(logSpy.mock.calls[0][0]);
83
+ expect(parsed).toEqual(APIS_RESULT);
84
+ });
85
+ it('passes filter options to client', async () => {
86
+ mockApis.mockResolvedValue({ ...APIS_RESULT, data: [] });
87
+ await run('--service', 'openai', '--category', 'llm', '--sort', 'price_asc');
88
+ expect(mockApis).toHaveBeenCalledWith(expect.objectContaining({ service: 'openai', category: 'llm', sort: 'price_asc' }));
89
+ });
90
+ it('shows empty message when no listings', async () => {
91
+ mockApis.mockResolvedValue({ data: [], cursor: null, has_more: false });
92
+ await run();
93
+ const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
94
+ expect(output).toContain('No listings found');
95
+ });
96
+ it('shows more results hint when has_more is true', async () => {
97
+ mockApis.mockResolvedValue({ ...APIS_RESULT, has_more: true });
98
+ await run();
99
+ const output = logSpy.mock.calls.map((c) => c[0]).join('\n');
100
+ expect(output).toContain('More results available');
101
+ });
102
+ });
103
+ //# sourceMappingURL=apis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apis.test.js","sourceRoot":"","sources":["../../src/commands/apis.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Register the `proxygate balance` command.
4
+ *
5
+ * Displays the vault balance breakdown: total, pending settlement,
6
+ * available, and cooldown status.
7
+ */
8
+ export declare function registerBalanceCommand(program: Command): void;
9
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C7D"}
@@ -0,0 +1,50 @@
1
+ import { ProxyGateError } from '@proxygate/sdk';
2
+ import { getClient } from '../helpers.js';
3
+ import { bold, green, yellow, red, dim, formatUsdc } from '../format.js';
4
+ /**
5
+ * Register the `proxygate balance` command.
6
+ *
7
+ * Displays the vault balance breakdown: total, pending settlement,
8
+ * available, and cooldown status.
9
+ */
10
+ export function registerBalanceCommand(program) {
11
+ program
12
+ .command('balance')
13
+ .description('Show your USDC vault balance (total, available, pending, cooldown)')
14
+ .addHelpText('after', '\nExamples:\n' +
15
+ ' $ proxygate balance\n' +
16
+ ' $ proxygate balance --json # Machine-readable output\n' +
17
+ ' $ proxygate balance --json | jq .available')
18
+ .action(async () => {
19
+ const parentOpts = program.opts();
20
+ try {
21
+ const client = await getClient(parentOpts);
22
+ const result = await client.vault.balance();
23
+ if (parentOpts.json) {
24
+ console.log(JSON.stringify(result, null, 2));
25
+ return;
26
+ }
27
+ console.log(bold('Vault Balance'));
28
+ console.log();
29
+ console.log(` ${green('Total:')} ${formatUsdc(result.balance)}`);
30
+ console.log(` ${dim('Pending Settlement:')} ${formatUsdc(result.pending_settlement)}`);
31
+ console.log(` ${green('Available:')} ${formatUsdc(result.available)}`);
32
+ if (result.in_cooldown) {
33
+ console.log(` ${yellow('Cooldown:')} Yes`);
34
+ }
35
+ else {
36
+ console.log(` ${dim('Cooldown:')} No`);
37
+ }
38
+ }
39
+ catch (err) {
40
+ if (err instanceof ProxyGateError) {
41
+ console.error(red(`Error [${err.code}]: ${err.message}`));
42
+ if (err.action)
43
+ console.error(dim(`Suggestion: ${err.action}`));
44
+ process.exit(1);
45
+ }
46
+ throw err;
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,oEAAoE,CAAC;SACjF,WAAW,CACV,OAAO,EACP,eAAe;QACb,yBAAyB;QACzB,mEAAmE;QACnE,8CAA8C,CACjD;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAA0D,CAAC;QAE1F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAE5C,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,qBAAqB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,aAAa,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC1D,IAAI,GAAG,CAAC,MAAM;oBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=balance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.test.d.ts","sourceRoot":"","sources":["../../src/commands/balance.test.ts"],"names":[],"mappings":""}