zuplo 7.8.7 → 7.8.9

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 (73) hide show
  1. package/docs/ai-gateway/custom-policies.mdx +2 -1
  2. package/docs/ai-gateway/integrations/claude-code.mdx +82 -180
  3. package/docs/ai-gateway/integrations/claude-desktop.mdx +61 -99
  4. package/docs/ai-gateway/integrations/codex.mdx +63 -57
  5. package/docs/ai-gateway/usage-limits.mdx +2 -2
  6. package/docs/api-management/overview.md +2 -2
  7. package/docs/articles/add-api-to-backstage.mdx +4 -3
  8. package/docs/articles/api-key-consumer-bucket-portal-ui.mdx +1 -1
  9. package/docs/articles/api-key-management.mdx +1 -1
  10. package/docs/articles/custom-domains.mdx +3 -2
  11. package/docs/articles/migrate-from-apigee.md +3 -3
  12. package/docs/articles/migrate-from-aws-api-gateway.md +3 -3
  13. package/docs/articles/migrate-from-azure-apim.md +3 -3
  14. package/docs/articles/migrate-from-kong.md +3 -3
  15. package/docs/articles/source-control-setup-github.mdx +2 -2
  16. package/docs/articles/source-control.mdx +4 -3
  17. package/docs/articles/testing.mdx +5 -5
  18. package/docs/articles/upstream-iam-auth.mdx +2 -2
  19. package/docs/cli/create-zuplo-api.mdx +4 -4
  20. package/docs/cli/openapi-merge.mdx +1 -1
  21. package/docs/cli/openapi-merge.partial.mdx +1 -1
  22. package/docs/concepts/ai-gateway.mdx +1 -1
  23. package/docs/concepts/how-zuplo-works.mdx +2 -1
  24. package/docs/concepts/mcp.mdx +4 -4
  25. package/docs/dedicated/architecture.mdx +1 -1
  26. package/docs/dev-portal/migration.mdx +2 -2
  27. package/docs/errors/not-found.mdx +1 -1
  28. package/docs/getting-started/ai-gateway/portal.mdx +181 -0
  29. package/docs/getting-started/dev-portal/agent.mdx +148 -0
  30. package/docs/getting-started/dev-portal/index.mdx +26 -0
  31. package/docs/getting-started/dev-portal/local.mdx +213 -0
  32. package/docs/getting-started/dev-portal/portal.mdx +146 -0
  33. package/docs/{articles/step-3-add-api-key-auth.mdx → getting-started/gateway/add-api-key-auth/index.mdx} +32 -23
  34. package/docs/{articles/step-3-add-api-key-auth-local.mdx → getting-started/gateway/add-api-key-auth/local.mdx} +28 -20
  35. package/docs/{articles/step-2-add-rate-limiting.mdx → getting-started/gateway/add-rate-limiting/index.mdx} +22 -13
  36. package/docs/{articles/step-2-add-rate-limiting-local.mdx → getting-started/gateway/add-rate-limiting/local.mdx} +24 -14
  37. package/docs/getting-started/gateway/agent.mdx +199 -0
  38. package/docs/{articles/step-4-deploying-to-the-edge.mdx → getting-started/gateway/deploy-to-the-edge/index.mdx} +39 -27
  39. package/docs/{articles/step-4-deploying-to-the-edge-local.mdx → getting-started/gateway/deploy-to-the-edge/local.mdx} +48 -17
  40. package/docs/{articles/step-5-dynamic-rate-limiting.mdx → getting-started/gateway/dynamic-rate-limiting/index.mdx} +24 -12
  41. package/docs/{articles/step-5-dynamic-rate-limiting-local.mdx → getting-started/gateway/dynamic-rate-limiting/local.mdx} +24 -12
  42. package/docs/getting-started/gateway/index.mdx +24 -0
  43. package/docs/{articles/step-1-setup-basic-gateway.mdx → getting-started/gateway/setup-a-basic-gateway/index.mdx} +33 -21
  44. package/docs/{articles/step-1-setup-basic-gateway-local.mdx → getting-started/gateway/setup-a-basic-gateway/local.mdx} +24 -15
  45. package/docs/getting-started/index.mdx +25 -0
  46. package/docs/getting-started/mcp-gateway/agent.mdx +161 -0
  47. package/docs/getting-started/mcp-gateway/index.mdx +25 -0
  48. package/docs/{mcp-gateway/quickstart-local.mdx → getting-started/mcp-gateway/local.mdx} +64 -38
  49. package/docs/{mcp-gateway/quickstart.mdx → getting-started/mcp-gateway/portal.mdx} +71 -54
  50. package/docs/getting-started/mcp-server/agent.mdx +152 -0
  51. package/docs/getting-started/mcp-server/index.mdx +25 -0
  52. package/docs/{articles/mcp-quickstart-local.mdx → getting-started/mcp-server/local.mdx} +24 -13
  53. package/docs/{articles/mcp-quickstart.mdx → getting-started/mcp-server/portal.mdx} +35 -15
  54. package/docs/getting-started/migrate/agent.mdx +129 -0
  55. package/docs/getting-started/migrate/index.mdx +25 -0
  56. package/docs/getting-started/migrate/local.mdx +141 -0
  57. package/docs/getting-started/migrate/portal.mdx +129 -0
  58. package/docs/home.mdx +6 -0
  59. package/docs/mcp-gateway/connect-clients/chatgpt.mdx +2 -1
  60. package/docs/mcp-gateway/connect-clients/claude-code.mdx +2 -1
  61. package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +23 -20
  62. package/docs/mcp-gateway/connect-clients/cursor.mdx +2 -1
  63. package/docs/mcp-gateway/connect-clients/overview.mdx +2 -1
  64. package/docs/mcp-gateway/connect-clients/vs-code.mdx +2 -1
  65. package/docs/mcp-gateway/how-it-works.mdx +2 -2
  66. package/docs/mcp-gateway/how-to/connect-upstream-api-key.mdx +4 -3
  67. package/docs/mcp-gateway/how-to/curate-tools.mdx +3 -2
  68. package/docs/mcp-gateway/overview.mdx +3 -3
  69. package/docs/policies/ai-gateway-smart-router-inbound/doc.md +14 -0
  70. package/docs/policies/akamai-ai-firewall-v2-inbound/doc.md +7 -0
  71. package/package.json +5 -5
  72. package/docs/ai-gateway/getting-started.mdx +0 -307
  73. package/docs/dev-portal/local-development.mdx +0 -72
