Skip to main content

Enabling the assistant

AdministratorsIT security
In one minute

The console's assistant is off until you turn it on, and turning it on is three separate decisions: one for the deployment, one per organisation, one per person. It then needs a model, hosted or your own, and two settings that bound what a question may cost.

Turning it on

Three separate things must all be true before anyone sees the panel, and they are deliberately separate: one is a deployment decision, one is per customer, one is per person.

Enable it in the deployment

datahub.chat.enabled must be true for the console. Off by default, so an installation that has not chosen a model behaves exactly as before.

Enable it for the organization

The organization's entry in the tenant registry needs tenant-config.chat set to true. An organization without it has no assistant even where the deployment does.

Grant the role

A user needs the DATAHUB_CHAT role in Keycloak. Without it the panel is hidden, and the assistant cannot be reached by any other route.

Hiding the panel is not the security boundary. The check runs again on every request, so a user without the role gains nothing by going around the interface. The assistant also acts as the signed-in user, so data set permissions apply to everything it looks up, and it is only ever offered read-only tools. Why that holds →

Choosing a model

The assistant talks to one of two kinds of model, set per deployment.

  • A hosted model, currently Anthropic. You supply an API key and usage is billed to whoever owns it.
  • A model you run yourself, through any server that speaks the OpenAI chat completions interface, including Ollama and vLLM. Nothing leaves your network.

Both work. The trade is the familiar one: a hosted model is stronger and needs no hardware, a self-hosted one keeps the data in your building and costs whatever the hardware costs.

If you self-host, read this

The assistant works by calling tools, so the model must be one that can call tools (look for "tool use" or "function calling" in its description). Many small models cannot, and one that cannot will appear to answer while never looking anything up.

Models that reason at length before answering need care too. The assistant reads only the final answer, so time spent reasoning is time and money spent for nothing. Turn that off if the server allows it, or expect slow and sometimes empty replies.

Settings

All of these live beside the credentials in the deployment's secret store, as llm.* fields, so a change does not need a redeploy.

SettingWhat it controls
llm.provideranthropic, or openai-compatible for anything you host
llm.api-keyThe key. Required for a hosted model, usually not for your own
llm.modelWhich model to use, spelled exactly as the provider spells it
llm.base-urlWhere your own server listens. Required when you host it
llm.effortWhich setting the Effort control starts on
llm.max-output-tokensA ceiling on the length of one answer. Set it and no effort setting can exceed it
llm.turn-timeoutHow long one question may take before the panel gives up
llm.reasoning-effortOnly for a self-hosted server, including how to tell one not to reason
llm.instructionsStanding context: your vocabulary, your conventions, what your people care about

llm.instructions is the one worth spending time on. It is added to the assistant's existing instructions rather than replacing them, so the read-only rule cannot be configured away, and it is where you teach it that a tag beginning 21PT is a pressure transmitter.

Budgets are worth setting deliberately

llm.max-output-tokens and llm.turn-timeout are the two that matter most, and they pull in opposite directions. A hosted model wants a modest ceiling and seconds of patience. A model running on your own hardware may need minutes per question, and the panel will give up on it long before it finishes unless the timeout is raised. The answer-length ceiling is also what caps the bill: the Effort control people use cannot spend past it, and a long answer is cut short instead.

Related