@jacobbd/relay-ai 0.3.4 → 0.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.
package/README.md CHANGED
@@ -17,9 +17,11 @@
17
17
  </a>
18
18
  </p>
19
19
 
20
- > **Demo (Part 1):** Installation · Configuration · Claude Code · Claude Cowork · Claude Code Desktop — [watch on YouTube](https://youtu.be/IvsUPHLhX0o)
20
+ > 🎥 **Watch the Demos:**
21
+ > - **Demo (Part 1):** Installation · Configuration · Claude Code · Claude Cowork & Claude Code Desktop — [watch on YouTube](https://youtu.be/IvsUPHLhX0o)
22
+ > - **Demo (Part 2):** OpenAI Codex CLI & Codex Desktop App — [watch on YouTube](https://youtu.be/42oiOB8IAu4)
21
23
 
22
- **relay-ai** is an interactive CLI that launches AI coding tools and runs local API gateways on your machine. Currently, it supports **Claude Code**, **Claude Desktop (Cowork + Code)**, the **OpenAI Codex CLI**, the **Codex desktop app (macOS + Windows)**, and the **Google Gemini CLI**.
24
+ **relay-ai** is an interactive CLI — and now a **visual launcher** — that connects AI coding tools to any provider and runs local API gateways on your machine. It supports **Claude Code**, **Claude Desktop (Cowork + Code)**, the **OpenAI Codex CLI**, the **ChatGPT desktop app in Codex mode (macOS + Windows)**, **Google Gemini CLI**, and experimental **Antigravity CLI / IDE** support.
23
25
 
24
26
  Pick your backend:
25
27
 
@@ -33,6 +35,7 @@ Pick your backend:
33
35
  | Command | Description |
34
36
  |---------|-------------|
35
37
  | `relay-ai` | Print help (does not launch Claude Code) |
38
+ | `relay-ai ui` | **Open the visual launcher** — manage providers and launch any tool from a browser UI |
36
39
  | `relay-ai claude` | Pick a provider → launch Claude Code |
37
40
  | `relay-ai providers` | Add, import, list, remove, and refresh your AI providers |
38
41
  | `relay-ai models` | Manage favorite models for mid-session `/model` switching |
@@ -40,14 +43,18 @@ Pick your backend:
40
43
  | `relay-ai server --vertex` | Foreground Anthropic-compatible gateway to Claude on Vertex AI |
41
44
  | `relay-ai claude-app` | Launch Claude Desktop app with registry providers ([guide](docs/CLAUDE_DESKTOP_SETUP.md)) |
42
45
  | `relay-ai codex` | Launch OpenAI Codex CLI with registry providers ([guide](docs/CODEX.md)) |
43
- | `relay-ai codex-app` | Launch Codex desktop app with registry providers ([guide](docs/CODEX.md)) |
46
+ | `relay-ai codex-app` (alias `chatgpt`) | Launch ChatGPT desktop app in Codex mode with registry providers ([guide](docs/CODEX.md)) |
44
47
  | `relay-ai gemini` | Launch Google Gemini CLI with registry providers |
48
+ | `relay-ai agy` | Launch Antigravity CLI with Relay models ([warning + guide](docs/ANTIGRAVITY.md)) |
49
+ | `relay-ai antigravity` | Launch Antigravity app with Relay models, macOS ([warning + guide](docs/ANTIGRAVITY.md)) |
50
+ | `relay-ai antigravity-ide` | Launch Antigravity IDE with Relay models, macOS ([warning + guide](docs/ANTIGRAVITY.md)) |
51
+ | `relay-ai providers auth <id>` | Authenticate an OAuth provider (GitHub Copilot, xAI, OpenAI) |
45
52
  | `relay-ai --ai` | Full agent reference for scripts and alef-agent ([guide](docs/AI-AGENTS.md)) |
46
53
 
47
- Bare `relay-ai` prints help and migration guidance. Use `relay-ai claude` for the wizard.
48
-
49
54
  ## Features
50
55
 
56
+ - **Visual launcher UI:** `relay-ai ui` opens a browser dashboard — launch any supported tool with a point-and-click model picker. Pick provider and model in the UI; the terminal opens straight to the running session with no second selection step. Manage providers and favorites without leaving the browser.
57
+ - **Server tab in the UI:** Run the same API gateway as `relay-ai server` — favorites-only or specific providers, discovery id masking for Claude Desktop / Cowork, local or network listen mode — from a browser form instead of a terminal wizard. Shows live URLs, the API key, and the full model catalog once started, with a one-click Stop.
51
58
  - **Native provider registry:** `relay-ai providers` stores config in `~/.relay-ai/providers.json` and secrets in the OS keychain — no OpenCode binary required at launch. See **[docs/PROVIDERS.md](docs/PROVIDERS.md)** for a full list of providers and known issues.
52
59
  - **Provider templates:** Add Groq, Mistral, Together, OpenRouter, and 15+ SDK-backed providers, plus custom OpenAI/Anthropic-compatible endpoints
53
60
  - **OpenCode import:** One-time migration from OpenCode (`providers import`); validates API keys and skips placeholders like `anything`
@@ -57,8 +64,9 @@ Bare `relay-ai` prints help and migration guidance. Use `relay-ai claude` for th
57
64
  - **Smart model pickers:** Recent models per provider, search for large lists (>25), paginated browse (15 per page)
58
65
  - **Refresh model lists:** `relay-ai providers refresh-models` updates cached catalogs per provider
59
66
  - **API server:** Run a local gateway on port **17645** for Claude Code, Claude Desktop, or any Anthropic-compatible client
60
- - **Server wizard:** Filter exposed providers, mask discovery ids for Claude Desktop, optional favorites-only catalog, local vs network listen mode
67
+ - **Server wizard:** Filter exposed providers, mask discovery ids for Claude Desktop, optional favorites-only catalog, local vs network listen mode — available in the terminal (`relay-ai server`) or the `relay-ai ui` Server tab
61
68
  - **Vertex gateway:** Anthropic-compatible Claude on Google Vertex AI using gcloud Application Default Credentials
69
+ - **Antigravity CLI / app / IDE support:** Experimental local Cloud Code gateway for Antigravity's native model picker. Read the account warning before using it
62
70
  - **Clean environment isolation:** We strip 17 conflicting env vars (Vertex AI, Bedrock, AWS, Foundry, stale Anthropic config) from the child process only. We never touch `~/.claude/settings.json` (see caveat below)
63
71
  - **Secure key storage:** Per-provider keys and the OpenCode API key go in the OS credential store (macOS Keychain, Windows Credential Manager, Linux Secret Service) or your shell profile
64
72
  - **Cross-platform:** macOS, Windows, Linux (Ubuntu, Fedora, distros with GNOME Keyring or KWallet)
@@ -70,6 +78,7 @@ Bare `relay-ai` prints help and migration guidance. Use `relay-ai claude` for th
70
78
 
71
79
  | Tool | Command | Status |
72
80
  |------|---------|--------|
81
+ | **Visual launcher UI** | `relay-ai ui` | ✅ Supported — browser dashboard for all tools |
73
82
  | Provider registry | `relay-ai providers` | ✅ Supported ([guide](docs/PROVIDERS.md)) |
74
83
  | Claude Code | `relay-ai claude` | ✅ Supported |
75
84
  | Favorite models | `relay-ai models` | ✅ Supported |
@@ -77,8 +86,14 @@ Bare `relay-ai` prints help and migration guidance. Use `relay-ai claude` for th
77
86
  | Vertex API gateway | `relay-ai server --vertex` | ✅ Supported |
78
87
  | Claude Desktop (Cowork + Code) | `relay-ai claude-app` | ✅ Supported macOS + Windows ([guide](docs/CLAUDE_DESKTOP_SETUP.md)) |
79
88
  | Codex CLI | `relay-ai codex` | ✅ Supported ([guide](docs/CODEX.md)) |
80
- | Codex desktop app | `relay-ai codex-app` | ✅ Supported macOS + Windows ([guide](docs/CODEX.md)) |
81
- | Google Gemini CLI | `relay-ai gemini` | Supported |
89
+ | ChatGPT desktop app (Codex mode) | `relay-ai codex-app` (alias `chatgpt`) | ✅ Supported macOS + Windows ([guide](docs/CODEX.md)) |
90
+ | Google Gemini CLI | `relay-ai gemini` | ⚠️ Experimental, model switching is done via .model prompt |
91
+ | Antigravity CLI | `relay-ai agy` | ⚠️ Experimental, use a throwaway Google account ([guide](docs/ANTIGRAVITY.md)) |
92
+ | Antigravity app | `relay-ai antigravity` | ⚠️ Experimental macOS + Windows support, use a throwaway Google account ([guide](docs/ANTIGRAVITY.md)) |
93
+ | Antigravity IDE | `relay-ai antigravity-ide` | ⚠️ Experimental macOS + Windows support, use a throwaway Google account ([guide](docs/ANTIGRAVITY.md)) |
94
+ | GitHub Copilot OAuth | `relay-ai providers auth github-copilot` | ✅ Device code flow ([guide](docs/SUBSCRIPTION-OAUTH.md)) |
95
+ | xAI SuperGrok OAuth | `relay-ai providers auth xai-oauth` | ✅ Device code flow ([guide](docs/SUBSCRIPTION-OAUTH.md)) |
96
+ | OpenAI ChatGPT OAuth | `relay-ai providers auth openai-oauth` | ✅ Device code flow ([guide](docs/SUBSCRIPTION-OAUTH.md)) |
82
97
 
83
98
  ## Prerequisites
84
99
 
@@ -87,6 +102,7 @@ Bare `relay-ai` prints help and migration guidance. Use `relay-ai claude` for th
87
102
  - At least one provider configured via `relay-ai providers add` or `import` — **or** an [OpenCode API key](https://opencode.ai/auth) for Zen/Go cloud backends
88
103
  - [OpenCode CLI](https://opencode.ai) only if you want **one-time import** from an existing OpenCode setup (optional)
89
104
  - For **Vertex gateway:** [Google Cloud SDK](https://cloud.google.com/sdk) with `gcloud auth application-default login`, a GCP project with Vertex AI enabled, and Claude partner models enabled in that project
105
+ - For **Antigravity CLI / IDE:** a Google account is still needed for Antigravity authentication. Do **not** use your main Google account. Use a throwaway or secondary account you can afford to lose.
90
106
 
91
107
  **A note on providers:** relay-ai keeps your provider list in `~/.relay-ai/providers.json`. You can add providers directly (API key + template), import from OpenCode once, or use Zen/Go cloud backends. OpenCode is not required after setup.
92
108
 
@@ -161,6 +177,22 @@ The key is active in your current session right away, no matter which option you
161
177
 
162
178
  ## Usage
163
179
 
180
+ ### Visual launcher (`relay-ai ui`)
181
+
182
+ ```bash
183
+ relay-ai ui
184
+ ```
185
+
186
+ Opens a browser-based dashboard on a random local port. From the UI you can:
187
+
188
+ - **Launch any supported tool** — app cards for Claude Code CLI, Codex CLI, Gemini CLI, Antigravity CLI, Antigravity App, Antigravity IDE, Claude Code Desktop, and the ChatGPT Desktop app (Codex mode). Select a provider and model in the card, then click **Launch** — a native terminal opens with the selection pre-wired. No second picker in the terminal.
189
+ - **Manage General Favorites** — the sidebar shows your saved favorite models with a slot indicator (Slots used X/20). Favorites launch through all supported agents.
190
+ - **Manage Antigravity Favorites** — separate favorites panel for Antigravity sessions.
191
+ - **Manage providers** — add providers from templates, delete providers, and refresh model lists inline, all without leaving the browser.
192
+ - **Run the Server tab** — configure and start the same gateway as `relay-ai server` (favorites-only or specific providers, discovery id masking, local/network listen mode) and see the resulting URLs, API key, and model catalog right in the browser. Runs in the same process as the UI, so it stops when you close the dashboard. See [Registry gateway (`relay-ai server`)](#registry-gateway-relay-ai-server) below for what each option does.
193
+
194
+ Press `Ctrl+C` in the terminal where `relay-ai ui` is running to shut down the dashboard server (this also stops the gateway if you started it from the Server tab).
195
+
164
196
  ### Launch Claude Code
165
197
 
166
198
  ```bash
@@ -246,12 +278,34 @@ The wizard asks:
246
278
 
247
279
  | Prompt | What it does |
248
280
  |--------|--------------|
249
- | **Configure & start** vs **Start with saved settings** | Full wizard or reuse saved server preferences |
281
+ | **Configure & start** vs **Start with saved settings** | Full wizard or one-step launch from saved server preferences |
250
282
  | **Exposed providers** | Limit which providers appear in the catalog (Zen, Go, Groq, OpenAI, etc.) |
251
283
  | **Mask gateway model ids for discovery?** | Recommended **Yes** for Claude Desktop — hides competitor vendor strings in model ids so discovery works |
252
284
  | **Expose only favorite models?** | Optional cap at your favorites (manage with `relay-ai models`) |
253
285
  | **Listen mode** | **Local only** (`127.0.0.1`) or **Network** (`0.0.0.0` + server password) |
254
286
 
287
+ The same options are available without a terminal in the [Server tab of `relay-ai ui`](#visual-launcher-relay-ai-ui), which also shows the resulting URLs, API key, and model catalog live.
288
+
289
+ After you configure the server once, start it without prompts:
290
+
291
+ ```bash
292
+ relay-ai server --quick
293
+ # same as:
294
+ relay-ai server --saved
295
+ ```
296
+
297
+ Any one-run server option also skips the wizard:
298
+
299
+ | Option | Meaning |
300
+ |--------|---------|
301
+ | `--listen local\|network` | Override the saved listen mode for this run |
302
+ | `--providers all\|favorites\|id1,id2` | Expose all providers, favorites only, or a comma-separated provider id list |
303
+ | `--free-only` / `--no-free-only` | Enable or disable the free/free-access model filter for this run |
304
+ | `--mask-gateway-ids` / `--no-mask-gateway-ids` | Enable or disable discovery id masking for this run |
305
+ | `--password <value>` | One-run password for network mode when you do not want to use a saved password |
306
+
307
+ Non-interactive shells (scripts, services, CI, pipes) use quick mode automatically. If quick mode resolves to network mode, relay-ai uses `--password` first, then a saved server password; without either it exits with a clear error instead of prompting.
308
+
255
309
  **Local mode** — point any Anthropic-compatible client at your machine:
256
310
 
257
311
  ```bash
@@ -266,7 +320,7 @@ export ANTHROPIC_BASE_URL="http://<server-ip>:17645/anthropic"
266
320
  export ANTHROPIC_API_KEY="<server-password>"
267
321
  ```
268
322
 
269
- By default the server password stays in memory only. If you choose to save it, relay-ai stores it in `~/.relay-ai/config.json`.
323
+ By default the server password stays in memory only. If you choose to save it, relay-ai stores it in the OS credential store when available, with `~/.relay-ai/config.json` as a fallback.
270
324
 
271
325
  OpenAI-format models also get an OpenAI-compatible endpoint:
272
326
 
@@ -316,6 +370,36 @@ export ANTHROPIC_API_KEY="anything"
316
370
  unset CLAUDE_CODE_USE_VERTEX ANTHROPIC_VERTEX_PROJECT_ID CLOUD_ML_REGION
317
371
  ```
318
372
 
373
+ ## Antigravity CLI, app, and IDE support
374
+
375
+ Relay AI can launch the Antigravity CLI, standalone Antigravity app, and Antigravity IDE through a local Cloud Code gateway. This lets Antigravity's native model picker show Relay models from your configured providers.
376
+
377
+ ```bash
378
+ relay-ai agy
379
+ relay-ai antigravity
380
+ relay-ai antigravity-ide
381
+ ```
382
+
383
+ > ⚠️ **Do not use your main Google account with Antigravity support.**
384
+ >
385
+ > Antigravity still requires Google authentication before it will run. Relay AI routes Cloud Code generation through your local gateway, but the Antigravity CLI, app, and IDE are still Google software and may contact Google for auth, telemetry, updates, or account checks.
386
+ >
387
+ > This kind of use is probably not what Google intended, may violate Google's terms of service, and could lead to account restrictions or bans. Use a throwaway Google account, a secondary account, or another account you can afford to lose. A free Google account should be enough for authentication. Seriously, don't risk your real Gmail, Workspace, YouTube, Drive, or business account for this.
388
+
389
+ Read the full setup and risk notes in **[docs/ANTIGRAVITY.md](docs/ANTIGRAVITY.md)** before launching any Antigravity surface.
390
+
391
+ ## OAuth Providers
392
+
393
+ relay-ai supports OAuth providers that use device-code sign-in, so you can connect an existing subscription without pasting an API key. See **[docs/SUBSCRIPTION-OAUTH.md](docs/SUBSCRIPTION-OAUTH.md)** for setup details.
394
+
395
+ Device code flows for existing subscriptions:
396
+
397
+ ```bash
398
+ relay-ai providers auth github-copilot # GitHub Copilot
399
+ relay-ai providers auth openai-oauth # ChatGPT Plus / Pro
400
+ relay-ai providers auth xai-oauth # xAI SuperGrok
401
+ ```
402
+
319
403
  ### Codex CLI (`relay-ai codex`)
320
404
 
321
405
  Launch [OpenAI Codex CLI](https://developers.openai.com/codex/cli) with registry providers. Requires `npm install -g @openai/codex`.
@@ -355,18 +439,22 @@ Full details: **[docs/CODEX.md](docs/CODEX.md)** — CLI + desktop app, configs,
355
439
 
356
440
  For agent / alef-agent integration (boot flags, NDJSON, JSONL): **[docs/AI-AGENTS.md](docs/AI-AGENTS.md)** and `relay-ai --ai`.
357
441
 
358
- ### Codex desktop app (`relay-ai codex-app`)
442
+ ### ChatGPT desktop app / Codex mode (`relay-ai codex-app`, alias `relay-ai chatgpt`)
443
+
444
+ > OpenAI merged the standalone Codex app into the ChatGPT desktop app on 2026-07-09 — it's now named "ChatGPT" on disk (bundle id and config format unchanged) and opens in Codex mode for existing Codex users. `relay-ai codex-app` and `relay-ai chatgpt` are the same command.
359
445
 
360
- Launch the **Codex app** (macOS or Windows) with registry providers:
446
+ Launch the **ChatGPT app in Codex mode** (macOS or Windows) with registry providers:
361
447
 
362
448
  ```bash
363
449
  relay-ai codex-app
364
450
  ```
365
451
 
366
- Patches `~/.codex/config.toml` with backup; **Ctrl+C** in the relay-ai terminal restores your config. The app keeps Codex's built-in `openai` provider active so existing conversation history remains visible, and routes the selected model through a foreground local proxy. Preview config without writing: `relay-ai codex-app --config`. Recovery: `relay-ai codex-app --restore`.
452
+ Patches `~/.codex/config.toml` with backup; **Ctrl+C** in the relay-ai terminal asks whether to close ChatGPT Desktop and restore your config (choose "No, keep session running" to decline and keep going). The app keeps Codex's built-in `openai` provider active so existing conversation history remains visible, and routes the selected model through a foreground local proxy. Preview config without writing: `relay-ai codex-app --config`. Recovery: `relay-ai codex-app --restore`.
367
453
 
368
454
  See **[docs/CODEX.md](docs/CODEX.md)** for CLI vs app differences, file ownership, and troubleshooting.
369
455
 
456
+ > **Known limitation — MCP tools (Context7, chrome-devtools, etc.) don't work with non-native models.** Codex wraps local `[mcp_servers.*]` tools in a proprietary, undocumented format that only Codex's own ChatGPT backend can dispatch. When routed through relay-ai (or *any* non-native model provider — this also affects Ollama, OpenRouter, LiteLLM, LM Studio identically), the model can see and call the tools, but Codex's own dispatcher rejects every call with `unsupported call: ...`. This is a confirmed, currently open upstream bug ([openai/codex#20652](https://github.com/openai/codex/issues/20652)) — there is no workaround on relay-ai's side. MCP tools work normally with Codex's native OpenAI/ChatGPT models. See the [MCP troubleshooting row in docs/CODEX.md](docs/CODEX.md#troubleshooting) for details.
457
+
370
458
  **Reasoning effort:** Capable models show Codex's native reasoning picker (low/medium/high, etc.). relay-ai maps your choice to each provider's SDK options and preserves existing `model_reasoning_effort` in Codex config. Claude Code `/effort` and the `relay-ai server` gateway use the same mapping — see the [reasoning section in docs/CODEX.md](docs/CODEX.md#reasoning-effort).
371
459
 
372
460
  ### Google Gemini CLI (`relay-ai gemini`)
@@ -484,7 +572,7 @@ Private beta right now. Issues and PRs welcome on GitHub.
484
572
 
485
573
  ## Disclaimer
486
574
 
487
- This project and its creator have **no affiliation** with OpenCode, Anthropic, Claude, Google, or any other vendor named or integrated here. Trademarks belong to their respective owners.
575
+ This project and its creator have **no affiliation** with OpenCode, Anthropic, Claude, Google, GitHub, OpenAI, xAI, or any other vendor named or integrated here. Trademarks belong to their respective owners.
488
576
 
489
577
  relay-ai was built for **education and research**, and mostly for fun. It routes inference through services you configure yourself (OpenCode Zen/Go, OpenCode-configured providers, Vertex AI, and gateways you run locally). Use at your own risk.
490
578
 
@@ -0,0 +1,427 @@
1
+ #!/usr/bin/env node
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __esm = (fn, res) => function __init() {
7
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
+ };
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+
23
+ // src/provider-templates.ts
24
+ var provider_templates_exports = {};
25
+ __export(provider_templates_exports, {
26
+ PROVIDER_TEMPLATES: () => PROVIDER_TEMPLATES,
27
+ filterTemplates: () => filterTemplates,
28
+ getTemplateById: () => getTemplateById,
29
+ listAddableTemplates: () => listAddableTemplates,
30
+ listSupportedTemplates: () => listSupportedTemplates,
31
+ listVisibleOAuthTemplates: () => listVisibleOAuthTemplates
32
+ });
33
+ function listSupportedTemplates() {
34
+ return PROVIDER_TEMPLATES.filter((t) => t.supported && t.authType === "api" && t.addable !== false && !t.hidden).sort((a, b) => a.name.localeCompare(b.name));
35
+ }
36
+ function listAddableTemplates(configuredIds = []) {
37
+ const configured = new Set(configuredIds);
38
+ return listSupportedTemplates().filter((t) => {
39
+ if (t.id === "opencode-cloud") {
40
+ return !configured.has("zen") && !configured.has("go");
41
+ }
42
+ return !configured.has(t.id);
43
+ });
44
+ }
45
+ function listVisibleOAuthTemplates(configuredIds = []) {
46
+ const configured = new Set(configuredIds);
47
+ return PROVIDER_TEMPLATES.filter((t) => t.authType === "oauth" && t.supported && t.addable !== false && !t.hidden && !configured.has(t.id)).sort((a, b) => a.name.localeCompare(b.name));
48
+ }
49
+ function getTemplateById(id) {
50
+ return PROVIDER_TEMPLATES.find((t) => t.id === id);
51
+ }
52
+ function filterTemplates(templates, query) {
53
+ const q = query.trim().toLowerCase();
54
+ if (!q) return templates;
55
+ return templates.filter(
56
+ (t) => t.id.toLowerCase().includes(q) || t.name.toLowerCase().includes(q) || t.npm.toLowerCase().includes(q)
57
+ );
58
+ }
59
+ var PROVIDER_TEMPLATES;
60
+ var init_provider_templates = __esm({
61
+ "src/provider-templates.ts"() {
62
+ PROVIDER_TEMPLATES = [
63
+ {
64
+ id: "groq",
65
+ name: "Groq",
66
+ authType: "api",
67
+ npm: "@ai-sdk/groq",
68
+ defaultBaseUrl: "https://api.groq.com/openai/v1",
69
+ signupUrl: "https://console.groq.com/keys",
70
+ modelSource: "api-list",
71
+ supported: true
72
+ },
73
+ {
74
+ id: "nvidia",
75
+ name: "Nvidia",
76
+ authType: "api",
77
+ npm: "@ai-sdk/openai-compatible",
78
+ defaultBaseUrl: "https://integrate.api.nvidia.com/v1",
79
+ signupUrl: "https://build.nvidia.com",
80
+ modelSource: "api-list",
81
+ supported: true
82
+ },
83
+ {
84
+ id: "mistral",
85
+ name: "Mistral",
86
+ authType: "api",
87
+ npm: "@ai-sdk/mistral",
88
+ defaultBaseUrl: "https://api.mistral.ai/v1",
89
+ signupUrl: "https://console.mistral.ai/api-keys",
90
+ modelSource: "api-list",
91
+ supported: true
92
+ },
93
+ {
94
+ id: "togetherai",
95
+ name: "Together AI",
96
+ authType: "api",
97
+ npm: "@ai-sdk/togetherai",
98
+ defaultBaseUrl: "https://api.together.xyz/v1",
99
+ signupUrl: "https://api.together.xyz/settings/api-keys",
100
+ modelSource: "api-list",
101
+ supported: true
102
+ },
103
+ {
104
+ id: "cerebras",
105
+ name: "Cerebras",
106
+ authType: "api",
107
+ npm: "@ai-sdk/cerebras",
108
+ defaultBaseUrl: "https://api.cerebras.ai/v1",
109
+ signupUrl: "https://cloud.cerebras.ai",
110
+ modelSource: "api-list",
111
+ supported: true
112
+ },
113
+ {
114
+ id: "deepinfra",
115
+ name: "DeepInfra",
116
+ authType: "api",
117
+ npm: "@ai-sdk/deepinfra",
118
+ defaultBaseUrl: "https://api.deepinfra.com/v1/openai",
119
+ signupUrl: "https://deepinfra.com/dash/api_keys",
120
+ modelSource: "api-list",
121
+ supported: true
122
+ },
123
+ {
124
+ id: "deepseek",
125
+ name: "DeepSeek",
126
+ authType: "api",
127
+ npm: "@ai-sdk/openai-compatible",
128
+ defaultBaseUrl: "https://api.deepseek.com/v1",
129
+ signupUrl: "https://platform.deepseek.com",
130
+ modelSource: "api-list",
131
+ supported: true
132
+ },
133
+ {
134
+ id: "zhipu",
135
+ name: "Zhipu AI (GLM)",
136
+ authType: "api",
137
+ npm: "@ai-sdk/openai-compatible",
138
+ defaultBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
139
+ signupUrl: "https://open.bigmodel.cn",
140
+ modelSource: "api-list",
141
+ supported: true
142
+ },
143
+ {
144
+ id: "moonshot",
145
+ name: "Moonshot (Kimi)",
146
+ authType: "api",
147
+ npm: "@ai-sdk/openai-compatible",
148
+ defaultBaseUrl: "https://api.moonshot.cn/v1",
149
+ signupUrl: "https://platform.moonshot.cn",
150
+ modelSource: "api-list",
151
+ supported: true
152
+ },
153
+ {
154
+ id: "moonshot-global",
155
+ name: "Moonshot Global (kimi.ai)",
156
+ authType: "api",
157
+ npm: "@ai-sdk/openai-compatible",
158
+ defaultBaseUrl: "https://api.moonshot.ai/v1",
159
+ signupUrl: "https://platform.kimi.ai",
160
+ modelSource: "api-list",
161
+ supported: true
162
+ },
163
+ {
164
+ id: "kimi-code",
165
+ name: "Kimi Code (Subscription Required)",
166
+ authType: "api",
167
+ npm: "@ai-sdk/openai-compatible",
168
+ defaultBaseUrl: "https://api.kimi.com/coding/v1",
169
+ modelSource: "static-seed",
170
+ staticModels: [
171
+ { id: "kimi-for-coding", name: "Kimi Code K2.7 (Unified)" }
172
+ ],
173
+ supported: true
174
+ },
175
+ {
176
+ id: "xai",
177
+ name: "xAI",
178
+ authType: "api",
179
+ npm: "@ai-sdk/xai",
180
+ defaultBaseUrl: "https://api.x.ai/v1",
181
+ signupUrl: "https://console.x.ai",
182
+ modelSource: "api-list",
183
+ supported: true
184
+ },
185
+ {
186
+ id: "perplexity",
187
+ name: "Perplexity",
188
+ authType: "api",
189
+ npm: "@ai-sdk/perplexity",
190
+ defaultBaseUrl: "https://api.perplexity.ai",
191
+ signupUrl: "https://www.perplexity.ai/settings/api",
192
+ modelSource: "api-list",
193
+ supported: true
194
+ },
195
+ {
196
+ id: "cohere",
197
+ name: "Cohere",
198
+ authType: "api",
199
+ npm: "@ai-sdk/cohere",
200
+ defaultBaseUrl: "https://api.cohere.com/compatibility/v1",
201
+ signupUrl: "https://dashboard.cohere.com/api-keys",
202
+ modelSource: "api-list",
203
+ supported: true
204
+ },
205
+ {
206
+ id: "openai",
207
+ name: "OpenAI",
208
+ authType: "api",
209
+ npm: "@ai-sdk/openai",
210
+ defaultBaseUrl: "https://api.openai.com/v1",
211
+ signupUrl: "https://platform.openai.com/api-keys",
212
+ modelSource: "api-list",
213
+ supported: true
214
+ },
215
+ {
216
+ id: "google",
217
+ name: "Google Gemini",
218
+ authType: "api",
219
+ npm: "@ai-sdk/google",
220
+ defaultBaseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
221
+ signupUrl: "https://aistudio.google.com/apikey",
222
+ modelSource: "api-list",
223
+ supported: true
224
+ },
225
+ {
226
+ id: "alibaba",
227
+ name: "Alibaba DashScope",
228
+ authType: "api",
229
+ npm: "@ai-sdk/alibaba",
230
+ defaultBaseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
231
+ signupUrl: "https://dashscope.console.aliyun.com/apiKey",
232
+ modelSource: "api-list",
233
+ supported: true
234
+ },
235
+ {
236
+ id: "openrouter",
237
+ name: "OpenRouter",
238
+ authType: "api",
239
+ npm: "@openrouter/ai-sdk-provider",
240
+ defaultBaseUrl: "https://openrouter.ai/api/v1",
241
+ signupUrl: "https://openrouter.ai/keys",
242
+ modelSource: "api-list",
243
+ supported: true
244
+ },
245
+ {
246
+ id: "kilo",
247
+ name: "Kilo Code",
248
+ authType: "api",
249
+ npm: "@ai-sdk/openai-compatible",
250
+ defaultBaseUrl: "https://api.kilo.ai/api/gateway",
251
+ modelsPath: "/models",
252
+ signupUrl: "https://app.kilo.ai",
253
+ apiKeyOptional: true,
254
+ anonymousFreeModels: true,
255
+ modelSource: "api-list",
256
+ supported: true
257
+ },
258
+ {
259
+ id: "ollama",
260
+ name: "Ollama",
261
+ authType: "api",
262
+ npm: "@ai-sdk/openai-compatible",
263
+ defaultBaseUrl: "http://127.0.0.1:11434/v1",
264
+ urlPrompt: "Ollama API Base URL:",
265
+ apiKeyOptional: true,
266
+ modelSource: "api-list",
267
+ supported: true
268
+ },
269
+ {
270
+ id: "lmstudio",
271
+ name: "LM Studio",
272
+ authType: "api",
273
+ npm: "@ai-sdk/openai-compatible",
274
+ defaultBaseUrl: "http://127.0.0.1:1234/v1",
275
+ urlPrompt: "LM Studio API Base URL:",
276
+ apiKeyOptional: true,
277
+ modelSource: "api-list",
278
+ supported: true
279
+ },
280
+ {
281
+ id: "venice",
282
+ name: "Venice AI",
283
+ authType: "api",
284
+ npm: "venice-ai-sdk-provider",
285
+ defaultBaseUrl: "https://api.venice.ai/api/v1",
286
+ signupUrl: "https://venice.ai/settings/api",
287
+ modelSource: "api-list",
288
+ supported: true
289
+ },
290
+ {
291
+ id: "anthropic",
292
+ name: "Anthropic",
293
+ authType: "api",
294
+ npm: "@ai-sdk/anthropic",
295
+ defaultBaseUrl: "https://api.anthropic.com",
296
+ signupUrl: "https://console.anthropic.com/settings/keys",
297
+ modelSource: "api-list",
298
+ supported: true
299
+ },
300
+ {
301
+ id: "bedrock",
302
+ name: "Amazon Bedrock",
303
+ authType: "api",
304
+ npm: "@ai-sdk/amazon-bedrock",
305
+ modelSource: "manual-only",
306
+ supported: false,
307
+ unsupportedReason: "Requires AWS credentials \u2014 use relay-ai providers import from OpenCode for now."
308
+ },
309
+ {
310
+ id: "azure",
311
+ name: "Azure OpenAI",
312
+ authType: "api",
313
+ npm: "@ai-sdk/azure",
314
+ modelSource: "manual-only",
315
+ supported: false,
316
+ unsupportedReason: "Requires Azure deployment URLs \u2014 use relay-ai providers import from OpenCode for now."
317
+ },
318
+ {
319
+ id: "vertex",
320
+ name: "Google Vertex AI",
321
+ authType: "none",
322
+ npm: "@ai-sdk/google-vertex",
323
+ modelSource: "manual-only",
324
+ supported: false,
325
+ unsupportedReason: "Uses gcloud Application Default Credentials \u2014 not supported via API key import."
326
+ },
327
+ {
328
+ id: "opencode-cloud",
329
+ name: "OpenCode Zen / Go",
330
+ authType: "api",
331
+ npm: "@ai-sdk/openai-compatible",
332
+ signupUrl: "https://opencode.ai/auth",
333
+ modelSource: "zen-go-api",
334
+ supported: true
335
+ },
336
+ {
337
+ id: "zen",
338
+ name: "OpenCode Zen",
339
+ authType: "api",
340
+ npm: "@ai-sdk/openai-compatible",
341
+ signupUrl: "https://opencode.ai/auth",
342
+ modelSource: "zen-go-api",
343
+ supported: true,
344
+ addable: false
345
+ },
346
+ {
347
+ id: "go",
348
+ name: "OpenCode Go",
349
+ authType: "api",
350
+ npm: "@ai-sdk/openai-compatible",
351
+ signupUrl: "https://opencode.ai/auth",
352
+ modelSource: "zen-go-api",
353
+ supported: true,
354
+ addable: false
355
+ },
356
+ // Subscription OAuth providers — Authorization Code + PKCE (browser redirect)
357
+ // ⚠️ These extract tokens from paid subscriptions. Account risk — see plan docs.
358
+ {
359
+ id: "claude-code",
360
+ name: "Claude Code (Anthropic subscription)",
361
+ authType: "oauth",
362
+ npm: "@ai-sdk/anthropic",
363
+ defaultBaseUrl: "https://api.anthropic.com",
364
+ signupUrl: "https://claude.ai",
365
+ modelSource: "api-list",
366
+ supported: true,
367
+ hidden: true,
368
+ subscriptionRisk: true
369
+ },
370
+ {
371
+ id: "antigravity",
372
+ name: "Antigravity (Google Cloud Code Assist)",
373
+ authType: "oauth",
374
+ npm: "@ai-sdk/openai-compatible",
375
+ signupUrl: "https://antigravity.google",
376
+ modelSource: "api-list",
377
+ supported: true,
378
+ hidden: true,
379
+ subscriptionRisk: true
380
+ },
381
+ // OAuth-gated subscription providers — device code or broker sign-in
382
+ {
383
+ id: "xai-oauth",
384
+ name: "xAI Grok (SuperGrok)",
385
+ authType: "oauth",
386
+ npm: "@ai-sdk/xai",
387
+ signupUrl: "https://x.ai",
388
+ modelSource: "api-list",
389
+ supported: true
390
+ },
391
+ {
392
+ id: "openai-oauth",
393
+ name: "OpenAI (ChatGPT)",
394
+ authType: "oauth",
395
+ npm: "@ai-sdk/openai",
396
+ signupUrl: "https://chatgpt.com",
397
+ modelSource: "api-list",
398
+ supported: true
399
+ },
400
+ {
401
+ id: "github-copilot",
402
+ name: "GitHub Copilot",
403
+ authType: "oauth",
404
+ npm: "@ai-sdk/openai-compatible",
405
+ defaultBaseUrl: "https://api.githubcopilot.com",
406
+ modelsPath: "/models",
407
+ signupUrl: "https://github.com/features/copilot",
408
+ modelSource: "api-list",
409
+ headers: { "Editor-Version": "vscode/1.85.1" },
410
+ supported: true
411
+ }
412
+ ];
413
+ }
414
+ });
415
+
416
+ export {
417
+ __toCommonJS,
418
+ PROVIDER_TEMPLATES,
419
+ listSupportedTemplates,
420
+ listAddableTemplates,
421
+ listVisibleOAuthTemplates,
422
+ getTemplateById,
423
+ filterTemplates,
424
+ provider_templates_exports,
425
+ init_provider_templates
426
+ };
427
+ //# sourceMappingURL=chunk-DO5FAMNC.js.map