@@ -1,98 +1,104 @@
1
1
  ---
2
2
  title: Codex
3
3
  sidebar_label: Codex
4
- description:
5
- Configure the Codex CLI to send its requests through an AI Gateway app, either
6
- by rerouting the built-in OpenAI provider or by adding a Zuplo provider.
4
+ description: Route Codex CLI requests through a Zuplo AI Gateway app.
7
5
  ---
8
6
 
9
- [Codex](https://developers.openai.com/codex) is a coding agent developed by
10
- OpenAI that you can run locally from your terminal and that can read, modify,
11
- and run code on your machine, in the chosen directory. It’s open-source, and
12
- built in Rust for speed and efficiency.
7
+ [Codex](https://developers.openai.com/codex) is OpenAI's coding agent for the
8
+ terminal. This guide routes its requests through the Zuplo AI Gateway.
13
9
 
14
10
  ## Prerequisites
15
11
 
16
- In order to use the AI Gateway with Codex you will need to complete these steps
17
- first:
18
-
19
12
  <Stepper>
20
13
 
21
- 1. Create a [new provider](../managing-providers.mdx) in the AI Gateway for the
22
- provider you want to use with Codex
14
+ 1. Create a [provider](../managing-providers.mdx) in the AI Gateway.
23
15
 
24
- 2. [Set up a new team](../managing-teams.mdx)
16
+ 2. [Create a team](../managing-teams.mdx).
25
17
 
26
- 3. Create a [new app](../managing-apps.mdx) to use specifically with Codex and
27
- assign it to the team you created
18
+ 3. [Create an app](../managing-apps.mdx) for Codex and assign it to the team.
28
19
 
29
- 4. Copy the **API URL** and **API Key** shown at the top of the app page
20
+ 4. Copy the **API URL** and **API Key** from the app page.
30
21
 
31
22
  </Stepper>
32
23
 
33
- ## Configure Codex CLI
34
-
35
- There are two approaches you can take to using Codex with Zuplo's AI Gateway.
36
-
37
- 1. **Route OpenAI through AI Gateway** - This would configure your OpenAI
38
- provider in Codex to route requests through the AI Gateway rather than
39
- directly to OpenAI
24
+ ## Configure Codex
40
25
 
41
- 2. **Create a Zuplo specific provider** - Use Zuplo as a provider that be
42
- selected in the Codex configuration and work with any OpenAI compatible
43
- models
26
+ :::warning{title="Replace the provider name"}
44
27
 
45
- Configuration steps for both options are below:
28
+ The examples assume your provider is named `openai`. Replace that prefix with
29
+ the name of **your** provider before copying anything. A provider named
30
+ `my-openai` routes `my-openai/gpt-5`. The model part must be an ID that provider
31
+ serves. Check [your provider's page](../managing-providers.mdx) in the Portal.
46
32
 
47
- ### Route OpenAI through AI Gateway
33
+ :::
48
34
 
49
- Open the [Codex configuration](https://developers.openai.com/codex/local-config)
50
- `~/.codex/config.toml` and modify the `model_providers.openai-chat-completions`
51
- entry so that the `base_url` points to your app's API URL with `/v1` appended,
52
- and set your `env_key` to the API Key of the app you created to use with Codex.
53
- The app page in the Zuplo Portal shows the API URL, which ends in the app's ID.
35
+ Codex reads configuration from `~/.codex/config.toml`. Create this file (and the
36
+ `~/.codex` directory if needed) if it does not exist. Add the following:
54
37
 
55
38
  ```toml
56
- [model_providers.openai-chat-completions]
57
- name = "OpenAI using Chat Completions"
39
+ model_provider = "zuplo"
40
+ model = "openai/gpt-5"
41
+
42
+ [model_providers.zuplo]
43
+ name = "Zuplo AI Gateway"
58
44
  base_url = "https://my-gateway-main-2e18f50.zuplo.app/config_fe0a04972d2848e0a94ae4b8bcd1497e/v1"
59
45
  env_key = "ZUPLO_AI_GATEWAY_API_KEY"
46
+ wire_api = "responses"
60
47
  ```
61
48
 
62
- Save the file and reload Codex. Your OpenAI requests will now be routed through
63
- the Zuplo AI Gateway.
49
+ - `base_url` is the app's API URL with `/v1` appended.
50
+ - `model` is `providerName/model`.
64
51
 
65
- ### Zuplo AI Gateway provider
52
+ Set the API key in your environment:
66
53
 
67
- To add a specific provider for the AI Gateway you can add an additional entry to
68
- the Codex `config.toml` file.
69
-
70
- ```toml
71
- [model_providers.zuplo]
72
- name = "Zuplo AI Gateway"
73
- base_url = "https://my-gateway-main-2e18f50.zuplo.app/config_fe0a04972d2848e0a94ae4b8bcd1497e/v1"
74
- env_key = "ZUPLO_AI_GATEWAY_API_KEY"
54
+ ```bash
55
+ export ZUPLO_AI_GATEWAY_API_KEY="<your-app-api-key>"
75
56
  ```
76
57
 
77
- Save the file and reload Codex. Your Zuplo AI Gateway provider will now be
78
- available and you can switch Codex over to use it at any time by running:
58
+ Restart Codex. All requests now go through the gateway.
59
+
60
+ ### Rules
61
+
62
+ - `model_provider = "zuplo"` is required. Without it, Codex uses its built-in
63
+ `openai` provider and bypasses the gateway.
64
+ - `wire_api` must be `responses`. Codex speaks only the Responses API; it
65
+ [removed](https://github.com/openai/codex/discussions/7782) support for
66
+ `/v1/chat/completions`, and `wire_api = "chat"` fails to load.
67
+ - Put this configuration in the user-level file. Codex ignores `model_provider`
68
+ and `model_providers` in a project-level `.codex/config.toml`.
69
+
70
+ ## Switch models
71
+
72
+ Set `model` in `config.toml`, or pass it on the command line:
79
73
 
80
74
  ```bash
81
- codex --config model_provider="zuplo"
75
+ codex --config model_provider="zuplo" --model "openai/gpt-5.6-sol"
82
76
  ```
83
77
 
84
- ### Choosing a model
78
+ Do not use the `/model` picker. It sends model names without the provider
79
+ prefix, and the gateway rejects them with a `400`.
80
+
81
+ Codex warns that it has no metadata for a prefixed model name. Requests still
82
+ succeed.
85
83
 
86
84
  The app's
87
85
  [Model Filtering](../../policies/ai-gateway-model-filtering-v2-inbound.mdx)
88
- policy controls which models the app may use. Codex names the model as
89
- `providerName/model`, where `providerName` is the provider name configured in
90
- your gateway:
86
+ policy controls which models the app can use.
87
+
88
+ ## Verify
91
89
 
92
90
  ```bash
93
- codex --config model_provider="zuplo" --model "openai/gpt-5"
91
+ codex exec "Reply with the single word OK"
94
92
  ```
95
93
 
96
- A request with no model, or a model without that prefix, gets a `400`. Adding
97
- [Model Filtering](../../policies/ai-gateway-model-filtering-v2-inbound.mdx) with
98
- an allow list also supplies a default, letting requests omit the model.
94
+ The session header shows `provider: zuplo`. The request appears in the app's
95
+ usage in the Zuplo Portal.
96
+
97
+ ## Troubleshooting
98
+
99
+ | Error | Fix |
100
+ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
101
+ | `400` `The request body model must use "providerName/model"` | Add the provider prefix to `model`. Do not use the `/model` picker. |
102
+ | `ERROR: Missing environment variable: ZUPLO_AI_GATEWAY_API_KEY` | Export the variable in the shell that runs Codex. |
103
+ | `401` `Authorization Failed` | The API key is wrong. Copy it from the app's **API Key** tab. |
104
+ | Errors mention `api.openai.com` or `not supported when using Codex with a ChatGPT account` | Codex is not using your provider. Set `model_provider = "zuplo"`. |
@@ -357,8 +357,8 @@ Each app, team, and the gateway show current usage against their limits:
357
357
 
358
358
  ## Related Resources
359
359
 
360
- - [Getting Started](./getting-started.mdx) - Set up your first AI Gateway
361
- project with budget controls
360
+ - [Getting Started](../getting-started/ai-gateway/portal.mdx) - Set up your
361
+ first AI Gateway project with budget controls
362
362
  - [Managing Teams](./managing-teams.mdx) - Configure team-level budgets
363
363
  - [Managing Apps](./managing-apps.mdx) - Configure app-level limits
364
364
  - [Fallback Models](./fallback.mdx) - Serve a cheaper model instead of blocking
@@ -11,8 +11,8 @@ designed for developers. It offers fast deployment, GitOps-friendly workflows,
11
11
  and unlimited environments. Whether you're an individual developer or part of an
12
12
  engineering team, Zuplo makes it easy to:
13
13
 
14
- - [Add authentication and access control](../articles/step-3-add-api-key-auth.mdx)
15
- - [Implement rate limiting](../articles/step-2-add-rate-limiting.mdx)
14
+ - [Add authentication and access control](../getting-started/gateway/add-api-key-auth/index.mdx)
15
+ - [Implement rate limiting](../getting-started/gateway/add-rate-limiting/index.mdx)
16
16
  - Write custom logic to run at the gateway layer
17
17
  - Build a [rich developer portal](../dev-portal/overview.mdx) with self-serve
18
18
  tools for auth and monetization
@@ -26,9 +26,10 @@ Add a new route with the path `/openapi`, and select the `OpenAPI Spec Handler`
26
26
  from the Request Handler selector. Save your changes and commit them to your
27
27
  production branch. If you haven't already connected your Zuplo API to a GitHub
28
28
  repository, you can follow
29
- [these instructions](./step-4-deploying-to-the-edge.mdx) to do so. Once your
30
- Zuplo API is redeployed, you should now be able to retrieve your public-ready
31
- OpenAPI file by hitting `https://<your-prod-zuplo-api-domain>/openapi`.
29
+ [these instructions](../getting-started/gateway/deploy-to-the-edge/index.mdx) to
30
+ do so. Once your Zuplo API is redeployed, you should now be able to retrieve
31
+ your public-ready OpenAPI file by hitting
32
+ `https://<your-prod-zuplo-api-domain>/openapi`.
32
33
 
33
34
  ![Zuplo route](../../public/media/add-api-to-backstage/image-3.png)
34
35
 
@@ -23,7 +23,7 @@ managers), see [Manage Keys in the Portal](./api-key-administration.mdx).
23
23
  ## Prerequisites
24
24
 
25
25
  - A Zuplo project with at least one deployed environment (see the
26
- [getting started tutorial](./step-1-setup-basic-gateway.mdx))
26
+ [getting started tutorial](../getting-started/gateway/setup-a-basic-gateway/index.mdx))
27
27
  - The [API Key Authentication policy](../policies/api-key-inbound.mdx)
28
28
  configured on your routes
29
29
  - Permission to manage API key consumers in your project
@@ -11,7 +11,7 @@ your backend.
11
11
  :::tip
12
12
 
13
13
  To start using Zuplo API Keys in only a few minutes
14
- [see the quickstart](../articles/step-3-add-api-key-auth.mdx).
14
+ [see the quickstart](../getting-started/gateway/add-api-key-auth/index.mdx).
15
15
 
16
16
  :::
17
17
 
@@ -22,8 +22,9 @@ Zuplo supports two types of custom domains that can be configured separately:
22
22
  `cname.zuplodocs.com`. Learn more about the Developer Portal in the
23
23
  [Developer Portal documentation](/docs/dev-portal/overview).
24
24
 
25
- Both types of custom domains can be managed from the same Custom Domains section
26
- in your project settings and follow a similar configuration process.
25
+ Manage both types of custom domains in
26
+ [**Account Settings → Custom Domains**](https://portal.zuplo.com/+/account/settings/custom-domains).
27
+ They follow a similar configuration process.
27
28
 
28
29
  :::note
29
30
 
@@ -401,8 +401,8 @@ between both gateways.
401
401
 
402
402
  ## Next steps
403
403
 
404
- - [Set up your first Zuplo gateway](./step-1-setup-basic-gateway.md)
405
- - [Add rate limiting](./step-2-add-rate-limiting.md)
406
- - [Add API key authentication](./step-3-add-api-key-auth.md)
404
+ - [Set up your first Zuplo gateway](../getting-started/gateway/setup-a-basic-gateway/index.mdx)
405
+ - [Add rate limiting](../getting-started/gateway/add-rate-limiting/index.mdx)
406
+ - [Add API key authentication](../getting-started/gateway/add-api-key-auth/index.mdx)
407
407
  - [Configure your developer portal](../dev-portal/overview.mdx)
408
408
  - [Set up source control](./source-control.md)
@@ -241,8 +241,8 @@ secrets to secure the connection between Zuplo and your AWS backends.
241
241
 
242
242
  ## Next steps
243
243
 
244
- - [Set up your first Zuplo gateway](./step-1-setup-basic-gateway.md)
245
- - [Add rate limiting](./step-2-add-rate-limiting.md)
246
- - [Add API key authentication](./step-3-add-api-key-auth.md)
244
+ - [Set up your first Zuplo gateway](../getting-started/gateway/setup-a-basic-gateway/index.mdx)
245
+ - [Add rate limiting](../getting-started/gateway/add-rate-limiting/index.mdx)
246
+ - [Add API key authentication](../getting-started/gateway/add-api-key-auth/index.mdx)
247
247
  - [Configure your developer portal](../dev-portal/overview.mdx)
248
248
  - [Set up source control](./source-control.md)
@@ -285,8 +285,8 @@ connection between Zuplo and your Azure backends.
285
285
 
286
286
  ## Next steps
287
287
 
288
- - [Set up your first Zuplo gateway](./step-1-setup-basic-gateway.md)
289
- - [Add rate limiting](./step-2-add-rate-limiting.md)
290
- - [Add API key authentication](./step-3-add-api-key-auth.md)
288
+ - [Set up your first Zuplo gateway](../getting-started/gateway/setup-a-basic-gateway/index.mdx)
289
+ - [Add rate limiting](../getting-started/gateway/add-rate-limiting/index.mdx)
290
+ - [Add API key authentication](../getting-started/gateway/add-api-key-auth/index.mdx)
291
291
  - [Configure your developer portal](../dev-portal/overview.mdx)
292
292
  - [Set up source control](./source-control.md)
@@ -293,8 +293,8 @@ configuration-as-code. Zuplo takes this further with native GitOps:
293
293
 
294
294
  ## Next steps
295
295
 
296
- - [Set up your first Zuplo gateway](./step-1-setup-basic-gateway.md)
297
- - [Add rate limiting](./step-2-add-rate-limiting.md)
298
- - [Add API key authentication](./step-3-add-api-key-auth.md)
296
+ - [Set up your first Zuplo gateway](../getting-started/gateway/setup-a-basic-gateway/index.mdx)
297
+ - [Add rate limiting](../getting-started/gateway/add-rate-limiting/index.mdx)
298
+ - [Add API key authentication](../getting-started/gateway/add-api-key-auth/index.mdx)
299
299
  - [Configure your developer portal](../dev-portal/overview.mdx)
300
300
  - [Set up source control](./source-control.md)
@@ -11,8 +11,8 @@ configuration required.
11
11
 
12
12
  This guide assumes you have a Zuplo project created. If you don't have one yet,
13
13
  follow the steps in
14
- [Step 1 - Setup a Basic Gateway](./step-1-setup-basic-gateway.mdx) to create a
15
- new Zuplo project.
14
+ [Step 1 - Setup a Basic Gateway](../getting-started/gateway/setup-a-basic-gateway/index.mdx)
15
+ to create a new Zuplo project.
16
16
 
17
17
  <Stepper>
18
18
 
@@ -65,9 +65,10 @@ If your code lives elsewhere but you want to use a specific CI/CD system:
65
65
 
66
66
  ## How Branch-Based Deployments Work
67
67
 
68
- Every Git branch maps to a Zuplo environment. Push to `main` and deploy to your
69
- main environment. Push to `feature-auth` and get a `feature-auth` environment
70
- automatically.
68
+ With the GitHub integration, every Git branch maps to a Zuplo environment. Push
69
+ to `main` and deploy to your main environment. Push to `feature-auth` and get a
70
+ `feature-auth` environment automatically. For other providers, configure your
71
+ CI/CD pipeline to deploy each branch.
71
72
 
72
73
  This enables powerful workflows like PR preview environments where reviewers can
73
74
  test changes against a live API before merging.
@@ -140,11 +140,11 @@ and the same file supplies fixture values to `zuplo test`. See
140
140
 
141
141
  ## Test before merge
142
142
 
143
- Every branch pushed to your connected source control provider deploys as a
144
- preview environment: a full Zuplo deployment on the same edge network as
145
- production, at its own URL. Running your suite there is the highest-fidelity
146
- check available before a change merges, and it needs no shared staging
147
- environment.
143
+ With the GitHub integration, pushing a feature branch automatically creates a
144
+ preview environment at its own URL. For GitLab, Bitbucket, or Azure DevOps,
145
+ configure a [CI/CD pipeline](./custom-ci-cd.mdx) to deploy the branch. Running
146
+ your suite against a preview deployment lets you test changes before merging
147
+ without a shared staging environment.
148
148
 
149
149
  - [Testing preview environments](./testing-preview-environments.mdx) — getting
150
150
  the URL into your tests, per-environment services and secrets, and what to
@@ -19,8 +19,8 @@ identity provider you control. For the alternatives, see
19
19
 
20
20
  ## Federated identity or stored credentials
21
21
 
22
- Every provider offers two paths, and the choice matters more than which cloud
23
- you're on.
22
+ Zuplo offers federated identity and stored-credential policies. The available
23
+ options depend on your cloud provider, as shown in the policy table below.
24
24
 
25
25
  **Federated identity** is the stronger option. Zuplo presents a short-lived,
26
26
  audience-bound OIDC token that proves which gateway is calling, and your cloud
@@ -42,7 +42,7 @@ npx create-zuplo-api@latest
42
42
  (`claude`, `copilot`, `cursor`, `windsurf`, `codex`), or `none` to skip agent
43
43
  setup. See [Configuring AI coding agents](#configuring-ai-coding-agents)
44
44
  - `--template <template-name>` - A built-in template to bootstrap the API with
45
- (`default`, `default-empty`, or `ai-gateway-v2`). Can't be combined with
45
+ (`default`, `default-empty`, or `ai-gateway`). Can't be combined with
46
46
  `--example` or `--empty`. See [Choosing a template](#choosing-a-template)
47
47
  - `-e, --example <example-name|github-url>` - An example to bootstrap the API
48
48
  with. You can use an example name from the official Zuplo repository or a
@@ -88,18 +88,18 @@ flag you get the `default` template.
88
88
  | --------------- | --------------------------------------------------------------------------------------------- |
89
89
  | `default` | Sample `/todos` routes, a `hello-world` module, a dev portal in `docs/`, and VS Code settings |
90
90
  | `default-empty` | The same project with no routes defined and no VS Code settings |
91
- | `ai-gateway-v2` | An [AI Gateway](../ai-gateway/overview.mdx) project, without a dev portal |
91
+ | `ai-gateway` | An [AI Gateway](../ai-gateway/overview.mdx) project, without a dev portal |
92
92
 
93
93
  `--empty` is shorthand for `--template default-empty`.
94
94
 
95
- The `ai-gateway-v2` template scaffolds `config/ai.oas.json`, which routes
95
+ The `ai-gateway` template scaffolds `config/ai.oas.json`, which routes
96
96
  `/:app_id/v1/*` to the AI Gateway handler, and `config/policies.json`, which
97
97
  declares the policies an application's policy chain can select. It ships no
98
98
  `docs/` directory, so the CLI skips the
99
99
  [dev portal](../dev-portal/overview.mdx) workspace:
100
100
 
101
101
  ```bash
102
- npx create-zuplo-api@latest my-gateway --template ai-gateway-v2
102
+ npx create-zuplo-api@latest my-gateway --template ai-gateway
103
103
  ```
104
104
 
105
105
  `--template` names a built-in template, which is why it can't be combined with
@@ -125,7 +125,7 @@ To rename the destination file, use the `--destination` option.
125
125
  ```bash
126
126
  zuplo openapi merge \
127
127
  --source https://example.com/path/to/openapi.json \
128
- --destination new-name
128
+ --destination ./config/new-name.oas.json
129
129
  ```
130
130
 
131
131
  </CliCommand>
@@ -25,5 +25,5 @@ To rename the destination file, use the `--destination` option.
25
25
  ```bash
26
26
  zuplo openapi merge \
27
27
  --source https://example.com/path/to/openapi.json \
28
- --destination new-name
28
+ --destination ./config/new-name.oas.json
29
29
  ```
@@ -64,7 +64,7 @@ are the same ones described in [How Zuplo Works](./how-zuplo-works.mdx).
64
64
 
65
65
  ## Next steps
66
66
 
67
- - [Get started with the AI Gateway](../ai-gateway/getting-started.mdx)
67
+ - [Get started with the AI Gateway](../getting-started/ai-gateway/portal.mdx)
68
68
  - [Browse the SDK integrations](../ai-gateway/integrations/openai.mdx) for
69
69
  OpenAI, the Vercel AI SDK, LangChain, Claude Code, Codex, and Goose
70
70
  - Explore the [AI Gateway policies](../ai-gateway/policies/overview.mdx)
@@ -87,7 +87,8 @@ workflow is:
87
87
 
88
88
  1. **Develop** locally or in the Zuplo Portal
89
89
  2. **Push** to your Git repository (GitHub, GitLab, Bitbucket, or Azure DevOps)
90
- 3. **Deploy** automatically - Zuplo builds and deploys your gateway globally
90
+ 3. **Deploy** automatically with the GitHub integration, or configure a CI/CD
91
+ pipeline to deploy from GitLab, Bitbucket, or Azure DevOps
91
92
 
92
93
  Deployments complete in seconds. Each Git branch gets its own isolated
93
94
  environment with its own URL, making it easy to test changes before merging to
@@ -55,9 +55,9 @@ apply to any other route.
55
55
 
56
56
  ## Next steps
57
57
 
58
- - [MCP Gateway quickstart](../mcp-gateway/quickstart.mdx) — expose an upstream
59
- MCP server and connect Claude Desktop
60
- - [MCP quickstart for the MCP Server handler](../articles/mcp-quickstart.mdx) —
61
- turn an API into MCP tools
58
+ - [MCP Gateway quickstart](../getting-started/mcp-gateway/portal.mdx) — expose
59
+ an upstream MCP server and connect Claude Desktop
60
+ - [MCP quickstart for the MCP Server handler](../getting-started/mcp-server/portal.mdx)
61
+ — turn an API into MCP tools
62
62
  - [Connect MCP clients](../mcp-gateway/connect-clients/overview.mdx) — Claude,
63
63
  ChatGPT, Cursor, VS Code, and others
@@ -19,7 +19,7 @@ A managed dedicated instance of Zuplo consists of the following components:
19
19
  authorization, rate limiting, and other features.
20
20
  - **Gateway Services**: Zuplo, being a highly distributed gateway, uses services
21
21
  to facilitate features such as
22
- [Rate Limiting](../articles/step-2-add-rate-limiting.mdx) and
22
+ [Rate Limiting](../getting-started/gateway/add-rate-limiting/index.mdx) and
23
23
  [API Key Authentication](../articles/api-key-management.mdx).
24
24
  - **Control Plane**: The Control Plane manages the configuration of the Zuplo
25
25
  Gateway. It deploys new configurations, manages the lifecycle of the Zuplo
@@ -125,8 +125,8 @@ process, continue with the manual migration steps below.
125
125
 
126
126
  :::caution
127
127
 
128
- Currently, this migration must be done locally. It cannot be done in the
129
- Zuplo Portal.
128
+ Follow these manual migration steps locally. To migrate in the Zuplo Portal,
129
+ use the [built-in migration tool](#migrate-in-the-portal).
130
130
 
131
131
  :::
132
132
 
@@ -40,4 +40,4 @@ response when no route matches. See
40
40
  ## Related resources
41
41
 
42
42
  - [Routes Designer](../articles/local-development-routes-designer.mdx)
43
- - [Deploying to the Edge](../articles/step-4-deploying-to-the-edge.mdx)
43
+ - [Deploying to the Edge](../getting-started/gateway/deploy-to-the-edge/index.mdx)