app.manylayers.io. A self-hosted stack runs the two services on separate ports:
| What | Hosted address | Self-hosted default |
|---|---|---|
Gateway (the /v1 data plane) | https://app.manylayers.io/v1 | http://localhost:8180/v1 |
Console and admin API (/ui/, /auth/*, /admin/*, /w/*) | https://app.manylayers.io | http://localhost:8190 |
Check the gateway is up
/health (also /healthz) is liveness and checks nothing. /ready (also /readyz) checks Postgres, and Redis when configured.Add a provider and models
- Console
- Admin API
- gateway.yaml (self-hosted)
Sign in at
https://app.manylayers.io/ui/, open Providers in the Gateway console, choose Add provider, pick a type (for example openai) and a name, then add a credential (a pasted key, or a reference such as ${OPENAI_API_KEY}) and enable the models you want to serve./v1/chat/completions, /v1/responses and /v1/messages for keys bound to that workspace, and also /v1/embeddings, /v1/rerank and speech. See Supported APIs for the rest.Create a credential
Choose the credential that fits. See Authentication for all types.The response contains the plaintext
- API key (
ml-...): in the Gateway console open API Keys and choose New key, or callPOST /admin/keys. Passworkspace_idto bind the key to a workspace’s console providers; leave it out for a team-scoped key that resolves models fromgateway.yaml. - Personal access token (
ml_pat_...): in the Gateway console open Access, then Personal Access Tokens. A PAT is issued only from a signed-in console session, acts as you, belongs to one workspace, and every PAT needs an expiry date. Use it to try the gateway yourself.
key exactly once; only its hash is stored. The team must already exist.Send your first request
Point any OpenAI client at The response carries an
https://app.manylayers.io/v1:X-ManyLayers-Trace-Id header (unless the routing config enables strict_openai_compliance). Use it to find the request under Request Traces in the console. To see the models your credential can reach, call GET /v1/models. You can also try a model without writing code in the console’s Playground.Try routing and caching
- Routing: create a gateway config (fallback, load balancing, canary and others) under Routing in the console, then select it per request with
X-ManyLayers-Config: <name>, or set it as the team default. See Routing. - Caching: the cache must be enabled on the deployment (
cache.enabled) and for the team. Requests withtemperature: 0are then cached, and theX-ManyLayers-Cacheresponse header reportshit,semantic,miss,bypassordisabled. See Caching.
If a model name resolves to nothing for your credential, the gateway returns
404 model_not_found. A key bound to a workspace resolves chat models only from that workspace’s console providers, never from gateway.yaml. A bad or missing key returns 401 invalid_api_key.Next steps
Making requests
Streaming, embeddings, the Responses API and gateway headers.
Providers
Configuration for each provider type.
Rate limits
Put limits and budgets on your new key.