Connect the desk
Two lines of configuration, who sees it, and what leaves the machine.
The wizard does this for you. This page is what it does, for when you would rather do it yourself.
Two tables in nils-desk.toml. The desk proxies both under its own origin, with the person’s own token, so a browser never holds a key and neither Kvasir nor the assistant faces a network.
[kvasir]
url = "http://127.0.0.1:7100"
[assistant]
url = "http://127.0.0.1:7300"
Restart the desk. It shows the assistant to a person who may use it, as their groups and grants say, and to nobody else, and it shows nothing at all if the assistant did not answer. With [kvasir] set, Settings has the Language models page, where a person who uses the assistant and may see that page adds their own ChatGPT subscription.
What to expect
The first request after a model starts is slow, because the model is warming; the desk says so rather than looking broken.
Everything the assistant proposes arrives as a change with a diff. Nothing is applied until a person accepts it, and what a person rejects is remembered as a correction.
What leaves the machine
With a local model, nothing: the prompts, the schema and the counts stay inside the deployment.
With a commercial provider or a ChatGPT subscription, the prompt leaves. Kvasir marks such a backend remote and refuses the purposes nobody has opened to it, so that decision is made once, on the Language models page, by a person with work there, rather than in each station. A purpose that reads rows of the registry opens only with a written reason, and identifiers never leave.
Without the assistant
Everything else keeps working. The desk shows what is there; a part that is absent is simply absent, and no page waits for it.
Updated 16 October 2026