The decision layer
for AI agents
Ollaya runs open decision models on your own hardware. Typed questions in, calibrated answers out, in milliseconds: routing, guardrails, triage and tool approval without an LLM call.
curl -fsSL https://ollaya.dev/install.sh | sh
- 1,436
- GitHub stars
- 5,160
- model pulls last week
- 30
- open decision models
- 3,880
- human-labeled questions in the bench
Models by
- Perplexity AI
- Cloudflare
- PostHog
Bespoke Labs- Qwen
Strands Agents
Knowledgator
Convai Innovations
Why decision models
System 1 for your agents
A decision model answers typed questions about a text or a JSON: a choice, a score, a yes or no. It is the fast, reliable half of an agent.
Calibrated, not generated
Every option of every question gets a probability you can put a threshold on. No parsing, no hallucinated labels.
One forward pass
No token-by-token generation: 18 ms for five questions with laya:en on a GPU, and small models run well on a CPU.
Yours, for free
Weights from their authors, pinned by sha256. Your tickets and messages never leave the machine, and there is no per-token bill.
Recorded examples
One message, five answers
The triage preset asks winnow:e4b five questions about each support message. These are its real answers, with every option's probability one click away.
A support message comes in
“Third time this year you've double-charged me. Refund it today or I'm cancelling and moving to a competitor.”
Ollaya asks winnow:e4b the 5 questions of the triage preset, in one request.
What does the customer want in the message?
Refund0.91- Cancellation0.06
- Other0.01
- Billing question0.01
- Technical help0.01
- Information0.00
Does the message communicate time pressure or a deadline?
Yes0.93- No0.07
How frustrated does the customer sound in the message?
Very angry0.90- Clearly annoyed0.09
- Concerned but civil0.01
- Calm and neutral0.00
Does the customer ask for money back?
Yes0.99- No0.01
Does the message suggest the customer may leave for a competitor or cancel?
Yes0.99- No0.01
Real output: 5 answers in 760 ms on an Apple M4 Pro, one forward pass. Every answer is a probability you can set a threshold on.
A support message comes in
“Hi! Quick question: does the Pro plan include SSO, and can we pay yearly by invoice? No rush, just planning next quarter.”
Ollaya asks winnow:e4b the 5 questions of the triage preset, in one request.
What does the customer want in the message?
Billing question0.84- Information0.13
- Other0.02
- Cancellation0.00
- Technical help0.00
- Refund0.00
Does the message communicate time pressure or a deadline?
No0.94- Yes0.06
How frustrated does the customer sound in the message?
Calm and neutral0.93- Concerned but civil0.06
- Clearly annoyed0.01
- Very angry0.00
Does the customer ask for money back?
No0.99- Yes0.01
Does the message suggest the customer may leave for a competitor or cancel?
No0.98- Yes0.02
Real output: 5 answers in 759 ms on an Apple M4 Pro, one forward pass. Every answer is a probability you can set a threshold on.
A support message comes in
“The export endpoint has been returning 500s since this morning and our nightly job is blocked. Can someone look at it today?”
Ollaya asks winnow:e4b the 5 questions of the triage preset, in one request.
What does the customer want in the message?
Technical help0.99- Other0.00
- Information0.00
- Refund0.00
- Cancellation0.00
- Billing question0.00
Does the message communicate time pressure or a deadline?
Yes0.82- No0.18
How frustrated does the customer sound in the message?
Concerned but civil0.76- Clearly annoyed0.22
- Calm and neutral0.01
- Very angry0.01
Does the customer ask for money back?
No0.99- Yes0.01
Does the message suggest the customer may leave for a competitor or cancel?
No0.98- Yes0.02
Real output: 5 answers in 808 ms on an Apple M4 Pro, one forward pass. Every answer is a probability you can set a threshold on.
A support message comes in
“We're consolidating vendors and will move to another provider at the end of the month. Please cancel our subscription and confirm the last billing date.”
Ollaya asks winnow:e4b the 5 questions of the triage preset, in one request.
What does the customer want in the message?
Cancellation0.91- Billing question0.05
- Other0.04
- Refund0.00
- Technical help0.00
- Information0.00
Does the message communicate time pressure or a deadline?
Yes0.96- No0.04
How frustrated does the customer sound in the message?
Calm and neutral0.83- Concerned but civil0.12
- Clearly annoyed0.05
- Very angry0.00
Does the customer ask for money back?
No0.96- Yes0.04
Does the message suggest the customer may leave for a competitor or cancel?
Yes0.93- No0.07
Real output: 5 answers in 807 ms on an Apple M4 Pro, one forward pass. Every answer is a probability you can set a threshold on.
Measured
Against Ollama and hosted Jev
Ollama 0.40.6's nine decision models and Ollaya's, on the same RTX 5090 and Bespoke Labs' 3,880 human-labeled questions. Ollaya runs the most accurate model and more of them, with each author's temperature. On the same weights Ollama is 5 to 8 times faster: it runs Q8_0 GGUFs where Ollaya computes the authors' BF16 weights.
| Ollaya | Ollama 0.40.6 | TypeSafe Jev, hosted | |
|---|---|---|---|
| Best accuracy, 3,880 questions | Ollaya0.824 | Ollama 0.40.60.816 | TypeSafe Jev, hosted0.738 (typed-decisions) |
| Latency, median request | Ollaya232 ms | Ollama 0.40.696 ms | TypeSafe Jev, hosted236–276 ms, network included |
| Runs on your hardware | OllayaYes | Ollama 0.40.6Yes | TypeSafe Jev, hostedHosted only |
| Decision models | Ollaya30 families | Ollama 0.40.69 | TypeSafe Jev, hosted— |
| CPU-fast encoders | Ollayalaya, largha, nli, gliclass, von, decima | Ollama 0.40.6laya | TypeSafe Jev, hosted— |
| Probabilities | OllayaAuthor's temperature | Ollama 0.40.6Raw softmax | TypeSafe Jev, hosted— |
| Options per question | Ollaya255 | Ollama 0.40.626 (Kev, Strands: 255) | TypeSafe Jev, hosted— |
| Questions per request | Ollaya256 | Ollama 0.40.664 | TypeSafe Jev, hosted— |
| TypeSafe endpoints | Ollayasystemone, decisions, models | Ollama 0.40.6systemone | TypeSafe Jev, hosted— |
| Weights | OllayaAuthor's files, sha256-pinned | Ollama 0.40.6Re-hosted GGUF | TypeSafe Jev, hosted— |
| Price | OllayaFree, Apache-2.0 | Ollama 0.40.6Free, MIT | TypeSafe Jev, hostedPer token |
Drop-in
Jev-compatible, self-hosted
Ollaya serves TypeSafe's request and response shapes. Point the official SDK at localhost and nothing else changes.
# Point the TypeSafe SDK at Ollayaexport TYPESAFE_BASE_URL=http://localhost:11435export TYPESAFE_API_KEY=local # any value worksexport TYPESAFE_DEFAULT_MODEL=winnow:e4b # …or call the compatible endpoint directlycurl http://localhost:11435/v1/systemone -d '{ "model": "winnow:e4b", "state": "Can I get an invoice for last month?", "questions": { "intent": { "type": "choice", "instructions": "What does the customer want?", "criteria": { "invoice": "Needs an invoice or receipt", "refund": "Wants money back", "other": "Anything else" } } } }'{ "model": "winnow:e4b", "answers": { "intent": { "type": "choice", "choice": "invoice", "confidence": 0.9801, "probabilities": { "invoice": 0.9868, "refund": 0.0026, "other": 0.0106 } } }, "usage": { "input_tokens": 120, "output_tokens": 0 }}Open models
Open weights, ready to pull
30 families from their authors, pulled by name. Every number here is from Ollaya Bench on an RTX 5090.
- winnowEldanRing
Decision models by EldanRing, fine-tuned from Google's Gemma 4 and published as GGUF
- 0.724
- accuracy
- 113 ms
- five questions
4.6b · 7.5b · 12b - layaConvai Innovations
Open decision models from Convai Innovations
- 0.357
- accuracy
- 18 ms
- five questions
322m · 421m - deciderMapika
Decoder decision models by Mapika on Qwen3.5: the answer is read from option-letter logits in one forward pass
- 0.678
- accuracy
- 197 ms
- five questions
0.75b · 1.9b · 2.2b · 4.2b - kevJared Palmer
Decision models by Jared Palmer: a LoRA on a Qwen3.5 base plus a pointer head that scores every option at its own span, in one forward pass per question
- 0.669
- accuracy
- 171 ms
- five questions
0.76b · 4.2b · 7.9b - nliMoritz Laurer
Zero-shot classifiers by Moritz Laurer: every option becomes a hypothesis scored for entailment
- 0.536
- accuracy
- 18 ms
- five questions
396m · 435m - gliclassKnowledgator
Instruction-following zero-shot classifiers by Knowledgator: all options of a question are scored in one pass, so on a GPU the cost barely grows with the number of options; on a CPU it grows with them
- 0.477
- accuracy
- 14 ms
- five questions
439m · 440m
Platforms
Runs where you work
A desktop app and a command line for macOS, Windows and Linux, and a Docker image for servers. Every model runs on the CPU; an NVIDIA GPU on Linux, Windows, WSL 2 or Docker takes a request down to milliseconds.
| Platform | Desktop app | Command line | GPU |
|---|---|---|---|
| macOSApple silicon, macOS 14+ | Desktop appMenu bar app.dmg | Command lineInstall script | GPUApple GPULaya and NLI on MLX |
| Windows10 and 11, x64 | Desktop appDesktop app.exe or .msi | Command linePowerShell script | GPUNVIDIA, CUDA 12/13Command line |
| Linuxx86-64 | Desktop appDesktop appAppImage, .deb, .rpm | Command lineInstall scriptsystemd service | GPUNVIDIA, CUDA 12/13 |
| LinuxARM64 | Desktop appNot available | Command lineInstall scriptsystemd service | GPUCPU only |
| WSL 2Linux on Windows | Desktop appNot available | Command lineInstall scriptSame as Linux | GPUNVIDIA, CUDA 12/13 |
| Dockeramd64 and arm64 | Desktop appNot available | Command lineImage on GHCR | GPUNVIDIA, CUDA 12/13:cuda and :cuda12, amd64 |
NVIDIA GPUs need driver R525 or newer; the install scripts fetch the CUDA libraries only when they find one. On a Mac, laya and nli run on the Apple GPU through MLX; other models, AMD and Intel GPUs, and the Windows and Linux desktop apps without the command line installed use the CPU.
Up and running in a minute
macOS, Windows, Linux and Docker. CPU, NVIDIA and Apple GPUs.
curl -fsSL https://ollaya.dev/install.sh | sh