# AI Gateway Concepts

The Zuplo AI Gateway is a proxy that sits between your apps, your people, and
LLM providers like OpenAI, Anthropic, Google, Mistral, and xAI. Instead of each
app holding provider API keys and calling providers directly, every request
flows through the gateway, which applies policies, controls, and monitoring.
This page explains the concepts behind it. For the full feature tour, see the
[AI Gateway overview](../ai-gateway/overview.mdx).

## Providers, pools, and apps

Four building blocks organize an AI Gateway:

- **[Providers](../ai-gateway/providers.mdx)** are the LLM vendors your gateway
  can route to. Administrators configure providers once, including any
  [custom OpenAI-compatible providers](../ai-gateway/custom-providers.mdx), and
  consumers never see the underlying credentials.
- **[Pools](../ai-gateway/pools.mdx)** group apps and carry budget limits. Each
  pool totals usage across its sub-pools and apps. A request must remain within
  the gateway, ancestor pool, and app limits. See
  [Usage Limits](../ai-gateway/usage-limits.mdx).
- **[Apps](../ai-gateway/apps.mdx)** are the pieces of software that call the
  gateway — a support chatbot is one app, an internal coding agent is another.
  Each app gets its own gateway URL, its own Zuplo-managed API key, and its own
  policy chain.
- **The [User App](../ai-gateway/user-apps.mdx)** is how people call the gateway
  from their own tools. Each project has one. People call its URL with their own
  personal API key, and each person has their own budget.

## Policy chains

Every app, and the User App, runs its own ordered
[policy chain](../ai-gateway/policy-chains.mdx) — model filtering, fallback
models, budgets, semantic caching, guardrails, tracing, and any
[custom policies](../ai-gateway/custom-policies.mdx) written in TypeScript. Pool
[policy templates](../ai-gateway/policy-templates.mdx) give new apps a
consistent starting pipeline, and chain changes apply within about a minute with
no redeploy.

App-level controls are opt-in: an app with an empty policy chain applies no
model restrictions, budgets, guardrails, or caching of its own — though gateway
and pool usage limits still apply.

## The Universal API

Every app exposes an OpenAI-compatible
[Universal API](../ai-gateway/universal-api.mdx). Point any SDK that supports a
custom base URL at the app's gateway URL, send the app's API key as a bearer
token, and reference models as `providerName/model` (for example
`openai/gpt-6-luna`). One app can use models from several providers through the
same endpoint, so switching providers is a configuration change rather than a
code change.

## How it fits into Zuplo

An AI Gateway is a type of Zuplo project. A new project deploys without a Git
repository; you can [connect a repository](../ai-gateway/source-control.mdx)
later so gateway changes go through the same review workflow as the rest of your
Zuplo configuration. The providers, pools, and apps you configure belong to that
project. The platform primitives — deployment model, environments, analytics —
are the same ones described in [How Zuplo Works](./how-zuplo-works.mdx).

## Next steps

- [Get started with the AI Gateway](../getting-started/ai-gateway/portal.mdx)
- [Browse the SDK integrations](../ai-gateway/integrations/openai.mdx) for
  OpenAI, the Vercel AI SDK, LangChain, Claude Code, Codex, and Goose
- Explore the [AI Gateway policies](../ai-gateway/policies/overview.mdx)
