Release · October 20, 2026

Introducing Saina Specialists, Starting with Machine Fault Detection

A specialist is a version of a Saina model trained further for one domain, selected with one field in the request. The first is mechanical on Helm 2 Omni: it listens to a machine for up to 10 seconds and answers whether it sounds normal and which fault it most likely has.

Saina · October 20, 2026 · 6 min read

A general model is a reasonable first guess on almost anything and the best answer on very little. That is fine for routing tickets. It is less fine when the question is whether the compressor on the shop floor sounds wrong, and the answer decides who gets sent to look at it.

We've added specialists to the Saina API. A specialist is a version of a model trained further for one domain. You select it with one field in the request, and everything else stays the same: the same decision model contract, the same typed questions, a probability for every option, nothing generated.

The first specialist is mechanical, on Saina Helm 2 Omni 0.8B. It listens to a machine recording of up to 10 seconds and answers whether the machine sounds normal and which fault it most likely has.

How to call it

Add "specialist": "mechanical" to a /v1/ask (or /v1/systemone) request that names saina-helm-2-omni-0.8b. Leave the field out and the model answers as usual. This request is illustrative; the shape follows the API docs:

curl https://api.saina.run/v1/ask \
  -H "Authorization: Bearer $SAINA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "saina-helm-2-omni-0.8b",
    "specialist": "mechanical",
    "state": "The clip is a recording of an industrial air compressor in its working factory environment.",
    "audios": ["data:audio/wav;base64,UklGRi..."],
    "questions": {
      "normal": {"type": "yes_no",
                 "question": "Is the machine operating normally?"},
      "action": {"type": "single_choice",
                 "question": "What should maintenance do?",
                 "options": {"keep": "Keep it running",
                             "inspect": "Schedule an inspection",
                             "stop": "Stop it now"}}
    }
  }'

The response names both, "model": "saina-helm-2-omni-0.8b" and "specialist": "mechanical", so your logs show which one answered. GET /v1/specialists lists what is served. An unknown specialist returns not_found and costs nothing.

One clip, two answers

Here is that request on a real clip: a compressor recording from a public CC BY 4.0 dataset (Shaikh, Jawarkar, Ahmed), the same one the home page and the console use. Real output, recorded 2026-10-16 on the revisions in production, rounded:

Question Base Helm 2 Omni With mechanical
Is the machine operating normally? yes 0.77 no 1.00
What should maintenance do? (keep running / schedule an inspection / stop now) 0.54 / 0.43 / 0.04 0.02 / 0.64 / 0.34

The base model leaned towards "normal" and "keep it running". The specialist hears an abnormal compressor and puts most of its weight on an inspection, with a third on stopping. That is one clip, not a benchmark, and it comes from one of the public datasets the specialist was trained on, so it is a favourable case. It still shows the kind of shift a specialist is for. In decision mode with the default 0.8 threshold, the maintenance question would come back with no selection and below_threshold, which is the right outcome: a person decides between an inspection and a shutdown.

What it covers, and what it doesn't

The faults it names:

Two limits on that list. For electric motors it only says whether the motor sounds healthy. The seven motor faults in its training data sound almost the same in its 16 kHz input, so it was not trained to name them. For compressors it only says normal or abnormal, because the compressor data has no fault names. It reads text and audio, not images.

The card's recording advice: hold a phone against or next to the housing, record 1 to 10 seconds with the machine running steadily, name the machine and how it runs in the state, and offer a healthy option plus only the conditions that are possible for that machine.

What we have measured

The model card reports a held-out evaluation on 1,165 clips (2,274 questions) from the seven training sources, with each source counted once in the average. The specialist answers 88% correctly, against 30% for the base model on the same questions.

Read those numbers with the limits that come with them:

If you already run vibration monitoring, that stays the primary signal. A phone recording sent to a specialist is a quick first look at machines nobody instruments, and a way to decide which ones get a technician's visit first.

Open weights, deployed separately

The specialist is published as a complete model on Hugging Face: run-saina/saina-helm-2-omni-0.8b-mechanical, Apache 2.0. It loads on its own with saina 0.6.0 or later, without the base model. On your own server, list it in SAINA_MODELS beside the base model or instead of it.

Specialists are deployed separately from their model. A model update does not change a specialist you rely on, and a specialist update does not change the model.

Pricing

A specialist costs the same per input token as its model, with the same context and media limits. Output is free. Create a free account to try it: the free plan adds 1 credit on each day you use it, kept for 30 days, and subscriptions start at $5 a month.

Credits

mechanical was trained on seven datasets, all released under CC BY 4.0. Thanks to their authors:

Full citations and DOIs are on the model card. No endorsement by the dataset authors is implied.

Try it

For deciding when a decision model like this belongs in a workflow at all, and when a general chat model is the better tool, see LLM decision making.

Questions, or a domain you'd want a specialist for: [email protected].