Run open decision models locally, the way Ollama runs LLMs.
Website · Models · Docs · Releases · Hugging Face
A decision model reads a state (a message, an email, a ticket, any JSON) plus typed questions
(choice, score, noul) and returns calibrated probabilities in a single forward pass, in
milliseconds. It never generates text. Ollaya pulls these models by name, serves them from a
local daemon, and speaks TypeSafe's /v1/systemone wire format, so existing Jev clients work by
changing one environment variable.
curl -fsSL https://ollaya.dev/install.sh | sh
ollaya run laya --preset triage "I was charged twice for my subscription this month and want a refund."intent refund ████████████████ 1.00
is_urgent no ██████████████░░ 0.88
frustration 1.76 / 3 ██████░░░░░░░░░░ 0.36
refund_requested yes ██████████████░░ 0.90
churn_risk no ██████████░░░░░░ 0.61
- One binary.
ollaya serveruns the daemon;ollaya run,pull,list,ps,show,rm,cp,stopandcreatework the way they do in Ollama. If the daemon isn't running, the CLI starts it. - TypeSafe-compatible.
POST /v1/systemone,/v1/decisionsandGET /v1/modelsare wire-identical to TypeSafe. The official SDK works unchanged when you setTYPESAFE_BASE_URL=http://localhost:11435. - Native API.
/api/decideadds routing information and timings./api/pullstreams NDJSON progress, and there are/api/tags,/api/show,/api/psand more. See docs/api.md. - Weights come from their authors. Ollaya publishes only small ONNX graphs, about 3 MB each.
These graphs read the original
model.safetensorsfrom the author's Hugging Face repository, pinned to a commit and verified by sha256. Ollaya never re-hosts weights. - For agents.
ollaya mcpserves the models to Claude Code, Claude Desktop, Cursor and other MCP clients (claude mcp add ollaya -- ollaya mcp), and theollaya-decisionsskill teaches agents when and how to use them (npx skills add ollaya-dev/ollaya --skill ollaya-decisions). - Routers.
layadetects the script and language of each request, then answers withlaya:enorlaya:multilingual. - Modelfiles. You can bake a question set into your own model:
Then run
FROM laya QUESTIONS ./triage.json PARAMETER precision fp32ollaya create triage -f Modelfileandollaya run triage "…". - Fast and exact.
- Hardware: ONNX Runtime on CPU, and CUDA on NVIDIA GPUs.
- Precision: fp16 on GPU and fp32 on CPU, chosen when the model loads.
- Accuracy: fp32 exports give the same decision as the PyTorch reference on 100% of 2,383 questions per checkpoint.
| Model | What it is |
|---|---|
laya |
Router: picks laya:en or laya:multilingual by language |
laya:en |
English decision model (ModernBERT-large, 421M). The fastest: 8–10 ms for five questions on an RTX 4090 |
laya:multilingual |
100+ languages (mmBERT-base, 322M) |
laya:typed-decisions |
Fine-tuned on the typed-decisions workflows |
decider, decider:0.8b |
Mapika's Qwen3.5 decoders, 2B and 0.8B. The most accurate: 0.591 on typed-decisions |
nli, nli:modernbert-large |
Moritz Laurer's zero-shot NLI classifiers (DeBERTa-v3-large, ModernBERT-large) |
gliclass |
Knowledgator's instruction-following zero-shot classifier (DeBERTa-v3-large) |
Browse them at ollaya.dev/search. Laya tags ending in
-fp32 or -fp16 pin the precision. The derived files of every model are also published at
huggingface.co/ollaya-dev.
- Linux (x86_64 or arm64, glibc ≥ 2.38, e.g. Ubuntu 24.04+):
curl -fsSL https://ollaya.dev/install.sh | sh. When an NVIDIA GPU is present (driver R580+), the installer adds the CUDA runtime. - macOS (Apple silicon): the same command.
- Windows (x64, CPU):
irm https://ollaya.dev/install.ps1 | iexin PowerShell. For an NVIDIA GPU, use WSL 2 with the Linux command. - Desktop app for macOS, Windows and Linux: start and stop the server, download models and run them in one window. On macOS it lives in the menu bar. Get it from ollaya.dev/download.
- Docker:
docker run -d --gpus=all -p 11435:11435 ghcr.io/ollaya-dev/ollaya:cuda, orghcr.io/ollaya-dev/ollayafor CPU only.
Configuration is through environment variables: OLLAYA_HOST, OLLAYA_MODELS,
OLLAYA_KEEP_ALIVE, OLLAYA_DEVICE, OLLAYA_API_KEY and others, listed in
docs/api.md §15.
| Path | What |
|---|---|
crates/ollaya |
The binary: CLI, daemon, runner |
crates/ollaya-server |
HTTP API, scheduler (one runner process per model), model resolution |
crates/ollaya-api |
API types and client; the contract is docs/api.md |
crates/ollaya-registry |
Model names, manifests, blob store, resumable pulls |
crates/ollaya-decision |
Question schema, sequence layouts, calibration, answers |
crates/ollaya-runner |
Inference engines (ONNX Runtime) |
crates/ollaya-lang |
Script and language detection for routers |
convert/ |
Build-time Python: ONNX export, parity checks, packaging |
site/ |
The website and the static model registry host |
cargo test --workspace
cargo build --release -p ollaya --features cuda # CUDA build (Linux x86_64)convert/ rebuilds models. It exports them, checks parity against the PyTorch reference,
generates golden fixtures, and packages the result into registry/. See the module docstrings.
Apache-2.0. Each model keeps its own license: laya (Convai Innovations), decider (Mapika),
gliclass (Knowledgator) and nli:modernbert-large are Apache-2.0, and nli:deberta-v3-large
(Moritz Laurer) is MIT.