We built LU Labs as a desktop app that runs open models on your own machine. That part is free and stays free. But a good share of the people who downloaded it wrote back with the same sentence: my laptop cannot hold a 400B model, can you just run it.
So we run it. Same catalog, same tools, someone else's GPUs. This post is the developer version of the pricing page: what the endpoint is, what the numbers mean, and where it stops.
The endpoint
It speaks the OpenAI chat completions shape. Point any client at it:
from openai import OpenAI
client = OpenAI(
base_url="https://lu-labs.ai/api/inference/v1",
api_key="lu_...",
)
resp = client.chat.completions.create(
model="zai-org/GLM-5.3-Flash",
messages=[{"role": "user", "content": "Explain the DSA attention change in GLM-5.3."}],
)
Keys are minted in account settings, up to five of them, format lu_ plus 40 hex characters. We store a SHA-256 hash and nothing else, so the plaintext exists in the create response and never again. Worth saying plainly because it is the part people get wrong when they build this themselves: the key authenticates for inference only. It cannot read your account and it cannot mint more keys. A leaked key can spend your plan's credits, which is bad, and that is the whole blast radius, which is the point.
/models returns what your plan can actually reach, not a catalog you then get 403s from.
The catalog
53 models: 38 for chat and code, 10 for image, 5 for video.
Every plan gets the same 15 chat models. That shortlist is not the cheap leftovers. It includes Kimi K3, Hermes 3 405B, Qwen3 Coder 480B and GLM 5.3 Flash, plus all five of the unrestricted ones. Pro and Max add the remaining 23 for the full 38, among them GLM 5.3, Qwen 3.8 A95B and DeepSeek V4 Flash 0731.
Two properties that are easy to promise and annoying to deliver, so here is where we stand on both:
Tools work on all of them. Including the unrestricted models, which mostly do not ship with a tool-calling template. For those we transport the tool definitions through the prompt instead of the API field, which means agent mode and the coding agent run on Hermes and Euryale the same as on anything else.
Thinking is per model, not a global switch. Some models always think, some never do, some take a toggle, and GLM 5.3 Flash takes an effort level. The /models response carries that per entry, so a client can render the right control instead of guessing.
Image, video and every Create tool are identical on every hosted plan. The chat catalog is the only thing that scales with price.
What a euro buys
Credits, not a flat rate. One monthly pool, spend it on whatever you want.
| Hosted | Hosted Pro | Hosted Max | |
|---|---|---|---|
| Per month | €19 | €49 | €99 |
| Credits | 900,000 | 2,350,000 | 5,000,000 |
| Chat models | 15 | 38 | 38 |
| Images, if you spend it all there | 3,000 | 7,800 | 16,600 |
| Video clips, same | 60 | 156 | 333 |
| Output tokens, cheapest to priciest model | 0.6M to 225M | 1.6M to 587M | 3.5M to 1250M |
| LoRA trainings | 2 | 8 | 20 |
Yearly billing is two months free. Top-ups start at €5 for 165,000 credits, they never expire, and they are spent only after the month's plan credits are gone, so a top-up is never wasted by a quiet month.
The token range is wide because it is a real range. 225M output tokens is Llama 3.1 8B Turbo, which works out to about €0.08 per million output tokens on the €19 plan. 0.6M is Kimi K3, about €30 per million. Same pool, and you choose. The credits follow each model's own rate rather than a blended average, because a blended average is how a bill surprises you.
The four things it does not do
It is not GPT or Claude. Open weights only, by choice. If your evaluation depends on a closed frontier model, this is the wrong endpoint.
It is not unmetered. Cache hits bill at the cached rate rather than list, and a run you abort stops billing at the abort. Both of those were bugs first and are now tests. But there is still a meter.
It is not private the way local is. Local mode on your own machine is the private one, and it is free forever for exactly that reason. Hosted means your prompt reaches a GPU that is not yours. We never train on it and never sell it, account data sits in the EU and you can delete it, and that is a promise rather than a physical guarantee. If you need the physical guarantee, download the app and run it offline.
It is not a lock-in. The catalog is open weights, so every model you use here you can also pull and run yourself. Export your chats and go. That is not generosity, it is the same argument that made us build the local app first.
Why we did it this way
The honest reason for credits instead of tiers-with-limits: we priced the pool off real wholesale cost, and a model that costs 350 times more per token than another cannot sit behind the same "unlimited" label without one of us lying. A pool tells you the truth and lets you spend it where you want, including all of it on video if that is what you came for.
Local stays free. The cloud is for the days your hardware says no.
Top comments (0)