@maudecode/talaria-web-contracts 0.0.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 (79) hide show
  1. package/dist/index.d.ts +14 -0
  2. package/dist/index.js +15 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/openapi.d.ts +7 -0
  5. package/dist/openapi.js +29 -0
  6. package/dist/openapi.js.map +1 -0
  7. package/dist/router.d.ts +4772 -0
  8. package/dist/router.js +25 -0
  9. package/dist/router.js.map +1 -0
  10. package/dist/routes/automation.d.ts +794 -0
  11. package/dist/routes/automation.js +70 -0
  12. package/dist/routes/automation.js.map +1 -0
  13. package/dist/routes/chat.d.ts +382 -0
  14. package/dist/routes/chat.js +33 -0
  15. package/dist/routes/chat.js.map +1 -0
  16. package/dist/routes/core.d.ts +400 -0
  17. package/dist/routes/core.js +128 -0
  18. package/dist/routes/core.js.map +1 -0
  19. package/dist/routes/git.d.ts +785 -0
  20. package/dist/routes/git.js +62 -0
  21. package/dist/routes/git.js.map +1 -0
  22. package/dist/routes/raw.d.ts +24 -0
  23. package/dist/routes/raw.js +107 -0
  24. package/dist/routes/raw.js.map +1 -0
  25. package/dist/routes/sessions.d.ts +1621 -0
  26. package/dist/routes/sessions.js +75 -0
  27. package/dist/routes/sessions.js.map +1 -0
  28. package/dist/routes/settings.d.ts +590 -0
  29. package/dist/routes/settings.js +57 -0
  30. package/dist/routes/settings.js.map +1 -0
  31. package/dist/routes/tools.d.ts +482 -0
  32. package/dist/routes/tools.js +65 -0
  33. package/dist/routes/tools.js.map +1 -0
  34. package/dist/routes/workspaces.d.ts +161 -0
  35. package/dist/routes/workspaces.js +31 -0
  36. package/dist/routes/workspaces.js.map +1 -0
  37. package/dist/sidecar/index.d.ts +5 -0
  38. package/dist/sidecar/index.js +6 -0
  39. package/dist/sidecar/index.js.map +1 -0
  40. package/dist/sidecar/methods.d.ts +1544 -0
  41. package/dist/sidecar/methods.js +38 -0
  42. package/dist/sidecar/methods.js.map +1 -0
  43. package/dist/sidecar/namespaces.d.ts +1766 -0
  44. package/dist/sidecar/namespaces.js +239 -0
  45. package/dist/sidecar/namespaces.js.map +1 -0
  46. package/dist/sidecar/rpc.d.ts +96 -0
  47. package/dist/sidecar/rpc.js +49 -0
  48. package/dist/sidecar/rpc.js.map +1 -0
  49. package/dist/sidecar/runtime.d.ts +53 -0
  50. package/dist/sidecar/runtime.js +29 -0
  51. package/dist/sidecar/runtime.js.map +1 -0
  52. package/dist/sidecar/version.d.ts +6 -0
  53. package/dist/sidecar/version.js +7 -0
  54. package/dist/sidecar/version.js.map +1 -0
  55. package/dist/sse.d.ts +335 -0
  56. package/dist/sse.js +91 -0
  57. package/dist/sse.js.map +1 -0
  58. package/dist/views.d.ts +2200 -0
  59. package/dist/views.js +249 -0
  60. package/dist/views.js.map +1 -0
  61. package/fixtures/sidecar/aux.json +14 -0
  62. package/fixtures/sidecar/commands.json +1232 -0
  63. package/fixtures/sidecar/config.json +15 -0
  64. package/fixtures/sidecar/cron.json +503 -0
  65. package/fixtures/sidecar/goals.json +164 -0
  66. package/fixtures/sidecar/kanban.json +952 -0
  67. package/fixtures/sidecar/mcp.json +22 -0
  68. package/fixtures/sidecar/models.json +63 -0
  69. package/fixtures/sidecar/plugins.json +1069 -0
  70. package/fixtures/sidecar/process.json +58 -0
  71. package/fixtures/sidecar/profiles.json +82 -0
  72. package/fixtures/sidecar/providers.json +1201 -0
  73. package/fixtures/sidecar/rpc.json +120 -0
  74. package/fixtures/sidecar/runtime.json +75 -0
  75. package/fixtures/sidecar/skills.json +490 -0
  76. package/fixtures/sidecar/state_db.json +61 -0
  77. package/fixtures/sidecar/stt.json +13 -0
  78. package/fixtures/sidecar/text.json +41 -0
  79. package/package.json +49 -0
