The fastest path to production
- Control plane and data plane both run in Mortar's cloud
- Mortar operates the stack and the GPU capacity
- Pick a model, set limits, get an endpoint
Serve open-source and custom models with prefix-aware routing, tiered KV caching, autoscaling, GPU governance, and token-level cost visibility—inside Mortar's cloud or your own cloud account.
Deployments
4 deployments across 3 environments
| Deployment | Model | Environment | GPU | Replicas | Status |
|---|---|---|---|---|---|
| support-assistant | Qwen 2.5 7B Instruct | L4 | 3 / 6 | ||
| claims-summarizer | Llama 3.1 8B Instruct | A10G | 2 / 4 | ||
| code-review-bot | Qwen 2.5 32B Instruct | L40S | 1 / 3 | ||
| batch-classifier | Mistral 7B Instruct | L4 | 0 / 2 |
Rollout of code-review-bot to BYOC · acme-prod
Private endpoint
https://llm.acme-prod.internal/v1
OpenAI-compatible. Prompts and outputs stay inside acme-prod's VPC. Only token counts, latency and node-hours reach Mortar.
Model catalog
Tested engine settings, quantization and GPU sizing for every model
Alibaba Qwen
Meta Llama
Mistral AI
Alibaba Qwen
Meta Llama
DeepSeek
Usage and cost
Last 30 days, all environments
Spend by deployment
GPU quota by team
At quota
2 idle GPUs lent to batch jobs, reclaimed on demand
Product preview. Interface and data are illustrative.
Built on proven open-source infrastructure
BYOC changes where the data plane runs, not who runs the platform. Mortar builds, ships and operates the same software in both.
First available on Amazon EKS, with GKE and AKS to follow.
mortar-agent
Your apps call /v1/chat/completions here
mortar-agent
Your apps call /v1/chat/completions here
Choose a model, environment, GPU class, scaling range and budget and latency policy in one console.
An agent in each data plane pulls the versioned spec over an outbound, authenticated channel and applies it locally.
Applications call an OpenAI-compatible endpoint served directly by the selected data plane.
Requests go to the replica that already holds their prompt prefix, so shared system prompts are not prefilled again.
| Ready replica | Waiting | Cached |
|---|---|---|
| support-assistant- |
2 | 0 |
| support-assistant- |
3 | 1,664 |
| support-assistant- |
0 | 0 |
KV state is reused across GPU memory, host memory and storage tiers instead of being thrown away.
| Tier | Hits | Fetch per 1K |
|---|---|---|
| GPU HBM | 68% | 0.4 ms |
| Host memory | 24% | 3.1 ms |
| Storage (LMCache) | 8% | 11.5 ms |
Cost per million input and output tokens, broken down by model, project and tenant.
| Deployment | Tokens | Per 1M |
|---|---|---|
| support-assistant | 820M | $1.51 |
| claims-summarizer | 540M | $1.59 |
| code-review-bot | 380M | $1.61 |
| batch-classifier | 160M | $1.19 |
| Blended | 1.9B | $1.53 |
Replicas scale on pending requests and cache pressure, and GPU nodes are added or removed to match.
Authenticated tenant identity, cache-key salting and per-tenant rate and budget limits at the gateway.
Team quotas, borrowing and priority preemption keep interactive traffic fast while idle GPUs stay busy.
At quota
2 idle GPUs lent to batch jobs, reclaimed on demand
Curated open-source models with tested engine settings, or your own fine-tuned weights and LoRA adapters.
Model allow-lists, environment placement, API-key lifecycle and change approval from one control plane.
BYOC uses the same platform capabilities with infrastructure boundaries managed in your cloud account.
{
"deployment": "claims-summarizer",
"environment": "acme-prod",
"window": "2026-10-28T09:00Z/PT1H",
"requests": 1842,
"prompt_tokens": 2190411,
"completion_tokens": 271624,
"ttft_ms_p50": 214,
"node_hours": 2.0
}Point the OpenAI SDK you already use at a Mortar endpoint. No new client, no rewrite, the same code in Managed Cloud and BYOC.
from openai import OpenAI
import os
client = OpenAI(
base_url="https://<your-mortar-endpoint>/v1",
api_key=os.environ["MORTAR_API_KEY"],
)
reply = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[{"role": "user", "content": "Hello, Mortar!"}],
)
print(reply.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://<your-mortar-endpoint>/v1",
apiKey: process.env.MORTAR_API_KEY,
});
const reply = await client.chat.completions.create({
model: "Qwen/Qwen2.5-7B-Instruct",
messages: [{ role: "user", content: "Hello, Mortar!" }],
});
console.log(reply.choices[0].message.content);curl https://<your-mortar-endpoint>/v1/chat/completions \
-H "Authorization: ******" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "Hello, Mortar!"}]
}'Streaming over an OpenAI-compatible endpoint, with the serving telemetry Mortar records for every request alongside it.
Prompts run once you sign in, and the one you write comes with you. Sign in