Reads the model
A probe reads the activations behind each answer. On your own model in vLLM, Latent reads it word by word. For a model behind an API, Latent's reader model re-reads the finished answer.
How Latent detects hallucinationsLatent reads model internals to flag unreliable answers at runtime.
Backed by Y Combinator
As your model writes each word, Latent reads what is happening inside it. When the answer is finished, it sends it where your policy says. Pick an answer and a policy, and watch it run.
Latent is a hallucination detection layer for LLM apps. It reads the activations your model computes as it writes, scores every answer, and acts on the risky ones before your users see them.
A probe reads the activations behind each answer. On your own model in vLLM, Latent reads it word by word. For a model behind an API, Latent's reader model re-reads the finished answer.
How Latent detects hallucinationsEach answer gets a risk score in milliseconds, with the riskiest sentence marked. Latent calibrates its cut on your own traffic.
BenchmarksHold a flagged answer and send your fallback text, ask a stronger model, or deliver it and log it for review.
LLM guardrailsLatent is the only scalable way to label every answer your model gives, so your training data grows with your traffic. Export it as fine-tuning or preference data for your model.
How it improvesWe compared Claude Opus as a judge with Latent's reader, each given the source document. Latent reads activations and writes no verdict, so it keeps up with every answer you serve.
On your own model, Latent reads each answer while it is written, so the check adds no measurable time.
Median per answer: a judge model 4.4 s, Latent about 25 ms.
Claude Opus at its September 2026 list price. Latent's reader on one A100 you run.
Let Latent send only its riskiest 10% to the judge. On the same human-labeled answers, the judge bill falls tenfold and more of what gets flagged is really wrong.
Judge routing measured on 1,498 human-labeled RAGTruth answers, September 2026. How we measured
Judges, guardrails and dashboards look at what your model said. Latent reads the model while it writes, and it works alongside all of them if your team wants to keep them.
Latent sits at runtime, between the input and the answer, where the rest of your stack can't see. Keep your judge, guardrails and traces on the output. Latent feeds them through a Prometheus endpoint, OpenTelemetry trace ids and labeled answers for fine-tuning.
Each flag points to the sentence and the words that drove it, the sentence in your source the answer leaned on most, and the kind of failure, such as an unsupported number, a wrong date or an invented name. Your reviewers know where to look.
Slack, PagerDuty, email or a webhook, when flags spike or stop, confirmed accuracy drops, scoring slows, the review queue backs up or your traffic drifts.
One line at startup sends each finished answer from your OpenAI, Anthropic, Gemini or Ollama calls to Latent. Your calls go to your provider exactly as before.
Rather not install a package? An OpenAI-compatible endpoint is coming.
You're on the list. We'll email you when the endpoint is ready.
Latent scores every answer from the first call, and keeps a sample of what your model actually served for calibration.
Latent runs calibration for you. A judge labels the sample against your sources, Latent tunes its threshold and its read to your traffic, and the update goes live with nothing to do on your side.
Flagged answers wait in a queue with the words that gave them away. Your reviewers confirm the failure or clear it, and each decision is kept as a labeled example.
pip install runlatent ✔ Successfully installed runlatent-0.3.7export LATENT_API_URL=https://app.runlatent.aiexport LATENT_API_KEY=lk_••••••••••••# app.py, once at startupimport runlatentrunlatent.auto_instrument()# after the first model callrunlatent.flush(); print(runlatent.stats()){"enabled": True, "captured": 1, "posted": 1, "failed": 0, ...}
stats() and never raised into your appLatent keeps this sample's text for calibration under your retention settings.
calibration run · 1,000 labeled answers · run by Latent
Every answer Latent scores is kept as a labeled example, and each call your reviewers make sharpens it. The more traffic you serve, the more data you post-train your model on.
Latent recalibrates on your reviewers' decisions while it runs, with no restart. Every validated answer can also be exported as fine-tuning or preference data for your model.
Serves as it does today.
Keeps what your retention settings allow.
Sees what it sees today.
Keeps what your retention settings allow.
When Latent runs in your environment, nothing leaves it: prompts, answers and activations stay on your infrastructure.
Sees what it sees today.
Receives nothing.
In your VPC, nothing leaves it, and the only outbound calls are ones you configure yourself: the model download, an alert webhook, a stronger model you name. Hosted by Latent, prompts and answers are sent to Latent's cloud for scoring, under the retention and redaction settings you choose.
Latent never receives or copies model weights, and calibration does not need them.
Each scored request writes a 1.7 KB append-only record with hashes of the prompt and answer, never the text.
Anything else, ask us. Get in touch
The runlatent Python SDK and an API key, when Latent hosts it. In your VPC, one GPU for Latent's reader model, the smallest of which fits in about 10 GB. Either way, the reader scores each finished answer and returns its verdict in a fraction of a second. Choose Hold in the console, and the SDK in your app holds a flagged answer before your user sees it, replacing it with your text or a stronger model's answer. A streamed answer is cut at the first unsupported sentence. It covers OpenAI, Anthropic, Gemini and Ollama clients; with any other provider, one call in your code does the same.
Any model, including closed-weight models behind an API, which Latent checks with its own reader model. With open-weight models served on vLLM in your VPC, Latent reads your own model's activations per token as it writes, and can act on an answer mid-stream.
None when Latent hosts it. In your VPC, it runs on the GPU already serving your model: the plugin adds 16 MiB of GPU memory at idle and at most 58 MiB at peak, whatever the prompt length. Every serving number on this site was measured on NVIDIA A100 40 GB or H100 GPUs.
Only when you tell it to. Out of the box Latent scores and records every answer. To hold a flagged answer, choose Hold in the console, and the SDK in your app replaces it with your text or a stronger model's answer. In your VPC, Latent's gateway in front of your model does the same. You can also act on the verdict in your code.
Reviewers working from Latent's flags find 2.7 to 4.2 times more wrong answers than checking at random, and when it checks other models' answers, 96 in 100 of the answers it flags are really wrong. Calibrating on your own traffic is what moves you to the top of that range.
When Latent hosts it, Latent runs calibration for you, judge included. A run takes under an hour for a few hundred to a thousand answers, and the update goes live with nothing to do on your side. In your VPC, one run over about 1,000 answers takes five to eight minutes and $6 to $8 of judge calls on your own key, and goes live at the plugin's next policy check, within 30 seconds by default, with no restart.
Yes. After the model download on first start you can block all egress from the host, and the stack keeps running.
A drift alert watches the scores. It stays silent on steady traffic and fires within 120 to 181 answers when a shift matters, so you recalibrate when you need to.