@@ -0,0 +1,1069 @@
1
+ {
2
+ "plugins.list": [
3
+ {
4
+ "params": {
5
+ "profile_home": "<home>"
6
+ },
7
+ "result": {
8
+ "plugins": [
9
+ {
10
+ "name": "a2a-platform",
11
+ "key": "a2a-platform",
12
+ "version": "1.0.0",
13
+ "description": "A2A (Agent-to-Agent) protocol v1.0 support for Hermes Agent — both directions of the open Linux Foundation standard for inter-agent communication. OUTBOUND (client tools): a2a_discover, a2a_call, a2a_list, a2a_history, and a2a_orchestrate let the agent fetch another agent's Agen…",
14
+ "enabled": true,
15
+ "kind": "platform",
16
+ "activation": "enabled",
17
+ "hooks": [],
18
+ "is_active_provider": false
19
+ },
20
+ {
21
+ "name": "browser-browser-use",
22
+ "key": "browser/browser_use",
23
+ "version": "1.0.0",
24
+ "description": "Browser Use (https://browser-use.com) cloud browser backend. Supports both direct BROWSER_USE_API_KEY and the managed Nous tool gateway. Also powers the 'Nous Subscription' UX flow that bills usage to a Nous subscription.",
25
+ "enabled": true,
26
+ "kind": "backend",
27
+ "activation": "enabled",
28
+ "hooks": [],
29
+ "is_active_provider": false
30
+ },
31
+ {
32
+ "name": "browser-browserbase",
33
+ "key": "browser/browserbase",
34
+ "version": "1.0.0",
35
+ "description": "Browserbase (https://browserbase.com) cloud browser backend. Requires BROWSERBASE_API_KEY + BROWSERBASE_PROJECT_ID. Supports stealth, proxies, and keep-alive sessions; auto-falls-back when paid features are unavailable.",
36
+ "enabled": true,
37
+ "kind": "backend",
38
+ "activation": "enabled",
39
+ "hooks": [],
40
+ "is_active_provider": false
41
+ },
42
+ {
43
+ "name": "browser-firecrawl",
44
+ "key": "browser/firecrawl",
45
+ "version": "1.0.0",
46
+ "description": "Firecrawl (https://firecrawl.dev) cloud browser backend. Requires FIRECRAWL_API_KEY. Distinct from the firecrawl WEB search/extract plugin — the two share an API key but operate on different endpoints.",
47
+ "enabled": true,
48
+ "kind": "backend",
49
+ "activation": "enabled",
50
+ "hooks": [],
51
+ "is_active_provider": false
52
+ },
53
+ {
54
+ "name": "buzz-platform",
55
+ "key": "buzz-platform",
56
+ "version": "1.0.0",
57
+ "description": "Buzz gateway adapter for Hermes Agent. Connects to a Buzz community relay (Block's open-source human+agent collaboration platform built on Nostr) and relays messages between channels/DMs and the Hermes agent. Relay operations shell out to the buzz CLI binary (JSON in/out); verif…",
58
+ "enabled": true,
59
+ "kind": "platform",
60
+ "activation": "enabled",
61
+ "hooks": [],
62
+ "is_active_provider": false
63
+ },
64
+ {
65
+ "name": "chronos",
66
+ "key": "cron_providers/chronos",
67
+ "version": "1.0.0",
68
+ "description": "Chronos — NAS-mediated managed cron provider for scale-to-zero hosted agents. Delegates the \"wake me at time T\" trigger to Nous infrastructure so an idle gateway can scale to zero and still fire cron jobs. The agent computes each job's next-fire time and asks NAS to arm a one-sh…",
69
+ "enabled": false,
70
+ "kind": "standalone",
71
+ "activation": "disabled",
72
+ "hooks": [],
73
+ "is_active_provider": false
74
+ },
75
+ {
76
+ "name": "basic",
77
+ "key": "dashboard_auth/basic",
78
+ "version": "1.0.0",
79
+ "description": "Dashboard auth provider — username/password (no OAuth IDP). A self-hosted 'just put a password on my dashboard' provider. Activates when dashboard.basic_auth.username plus a password (or password_hash) are configured via config.yaml (canonical surface) or the HERMES_DASHBOARD_BA…",
80
+ "enabled": true,
81
+ "kind": "backend",
82
+ "activation": "enabled",
83
+ "hooks": [],
84
+ "is_active_provider": false
85
+ },
86
+ {
87
+ "name": "drain",
88
+ "key": "dashboard_auth/drain",
89
+ "version": "1.0.0",
90
+ "description": "Dashboard auth provider — non-interactive shared-bearer-secret for the gateway drain-control endpoint. The first consumer of the generic token-auth capability (supports_token/verify_token). nous-account-service provisions a per-agent unique secret via HERMES_DASHBOARD_DRAIN_SECR…",
91
+ "enabled": true,
92
+ "kind": "backend",
93
+ "activation": "enabled",
94
+ "hooks": [],
95
+ "is_active_provider": false
96
+ },
97
+ {
98
+ "name": "nous",
99
+ "key": "dashboard_auth/nous",
100
+ "version": "1.0.0",
101
+ "description": "Dashboard auth provider — OAuth 2.0 (authorization-code + PKCE) against Nous Portal. Auto-activates when a client_id is configured via either dashboard.oauth.client_id in config.yaml (canonical surface) or HERMES_DASHBOARD_OAUTH_CLIENT_ID env var (operator override; Portal injec…",
102
+ "enabled": true,
103
+ "kind": "backend",
104
+ "activation": "enabled",
105
+ "hooks": [],
106
+ "is_active_provider": false
107
+ },
108
+ {
109
+ "name": "self-hosted",
110
+ "key": "dashboard_auth/self_hosted",
111
+ "version": "1.0.0",
112
+ "description": "Dashboard auth provider — generic self-hosted OpenID Connect (authorization-code + PKCE, public client). Works against any conformant OIDC identity provider (Authentik, Keycloak, Zitadel, Authelia, Auth0, Okta, Google, …) via OIDC discovery. Auto-activates when an issuer + clien…",
113
+ "enabled": true,
114
+ "kind": "backend",
115
+ "activation": "enabled",
116
+ "hooks": [],
117
+ "is_active_provider": false
118
+ },
119
+ {
120
+ "name": "dingtalk-platform",
121
+ "key": "dingtalk-platform",
122
+ "version": "1.0.0",
123
+ "description": "DingTalk gateway adapter for Hermes Agent. Connects to DingTalk via the dingtalk-stream SDK (Stream Mode) and relays messages between DingTalk chats and the Hermes agent. Supports text, images, audio, video, rich text, files, group @mention gating, free-response chats, and per-u…",
124
+ "enabled": true,
125
+ "kind": "platform",
126
+ "activation": "enabled",
127
+ "hooks": [],
128
+ "is_active_provider": false
129
+ },
130
+ {
131
+ "name": "discord-platform",
132
+ "key": "discord-platform",
133
+ "version": "1.0.0",
134
+ "description": "Discord gateway adapter for Hermes Agent. Connects to Discord via the discord.py library and relays messages between Discord guilds/DMs and the Hermes agent. Supports voice mode, slash commands, free-response channels, role-based DM auth, threads, reactions, and channel skill bi…",
135
+ "enabled": true,
136
+ "kind": "platform",
137
+ "activation": "enabled",
138
+ "hooks": [],
139
+ "is_active_provider": false
140
+ },
141
+ {
142
+ "name": "disk-cleanup",
143
+ "key": "disk-cleanup",
144
+ "version": "2.0.0",
145
+ "description": "Auto-track and clean up ephemeral files (test scripts, temp outputs, cron logs) created during Hermes sessions. Runs via plugin hooks — no agent action required.",
146
+ "enabled": false,
147
+ "kind": "standalone",
148
+ "activation": "disabled",
149
+ "hooks": [],
150
+ "is_active_provider": false
151
+ },
152
+ {
153
+ "name": "email-platform",
154
+ "key": "email-platform",
155
+ "version": "1.0.0",
156
+ "description": "Email gateway adapter for Hermes Agent. Polls an IMAP mailbox for inbound messages and replies over SMTP, relaying email threads to and from the Hermes agent.",
157
+ "enabled": true,
158
+ "kind": "platform",
159
+ "activation": "enabled",
160
+ "hooks": [],
161
+ "is_active_provider": false
162
+ },
163
+ {
164
+ "name": "feishu-platform",
165
+ "key": "feishu-platform",
166
+ "version": "1.0.0",
167
+ "description": "Feishu / Lark gateway adapter for Hermes Agent. Connects to Feishu (China) or Lark (International) via the official lark-oapi SDK over WebSocket or webhook and relays messages between Feishu/Lark chats and the Hermes agent. Supports text, images, video, voice, documents, threads…",
168
+ "enabled": true,
169
+ "kind": "platform",
170
+ "activation": "enabled",
171
+ "hooks": [],
172
+ "is_active_provider": false
173
+ },
174
+ {
175
+ "name": "google_chat-platform",
176
+ "key": "google_chat-platform",
177
+ "version": "1.0.0",
178
+ "description": "Google Chat gateway adapter for Hermes Agent. Connects through authenticated HTTP callbacks or an optional Cloud Pub/Sub pull subscription for inbound events, and uses the Google Chat REST API for outbound messages. Native file attachments are delivered via per-user OAuth (each…",
179
+ "enabled": true,
180
+ "kind": "platform",
181
+ "activation": "enabled",
182
+ "hooks": [],
183
+ "is_active_provider": false
184
+ },
185
+ {
186
+ "name": "google_meet",
187
+ "key": "google_meet",
188
+ "version": "0.2.0",
189
+ "description": "Join a Google Meet call, transcribe live captions, speak in realtime, and follow up afterwards. v1 transcribe-only is the default; v2 realtime duplex audio via OpenAI Realtime + BlackHole/PulseAudio ships with mode='realtime'; v3 remote node host lets the bot run on a different…",
190
+ "enabled": false,
191
+ "kind": "standalone",
192
+ "activation": "disabled",
193
+ "hooks": [],
194
+ "is_active_provider": false
195
+ },
196
+ {
197
+ "name": "homeassistant-platform",
198
+ "key": "homeassistant-platform",
199
+ "version": "1.0.0",
200
+ "description": "Home Assistant gateway adapter for Hermes Agent. Subscribes to HA's WebSocket event bus and forwards state-change events (with per-entity cooldowns and domain/entity filtering) to the agent. Outbound messages are delivered as HA persistent notifications via the REST API. Out-of-…",
201
+ "enabled": true,
202
+ "kind": "platform",
203
+ "activation": "enabled",
204
+ "hooks": [],
205
+ "is_active_provider": false
206
+ },
207
+ {
208
+ "name": "deepinfra",
209
+ "key": "image_gen/deepinfra",
210
+ "version": "1.0.0",
211
+ "description": "DeepInfra image generation backend (FLUX, Qwen-Image, …) via OpenAI-compatible /v1/images/generations. Catalog discovered live from api.deepinfra.com.",
212
+ "enabled": true,
213
+ "kind": "backend",
214
+ "activation": "enabled",
215
+ "hooks": [],
216
+ "is_active_provider": false
217
+ },
218
+ {
219
+ "name": "fal",
220
+ "key": "image_gen/fal",
221
+ "version": "1.0.0",
222
+ "description": "FAL.ai image generation backend (flux-2-klein, flux-2-pro, nano-banana-2, nano-banana-pro, gpt-image-1.5, recraft-v3, etc.).",
223
+ "enabled": true,
224
+ "kind": "backend",
225
+ "activation": "enabled",
226
+ "hooks": [],
227
+ "is_active_provider": false
228
+ },
229
+ {
230
+ "name": "krea",
231
+ "key": "image_gen/krea",
232
+ "version": "1.1.0",
233
+ "description": "Krea image generation backend (Krea 2 Large + Medium + Medium Turbo foundation models). Direct KREA_API_KEY or managed Nous Subscription gateway.",
234
+ "enabled": true,
235
+ "kind": "backend",
236
+ "activation": "enabled",
237
+ "hooks": [],
238
+ "is_active_provider": false
239
+ },
240
+ {
241
+ "name": "meta-ai-image-gen",
242
+ "key": "image_gen/meta-ai",
243
+ "version": "1.0.0",
244
+ "description": "Meta Model API image generation backend (muse-image). OpenAI-compatible /v1/images/generations. Saves images to $HERMES_HOME/cache/images/.",
245
+ "enabled": true,
246
+ "kind": "backend",
247
+ "activation": "enabled",
248
+ "hooks": [],
249
+ "is_active_provider": false
250
+ },
251
+ {
252
+ "name": "openai",
253
+ "key": "image_gen/openai",
254
+ "version": "1.0.0",
255
+ "description": "OpenAI image generation backend (GPT Image 2 and GPT Image 2.5 Flare/Sunburst). Saves generated images to $HERMES_HOME/cache/images/.",
256
+ "enabled": true,
257
+ "kind": "backend",
258
+ "activation": "enabled",
259
+ "hooks": [],
260
+ "is_active_provider": false
261
+ },
262
+ {
263
+ "name": "openai-codex",
264
+ "key": "image_gen/openai-codex",
265
+ "version": "1.0.0",
266
+ "description": "OpenAI image generation backed by ChatGPT/Codex OAuth (gpt-image-2 via the native Codex images/generations and images/edits endpoints). Saves generated images to $HERMES_HOME/cache/images/.",
267
+ "enabled": true,
268
+ "kind": "backend",
269
+ "activation": "enabled",
270
+ "hooks": [],
271
+ "is_active_provider": false
272
+ },
273
+ {
274
+ "name": "openrouter",
275
+ "key": "image_gen/openrouter",
276
+ "version": "1.1.0",
277
+ "description": "OpenRouter + Nous Portal image generation. Chat-completions image output (reference-grounded) plus OpenRouter's Dedicated Image API (/images/generations) for gpt-image-2, Krea 2, Qwen Image 3 Pro, MAI-Image-2.5 and Grok Imagine — exact per-model aspect ratios, resolution/quality…",
278
+ "enabled": true,
279
+ "kind": "backend",
280
+ "activation": "enabled",
281
+ "hooks": [],
282
+ "is_active_provider": false
283
+ },
284
+ {
285
+ "name": "xai",
286
+ "key": "image_gen/xai",
287
+ "version": "1.0.0",
288
+ "description": "xAI image generation backend (grok-imagine-image). Text-to-image.",
289
+ "enabled": true,
290
+ "kind": "backend",
291
+ "activation": "enabled",
292
+ "hooks": [],
293
+ "is_active_provider": false
294
+ },
295
+ {
296
+ "name": "irc-platform",
297
+ "key": "irc-platform",
298
+ "version": "1.0.0",
299
+ "description": "IRC gateway adapter for Hermes Agent. Connects to an IRC server and relays messages between an IRC channel (or DMs) and the Hermes agent. No external dependencies — uses Python's stdlib asyncio for the IRC protocol.",
300
+ "enabled": true,
301
+ "kind": "platform",
302
+ "activation": "enabled",
303
+ "hooks": [],
304
+ "is_active_provider": false
305
+ },
306
+ {
307
+ "name": "line-platform",
308
+ "key": "line-platform",
309
+ "version": "1.0.0",
310
+ "description": "LINE Messaging API gateway adapter for Hermes Agent. Runs an aiohttp webhook server that receives LINE webhook events (with HMAC-SHA256 signature verification) and relays messages between LINE chats (1:1, groups, rooms) and the Hermes agent. Outbound replies prefer the free repl…",
311
+ "enabled": true,
312
+ "kind": "platform",
313
+ "activation": "enabled",
314
+ "hooks": [],
315
+ "is_active_provider": false
316
+ },
317
+ {
318
+ "name": "matrix-platform",
319
+ "key": "matrix-platform",
320
+ "version": "1.0.0",
321
+ "description": "Matrix gateway adapter for Hermes Agent. Connects to a Matrix homeserver via mautrix (with optional E2EE) and relays messages between Matrix rooms/DMs and the Hermes agent. Supports threads, HTML/markdown rendering, native media uploads, mention gating, free-response rooms, and…",
322
+ "enabled": true,
323
+ "kind": "platform",
324
+ "activation": "enabled",
325
+ "hooks": [],
326
+ "is_active_provider": false
327
+ },
328
+ {
329
+ "name": "mattermost-platform",
330
+ "key": "mattermost-platform",
331
+ "version": "1.0.0",
332
+ "description": "Mattermost gateway adapter for Hermes Agent. Connects to a self-hosted or cloud Mattermost instance via the v4 REST API + WebSocket event stream and relays messages between Mattermost channels/DMs and the Hermes agent. Supports thread-mode replies, native file uploads, channel-s…",
333
+ "enabled": true,
334
+ "kind": "platform",
335
+ "activation": "enabled",
336
+ "hooks": [],
337
+ "is_active_provider": false
338
+ },
339
+ {
340
+ "name": "ntfy-platform",
341
+ "key": "ntfy-platform",
342
+ "version": "1.0.0",
343
+ "description": "ntfy push-notification gateway adapter for Hermes Agent. Subscribes to a topic on ntfy.sh or any self-hosted ntfy server via HTTP streaming, and publishes replies via HTTP POST. Lightweight — no external SDK, only httpx (already a Hermes dependency). ntfy has no native user-iden…",
344
+ "enabled": true,
345
+ "kind": "platform",
346
+ "activation": "enabled",
347
+ "hooks": [],
348
+ "is_active_provider": false
349
+ },
350
+ {
351
+ "name": "langfuse",
352
+ "key": "observability/langfuse",
353
+ "version": "1.0.0",
354
+ "description": "Optional Langfuse observability for Hermes — traces conversations, LLM calls, and tool usage. Opt-in via `hermes plugins enable observability/langfuse` or `hermes tools → Langfuse Observability`.",
355
+ "enabled": false,
356
+ "kind": "standalone",
357
+ "activation": "disabled",
358
+ "hooks": [],
359
+ "is_active_provider": false
360
+ },
361
+ {
362
+ "name": "photon-platform",
363
+ "key": "photon-platform",
364
+ "version": "0.3.0",
365
+ "description": "Photon Spectrum gateway adapter for Hermes Agent. Connects to iMessage (and other Spectrum interfaces) through Photon's managed Spectrum platform. Both directions run over the `spectrum-ts` SDK's long-lived gRPC stream via a small supervised Node sidecar — inbound messages arriv…",
366
+ "enabled": true,
367
+ "kind": "platform",
368
+ "activation": "enabled",
369
+ "hooks": [],
370
+ "is_active_provider": false
371
+ },
372
+ {
373
+ "name": "raft-platform",
374
+ "key": "raft-platform",
375
+ "version": "1.0.0",
376
+ "description": "Raft gateway adapter for Hermes Agent. Connects to a Raft workspace as an external agent via a local wake-channel bridge. The adapter starts a loopback HTTP endpoint that receives content-free wake hints from the bridge, then injects them into the Hermes gateway session pipeline…",
377
+ "enabled": true,
378
+ "kind": "platform",
379
+ "activation": "enabled",
380
+ "hooks": [],
381
+ "is_active_provider": false
382
+ },
383
+ {
384
+ "name": "security-guidance",
385
+ "key": "security-guidance",
386
+ "version": "0.1.0",
387
+ "description": "Append security warnings to file-write tool results when the new content contains known-dangerous patterns (pickle.load, yaml.load, eval(, os.system, dangerouslySetInnerHTML, verify=False, ECB, XXE, GitHub Actions injection, ...). 25 regex/substring rules forked from Anthropic's…",
388
+ "enabled": false,
389
+ "kind": "standalone",
390
+ "activation": "disabled",
391
+ "hooks": [],
392
+ "is_active_provider": false
393
+ },
394
+ {
395
+ "name": "simplex-platform",
396
+ "key": "simplex-platform",
397
+ "version": "1.1.0",
398
+ "description": "SimpleX Chat gateway adapter for Hermes Agent. Connects to a local simplex-chat daemon via WebSocket and relays messages between SimpleX contacts/groups and the Hermes agent. SimpleX is decentralised and assigns no persistent user IDs — every contact is an opaque internal ID gen…",
399
+ "enabled": true,
400
+ "kind": "platform",
401
+ "activation": "enabled",
402
+ "hooks": [],
403
+ "is_active_provider": false
404
+ },
405
+ {
406
+ "name": "slack-platform",
407
+ "key": "slack-platform",
408
+ "version": "1.0.0",
409
+ "description": "Slack gateway adapter for Hermes Agent. Connects to Slack via slack-bolt in Socket Mode and relays messages between Slack channels/DMs and the Hermes agent. Supports slash commands, threads, mrkdwn rendering, approval blocks, free-response channels, mention gating, and channel s…",
410
+ "enabled": true,
411
+ "kind": "platform",
412
+ "activation": "enabled",
413
+ "hooks": [],
414
+ "is_active_provider": false
415
+ },
416
+ {
417
+ "name": "sms-platform",
418
+ "key": "sms-platform",
419
+ "version": "1.0.0",
420
+ "description": "SMS gateway adapter for Hermes Agent via Twilio. Sends and receives SMS through the Twilio REST API + inbound webhook, relaying texts between phone numbers and the Hermes agent. Markdown is stripped to plain text.",
421
+ "enabled": true,
422
+ "kind": "platform",
423
+ "activation": "enabled",
424
+ "hooks": [],
425
+ "is_active_provider": false
426
+ },
427
+ {
428
+ "name": "spotify",
429
+ "key": "spotify",
430
+ "version": "1.0.0",
431
+ "description": "Native Spotify integration — 7 tools (playback, devices, queue, search, playlists, albums, library) using Spotify Web API + PKCE OAuth. Auth via `hermes auth spotify`. Tools gate on `providers.spotify` in ~/.hermes/auth.json.",
432
+ "enabled": true,
433
+ "kind": "backend",
434
+ "activation": "enabled",
435
+ "hooks": [],
436
+ "is_active_provider": false
437
+ },
438
+ {
439
+ "name": "teams-platform",
440
+ "key": "teams-platform",
441
+ "version": "1.0.0",
442
+ "description": "Microsoft Teams gateway adapter for Hermes Agent. Connects to Microsoft Teams via the Bot Framework and relays messages between Teams chats (personal DMs, group chats, channel posts) and the Hermes agent. Supports Adaptive Card approval prompts.",
443
+ "enabled": true,
444
+ "kind": "platform",
445
+ "activation": "enabled",
446
+ "hooks": [],
447
+ "is_active_provider": false
448
+ },
449
+ {
450
+ "name": "teams_pipeline",
451
+ "key": "teams_pipeline",
452
+ "version": "0.1.0",
453
+ "description": "Microsoft Teams meeting pipeline plugin with durable runtime state and operator CLI flows for Graph-backed transcript-first meeting summaries.",
454
+ "enabled": false,
455
+ "kind": "standalone",
456
+ "activation": "disabled",
457
+ "hooks": [],
458
+ "is_active_provider": false
459
+ },
460
+ {
461
+ "name": "telegram-platform",
462
+ "key": "telegram-platform",
463
+ "version": "1.0.0",
464
+ "description": "Telegram gateway adapter for Hermes Agent. Connects to Telegram via python-telegram-bot and relays messages between Telegram chats/groups/topics and the Hermes agent. Supports threads/topics, streaming edits, native media, inline keyboards, slash commands, fallback network trans…",
465
+ "enabled": true,
466
+ "kind": "platform",
467
+ "activation": "enabled",
468
+ "hooks": [],
469
+ "is_active_provider": false
470
+ },
471
+ {
472
+ "name": "deepinfra",
473
+ "key": "video_gen/deepinfra",
474
+ "version": "1.0.0",
475
+ "description": "DeepInfra video generation (text-to-video & image-to-video) via the OpenAI-compatible /v1/openai/videos endpoint. Catalog discovered live from api.deepinfra.com.",
476
+ "enabled": true,
477
+ "kind": "backend",
478
+ "activation": "enabled",
479
+ "hooks": [],
480
+ "is_active_provider": false
481
+ },
482
+ {
483
+ "name": "fal",
484
+ "key": "video_gen/fal",
485
+ "version": "1.0.0",
486
+ "description": "FAL.ai video generation backend. Multi-model — Veo 3.1, Kling, Pixverse — covering text-to-video and image-to-video via fal_client's queue API.",
487
+ "enabled": true,
488
+ "kind": "backend",
489
+ "activation": "enabled",
490
+ "hooks": [],
491
+ "is_active_provider": false
492
+ },
493
+ {
494
+ "name": "openrouter",
495
+ "key": "video_gen/openrouter",
496
+ "version": "1.0.0",
497
+ "description": "OpenRouter video generation backend. Every generative model on the /api/v1/videos API (Veo, Sora, Kling, Seedance, Wan, Hailuo, Grok Imagine, FLUX Video, …) — text-to-video, image-to-video and reference-to-video; catalog and per-model limits discovered live.",
498
+ "enabled": true,
499
+ "kind": "backend",
500
+ "activation": "enabled",
501
+ "hooks": [],
502
+ "is_active_provider": false
503
+ },
504
+ {
505
+ "name": "xai",
506
+ "key": "video_gen/xai",
507
+ "version": "1.0.0",
508
+ "description": "xAI Grok Imagine video generation backend. Supports text-to-video, image-to-video, reference-to-video, video editing, video extension, and stored public URLs via the xAI async videos API.",
509
+ "enabled": true,
510
+ "kind": "backend",
511
+ "activation": "enabled",
512
+ "hooks": [],
513
+ "is_active_provider": false
514
+ },
515
+ {
516
+ "name": "web-brave-free",
517
+ "key": "web/brave_free",
518
+ "version": "1.0.0",
519
+ "description": "Brave Search (free tier) — web search via Brave's Data-for-Search API. Requires BRAVE_SEARCH_API_KEY (free signup at https://brave.com/search/api/, 2k queries/month).",
520
+ "enabled": true,
521
+ "kind": "backend",
522
+ "activation": "enabled",
523
+ "hooks": [],
524
+ "is_active_provider": false
525
+ },
526
+ {
527
+ "name": "web-ddgs",
528
+ "key": "web/ddgs",
529
+ "version": "1.0.0",
530
+ "description": "DuckDuckGo web search via the ddgs Python package — no API key required. Install with `pip install ddgs`.",
531
+ "enabled": true,
532
+ "kind": "backend",
533
+ "activation": "enabled",
534
+ "hooks": [],
535
+ "is_active_provider": false
536
+ },
537
+ {
538
+ "name": "web-exa",
539
+ "key": "web/exa",
540
+ "version": "1.0.0",
541
+ "description": "Exa web search and content extraction. Requires EXA_API_KEY — sign up at https://exa.ai.",
542
+ "enabled": true,
543
+ "kind": "backend",
544
+ "activation": "enabled",
545
+ "hooks": [],
546
+ "is_active_provider": false
547
+ },
548
+ {
549
+ "name": "web-firecrawl",
550
+ "key": "web/firecrawl",
551
+ "version": "1.0.0",
552
+ "description": "Firecrawl web search + content extraction. Supports keyless cloud, direct API, and Nous-hosted tool-gateway routing for subscribers.",
553
+ "enabled": true,
554
+ "kind": "backend",
555
+ "activation": "enabled",
556
+ "hooks": [],
557
+ "is_active_provider": false
558
+ },
559
+ {
560
+ "name": "web-keenable",
561
+ "key": "web/keenable",
562
+ "version": "1.0.0",
563
+ "description": "Keenable web search + page fetch (independent web index for AI apps). Works keyless on Keenable's free tier as part of the default rotation; set KEENABLE_API_KEY for higher limits — https://keenable.ai.",
564
+ "enabled": true,
565
+ "kind": "backend",
566
+ "activation": "enabled",
567
+ "hooks": [],
568
+ "is_active_provider": false
569
+ },
570
+ {
571
+ "name": "web-parallel",
572
+ "key": "web/parallel",
573
+ "version": "1.0.0",
574
+ "description": "Parallel.ai web search + content extraction. Search returns objective-tuned results; extract uses the async SDK for parallel page fetches. Requires PARALLEL_API_KEY — sign up at https://parallel.ai.",
575
+ "enabled": true,
576
+ "kind": "backend",
577
+ "activation": "enabled",
578
+ "hooks": [],
579
+ "is_active_provider": false
580
+ },
581
+ {
582
+ "name": "web-perplexity",
583
+ "key": "web/perplexity",
584
+ "version": "1.0.0",
585
+ "description": "Perplexity Search API web search and query-relevant page snippets. Requires PERPLEXITY_API_KEY — get one at https://www.perplexity.ai/account/api.",
586
+ "enabled": true,
587
+ "kind": "backend",
588
+ "activation": "enabled",
589
+ "hooks": [],
590
+ "is_active_provider": false
591
+ },
592
+ {
593
+ "name": "web-searxng",
594
+ "key": "web/searxng",
595
+ "version": "1.0.0",
596
+ "description": "SearXNG web search — free, self-hosted, privacy-respecting metasearch engine. Requires SEARXNG_URL pointing at your instance.",
597
+ "enabled": true,
598
+ "kind": "backend",
599
+ "activation": "enabled",
600
+ "hooks": [],
601
+ "is_active_provider": false
602
+ },
603
+ {
604
+ "name": "web-tavily",
605
+ "key": "web/tavily",
606
+ "version": "1.0.0",
607
+ "description": "Tavily web search + extract. Opt-in keyless via hermes tools; set TAVILY_API_KEY for higher limits — https://app.tavily.com/home.",
608
+ "enabled": true,
609
+ "kind": "backend",
610
+ "activation": "enabled",
611
+ "hooks": [],
612
+ "is_active_provider": false
613
+ },
614
+ {
615
+ "name": "web-xai",
616
+ "key": "web/xai",
617
+ "version": "1.0.0",
618
+ "description": "xAI Web Search — search the web via Grok's agentic web_search tool (Responses API). Requires xAI Grok OAuth (via `hermes auth`) or XAI_API_KEY (https://x.ai).",
619
+ "enabled": true,
620
+ "kind": "backend",
621
+ "activation": "enabled",
622
+ "hooks": [],
623
+ "is_active_provider": false
624
+ },
625
+ {
626
+ "name": "wecom-platform",
627
+ "key": "wecom-platform",
628
+ "version": "1.0.0",
629
+ "description": "WeCom / Enterprise WeChat gateway adapter for Hermes Agent. Registers two platforms: ``wecom`` (Smart Robot over WebSocket) and ``wecom_callback`` (self-built apps over an HTTP callback endpoint with AES message crypto). Relays messages between WeCom chats and the Hermes agent.",
630
+ "enabled": true,
631
+ "kind": "platform",
632
+ "activation": "enabled",
633
+ "hooks": [],
634
+ "is_active_provider": false
635
+ },
636
+ {
637
+ "name": "whatsapp-platform",
638
+ "key": "whatsapp-platform",
639
+ "version": "1.0.0",
640
+ "description": "WhatsApp gateway adapter for Hermes Agent. Connects to WhatsApp via a local Node.js bridge (WhatsApp Web client) over an HTTP API and relays messages between WhatsApp chats and the Hermes agent. Supports DM/group policies, mention gating, free-response chats, and per-user allowl…",
641
+ "enabled": true,
642
+ "kind": "platform",
643
+ "activation": "enabled",
644
+ "hooks": [],
645
+ "is_active_provider": false
646
+ }
647
+ ],
648
+ "supported_hooks": [
649
+ "pre_tool_call",
650
+ "post_tool_call",
651
+ "pre_llm_call",
652
+ "post_llm_call"
653
+ ]
654
+ }
655
+ }
656
+ ],
657
+ "plugins.providers": [
658
+ {
659
+ "params": {
660
+ "profile_home": "<home>"
661
+ },
662
+ "result": {
663
+ "providers": [
664
+ {
665
+ "name": "actual",
666
+ "display_name": "Actual Computer",
667
+ "env_vars": [
668
+ "ACTUAL_API_KEY"
669
+ ],
670
+ "api_key_env": "ACTUAL_API_KEY"
671
+ },
672
+ {
673
+ "name": "ai-gateway",
674
+ "display_name": "ai-gateway",
675
+ "env_vars": [
676
+ "AI_GATEWAY_API_KEY"
677
+ ],
678
+ "api_key_env": "AI_GATEWAY_API_KEY"
679
+ },
680
+ {
681
+ "name": "alibaba",
682
+ "display_name": "alibaba",
683
+ "env_vars": [
684
+ "DASHSCOPE_API_KEY"
685
+ ],
686
+ "api_key_env": "DASHSCOPE_API_KEY"
687
+ },
688
+ {
689
+ "name": "alibaba-cn",
690
+ "display_name": "Alibaba Cloud DashScope (China)",
691
+ "env_vars": [
692
+ "DASHSCOPE_API_KEY",
693
+ "DASHSCOPE_CN_BASE_URL"
694
+ ],
695
+ "api_key_env": "DASHSCOPE_API_KEY"
696
+ },
697
+ {
698
+ "name": "alibaba-token-plan",
699
+ "display_name": "Alibaba Cloud (Token Plan)",
700
+ "env_vars": [
701
+ "ALIBABA_TOKEN_PLAN_API_KEY",
702
+ "ALIBABA_TOKEN_PLAN_BASE_URL"
703
+ ],
704
+ "api_key_env": "ALIBABA_TOKEN_PLAN_API_KEY"
705
+ },
706
+ {
707
+ "name": "alibaba-token-plan-cn",
708
+ "display_name": "Alibaba Cloud (Token Plan, China)",
709
+ "env_vars": [
710
+ "ALIBABA_TOKEN_PLAN_CN_API_KEY",
711
+ "ALIBABA_TOKEN_PLAN_API_KEY",
712
+ "ALIBABA_TOKEN_PLAN_CN_BASE_URL"
713
+ ],
714
+ "api_key_env": "ALIBABA_TOKEN_PLAN_CN_API_KEY"
715
+ },
716
+ {
717
+ "name": "alibaba-coding-plan",
718
+ "display_name": "Alibaba Cloud (Coding Plan)",
719
+ "env_vars": [
720
+ "ALIBABA_CODING_PLAN_API_KEY",
721
+ "DASHSCOPE_API_KEY",
722
+ "ALIBABA_CODING_PLAN_BASE_URL"
723
+ ],
724
+ "api_key_env": "ALIBABA_CODING_PLAN_API_KEY"
725
+ },
726
+ {
727
+ "name": "alibaba-coding-plan-cn",
728
+ "display_name": "Alibaba Cloud (Coding Plan, China)",
729
+ "env_vars": [
730
+ "ALIBABA_CODING_PLAN_CN_API_KEY",
731
+ "ALIBABA_CODING_PLAN_API_KEY",
732
+ "DASHSCOPE_API_KEY",
733
+ "ALIBABA_CODING_PLAN_CN_BASE_URL"
734
+ ],
735
+ "api_key_env": "ALIBABA_CODING_PLAN_CN_API_KEY"
736
+ },
737
+ {
738
+ "name": "anthropic",
739
+ "display_name": "anthropic",
740
+ "env_vars": [
741
+ "ANTHROPIC_API_KEY",
742
+ "ANTHROPIC_TOKEN",
743
+ "CLAUDE_CODE_OAUTH_TOKEN"
744
+ ],
745
+ "api_key_env": "ANTHROPIC_API_KEY"
746
+ },
747
+ {
748
+ "name": "arcee",
749
+ "display_name": "arcee",
750
+ "env_vars": [
751
+ "ARCEEAI_API_KEY"
752
+ ],
753
+ "api_key_env": "ARCEEAI_API_KEY"
754
+ },
755
+ {
756
+ "name": "azure-foundry",
757
+ "display_name": "Azure Foundry",
758
+ "env_vars": [
759
+ "AZURE_FOUNDRY_API_KEY",
760
+ "AZURE_FOUNDRY_BASE_URL"
761
+ ],
762
+ "api_key_env": "AZURE_FOUNDRY_API_KEY"
763
+ },
764
+ {
765
+ "name": "bedrock",
766
+ "display_name": "bedrock",
767
+ "env_vars": [],
768
+ "api_key_env": null
769
+ },
770
+ {
771
+ "name": "commandcode",
772
+ "display_name": "CommandCode",
773
+ "env_vars": [
774
+ "COMMANDCODE_API_KEY",
775
+ "COMMANDCODE_BASE_URL"
776
+ ],
777
+ "api_key_env": "COMMANDCODE_API_KEY"
778
+ },
779
+ {
780
+ "name": "commandcode-anthropic",
781
+ "display_name": "CommandCode (Anthropic)",
782
+ "env_vars": [
783
+ "COMMANDCODE_API_KEY",
784
+ "COMMANDCODE_ANTHROPIC_BASE_URL"
785
+ ],
786
+ "api_key_env": "COMMANDCODE_API_KEY"
787
+ },
788
+ {
789
+ "name": "copilot",
790
+ "display_name": "copilot",
791
+ "env_vars": [
792
+ "COPILOT_GITHUB_TOKEN",
793
+ "GH_TOKEN",
794
+ "GITHUB_TOKEN"
795
+ ],
796
+ "api_key_env": "COPILOT_GITHUB_TOKEN"
797
+ },
798
+ {
799
+ "name": "copilot-acp",
800
+ "display_name": "copilot-acp",
801
+ "env_vars": [],
802
+ "api_key_env": null
803
+ },
804
+ {
805
+ "name": "custom",
806
+ "display_name": "custom",
807
+ "env_vars": [],
808
+ "api_key_env": null
809
+ },
810
+ {
811
+ "name": "deepinfra",
812
+ "display_name": "DeepInfra",
813
+ "env_vars": [
814
+ "DEEPINFRA_API_KEY",
815
+ "DEEPINFRA_BASE_URL"
816
+ ],
817
+ "api_key_env": "DEEPINFRA_API_KEY"
818
+ },
819
+ {
820
+ "name": "deepseek",
821
+ "display_name": "DeepSeek",
822
+ "env_vars": [
823
+ "DEEPSEEK_API_KEY"
824
+ ],
825
+ "api_key_env": "DEEPSEEK_API_KEY"
826
+ },
827
+ {
828
+ "name": "fireworks",
829
+ "display_name": "Fireworks AI",
830
+ "env_vars": [
831
+ "FIREWORKS_API_KEY"
832
+ ],
833
+ "api_key_env": "FIREWORKS_API_KEY"
834
+ },
835
+ {
836
+ "name": "gemini",
837
+ "display_name": "gemini",
838
+ "env_vars": [
839
+ "GOOGLE_API_KEY",
840
+ "GEMINI_API_KEY"
841
+ ],
842
+ "api_key_env": "GOOGLE_API_KEY"
843
+ },
844
+ {
845
+ "name": "gmi",
846
+ "display_name": "GMI Cloud",
847
+ "env_vars": [
848
+ "GMI_API_KEY",
849
+ "GMI_BASE_URL"
850
+ ],
851
+ "api_key_env": "GMI_API_KEY"
852
+ },
853
+ {
854
+ "name": "huggingface",
855
+ "display_name": "HuggingFace",
856
+ "env_vars": [
857
+ "HF_TOKEN"
858
+ ],
859
+ "api_key_env": "HF_TOKEN"
860
+ },
861
+ {
862
+ "name": "kilocode",
863
+ "display_name": "kilocode",
864
+ "env_vars": [
865
+ "KILOCODE_API_KEY"
866
+ ],
867
+ "api_key_env": "KILOCODE_API_KEY"
868
+ },
869
+ {
870
+ "name": "kimi-coding",
871
+ "display_name": "kimi-coding",
872
+ "env_vars": [
873
+ "KIMI_API_KEY",
874
+ "KIMI_CODING_API_KEY"
875
+ ],
876
+ "api_key_env": "KIMI_API_KEY"
877
+ },
878
+ {
879
+ "name": "kimi-coding-cn",
880
+ "display_name": "kimi-coding-cn",
881
+ "env_vars": [
882
+ "KIMI_CN_API_KEY"
883
+ ],
884
+ "api_key_env": "KIMI_CN_API_KEY"
885
+ },
886
+ {
887
+ "name": "meta-ai",
888
+ "display_name": "Meta Model API",
889
+ "env_vars": [
890
+ "MODEL_API_KEY",
891
+ "META_API_KEY",
892
+ "META_MODEL_API_KEY",
893
+ "META_BASE_URL"
894
+ ],
895
+ "api_key_env": "MODEL_API_KEY"
896
+ },
897
+ {
898
+ "name": "minimax",
899
+ "display_name": "minimax",
900
+ "env_vars": [
901
+ "MINIMAX_API_KEY"
902
+ ],
903
+ "api_key_env": "MINIMAX_API_KEY"
904
+ },
905
+ {
906
+ "name": "minimax-cn",
907
+ "display_name": "minimax-cn",
908
+ "env_vars": [
909
+ "MINIMAX_CN_API_KEY"
910
+ ],
911
+ "api_key_env": "MINIMAX_CN_API_KEY"
912
+ },
913
+ {
914
+ "name": "minimax-oauth",
915
+ "display_name": "MiniMax (OAuth)",
916
+ "env_vars": [],
917
+ "api_key_env": null
918
+ },
919
+ {
920
+ "name": "nebius-token-factory",
921
+ "display_name": "Nebius Token Factory",
922
+ "env_vars": [
923
+ "NEBIUS_API_KEY",
924
+ "NEBIUS_TOKEN_FACTORY_API_KEY",
925
+ "NEBIUS_BASE_URL"
926
+ ],
927
+ "api_key_env": "NEBIUS_API_KEY"
928
+ },
929
+ {
930
+ "name": "nous",
931
+ "display_name": "Nous Research",
932
+ "env_vars": [
933
+ "NOUS_API_KEY"
934
+ ],
935
+ "api_key_env": "NOUS_API_KEY"
936
+ },
937
+ {
938
+ "name": "novita",
939
+ "display_name": "NovitaAI",
940
+ "env_vars": [
941
+ "NOVITA_API_KEY",
942
+ "NOVITA_BASE_URL"
943
+ ],
944
+ "api_key_env": "NOVITA_API_KEY"
945
+ },
946
+ {
947
+ "name": "nvidia",
948
+ "display_name": "NVIDIA NIM",
949
+ "env_vars": [
950
+ "NVIDIA_API_KEY"
951
+ ],
952
+ "api_key_env": "NVIDIA_API_KEY"
953
+ },
954
+ {
955
+ "name": "ollama-cloud",
956
+ "display_name": "ollama-cloud",
957
+ "env_vars": [
958
+ "OLLAMA_API_KEY"
959
+ ],
960
+ "api_key_env": "OLLAMA_API_KEY"
961
+ },
962
+ {
963
+ "name": "openai-codex",
964
+ "display_name": "openai-codex",
965
+ "env_vars": [],
966
+ "api_key_env": null
967
+ },
968
+ {
969
+ "name": "opencode-free",
970
+ "display_name": "OpenCode Free",
971
+ "env_vars": [],
972
+ "api_key_env": null
973
+ },
974
+ {
975
+ "name": "opencode-zen",
976
+ "display_name": "opencode-zen",
977
+ "env_vars": [
978
+ "OPENCODE_ZEN_API_KEY"
979
+ ],
980
+ "api_key_env": "OPENCODE_ZEN_API_KEY"
981
+ },
982
+ {
983
+ "name": "opencode-go",
984
+ "display_name": "opencode-go",
985
+ "env_vars": [
986
+ "OPENCODE_GO_API_KEY"
987
+ ],
988
+ "api_key_env": "OPENCODE_GO_API_KEY"
989
+ },
990
+ {
991
+ "name": "openrouter",
992
+ "display_name": "OpenRouter",
993
+ "env_vars": [
994
+ "OPENROUTER_API_KEY"
995
+ ],
996
+ "api_key_env": "OPENROUTER_API_KEY"
997
+ },
998
+ {
999
+ "name": "qwen-oauth",
1000
+ "display_name": "qwen-oauth",
1001
+ "env_vars": [
1002
+ "QWEN_API_KEY"
1003
+ ],
1004
+ "api_key_env": "QWEN_API_KEY"
1005
+ },
1006
+ {
1007
+ "name": "router",
1008
+ "display_name": "Ramp Router",
1009
+ "env_vars": [
1010
+ "RAMP_ROUTER_API_KEY",
1011
+ "ROUTER_API_KEY",
1012
+ "RAMP_ROUTER_BASE_URL"
1013
+ ],
1014
+ "api_key_env": "RAMP_ROUTER_API_KEY"
1015
+ },
1016
+ {
1017
+ "name": "stepfun",
1018
+ "display_name": "stepfun",
1019
+ "env_vars": [
1020
+ "STEPFUN_API_KEY"
1021
+ ],
1022
+ "api_key_env": "STEPFUN_API_KEY"
1023
+ },
1024
+ {
1025
+ "name": "upstage",
1026
+ "display_name": "Upstage Solar",
1027
+ "env_vars": [
1028
+ "UPSTAGE_API_KEY",
1029
+ "UPSTAGE_BASE_URL"
1030
+ ],
1031
+ "api_key_env": "UPSTAGE_API_KEY"
1032
+ },
1033
+ {
1034
+ "name": "vertex",
1035
+ "display_name": "vertex",
1036
+ "env_vars": [],
1037
+ "api_key_env": null
1038
+ },
1039
+ {
1040
+ "name": "xai",
1041
+ "display_name": "xai",
1042
+ "env_vars": [
1043
+ "XAI_API_KEY"
1044
+ ],
1045
+ "api_key_env": "XAI_API_KEY"
1046
+ },
1047
+ {
1048
+ "name": "xiaomi",
1049
+ "display_name": "xiaomi",
1050
+ "env_vars": [
1051
+ "XIAOMI_API_KEY"
1052
+ ],
1053
+ "api_key_env": "XIAOMI_API_KEY"
1054
+ },
1055
+ {
1056
+ "name": "zai",
1057
+ "display_name": "Z.AI (GLM)",
1058
+ "env_vars": [
1059
+ "GLM_API_KEY",
1060
+ "ZAI_API_KEY",
1061
+ "Z_AI_API_KEY"
1062
+ ],
1063
+ "api_key_env": "GLM_API_KEY"
1064
+ }
1065
+ ]
1066
+ }
1067
+ }
1068
+ ]
1069
+ }