Omni
The app keeps asking itself small questions about its own work: which kind of memory a note is, for one. Omni is what answers them. It is an extra: switch it off and the app works exactly as it did before Omni, with each question answered by the model that was already handling the work.
This page explains the mechanism. The settings it ships with, its models, its budget and its questions, are on Omni’s reference page, which is generated from the configuration itself.
The switch
Omni is one role, omni, in config/roles.yaml, and its mode is the switch:
active is on, inactive is off. Type /omni in the app or in any channel to
see which it is and who it would ask; /omni on and /omni off change it, for
the whole app at once. It is the same setting the Settings screen shows for the
role, so switching it in one place switches it everywhere.
It ships off. Turn it on once you have looked at what it asks.
Who it asks
The role’s chain is the order. A model built for this kind of question, Jev,
comes first: it answers in its own question format and gives a probability for
every answer it was offered. Behind it are ordinary language models, which answer
through one card, agents/classifier.md, that asks for one answer from the list and
how sure the model is.
Each is tried in turn. One that cannot answer at all, because it has no key, gave no reply in time, or its budget is spent, passes the question to the next. One that answered but was unsure does not: that answer stands, and the app does not keep asking until somebody sounds certain.
Jev is a provider like any other, in config/providers.yaml, with its key in
.env as TYPESAFE_API_KEY. Without the key it is skipped and the language
models answer.
How sure is sure enough
Every question in config/decisions.yaml has a floor: how sure an answer must
be, written as a fraction of certain. Below it, the answer is not acted on and the part of the app that asked does what
it does with no answer: a note it cannot place is left unfiled and logged rather
than filed under the wrong kind. Raise a floor and Omni gets quieter; lower it
and more gets through with less behind it.
What it costs
Omni has one line in config/budgets.yaml, whichever model answers. Every call
is in the cost log under it, so the spend panel shows Omni beside the chat, the
sub-agents, images and voice. Past the day’s cap, questions go unanswered until
the next day, and the part of the app that asked carries on without an answer.
What leaves the machine
With Omni on, the text being judged is sent to the model that answers it. It is
screened for your stored credentials first, like every model call. A question
that declares egress: false is never sent off the machine at all.
What it can never change
Omni has no say in what the assistant is allowed to do. Permissions, the questions
the app asks you before acting, sealed folders and the rules for tools you wrote
are decided by config/permissions.yaml and the checks around it, with Omni on
or off. See Permissions.
Reading what it answered
Every question Omni answers leaves one row in the app’s event record: the question, which model answered, the answer, how sure it was, and the full spread of probabilities when the model gives one. The text itself is not kept there, only a fingerprint of it.
TESSERACT v1.1.3 — documentation built 9 Oct 2026