Introducing Scalaix
An OpenAI-compatible gateway with per-key rules, and an API builder that ships prompts as typed, versioned endpoints. Both live at scalaix.com today.
Most teams we talk to have the same two problems with AI in production.
The first is the integration layer. Every feature talks to a model provider directly. Keys are shared, nobody knows which feature spends what, a provider outage becomes your outage, and switching models means touching code in five places.
The second is the prompt as a product. The prompt that classifies tickets or extracts invoice fields ends up as a string in a service, its output parsed with hope. There's no contract, no version, and no docs for the team that calls it.
Scalaix answers both from one account.
The model gateway
Point any OpenAI client at https://www.scalaix.com/v1 with an sx_ key:
from openai import OpenAI
client = OpenAI(base_url="https://www.scalaix.com/v1", api_key="sx_...")
client.chat.completions.create(model="auto", messages=[{"role": "user", "content": "Hello"}])Behind that one line:
- Rules per key. Allowed models, a default model, which collections it may call, allowed origins and IP ranges, an expiry.
- Budgets and rate limits. A monthly cap in USD and requests per minute, per key. Over the cap is a
402, not a surprise invoice. - Routing. Send
model: "auto"and the gateway picks among your candidates for cost, latency or a balance. - Fallback. An ordered list of models to try when one fails or times out, with a circuit breaker so a bad provider doesn't slow every request.
- Caching. Identical requests answered from cache, for free, with a TTL you choose.
- One usage report across OpenAI, Anthropic, Google and the rest: requests, tokens, billed cost, latency, cache hits and fallbacks by key, model and day.
The API builder
A collection is a set of AI endpoints. Each endpoint has typed input variables (nested objects and arrays included), a system prompt and prompt with {{variables}}, and an output definition: a nested JSON schema built field by field, or text, CSV or XML.
You test drafts in the console against any model, then publish. Publishing freezes the collection into an immutable version, and the endpoint is live:
curl https://www.scalaix.com/acme/support/classify-ticket \
-H "Authorization: Bearer $SCALAIX_API_KEY" \
-d '{"inputs": {"ticket": {"subject": "Charged twice", "body": "..."}}}'The gateway validates inputs, renders the prompt, asks for structured output, checks the answer against your schema (with one repair attempt) and returns data you can trust. Callers pin a version with ?version=3, and every collection gets a generated docs page with inputs, outputs, examples and code.
What it's built on
Scalaix is the developer side of AIBridge, the same platform behind Axyen. Your team, credits and provider keys are shared, so if you already use Axyen you can sign in with the same account.
The gateway is a new Rust service built for this: keys are resolved by hash and cached briefly, usage is batched, and nothing about a request waits on the console.
What's next
File inputs for endpoints (answering over documents in your Data Room), environments, side-by-side model comparison runs, collection templates and prompt evaluations are next. The changelog will say when each one lands.
Create an account, or start with the quickstart.