# The assistant

> Your model, your key, questions about your own server — and nothing it changes on its own.

Source: https://stygion.eu/docs/keystone/assistant
Updated: 2026-09-07

Ask the server what is wrong with it. It reads its own numbers, its console and
its chat, and answers out of them — and **changes nothing on its own**: what it
proposes waits in a list until you say do it, or leave it.

## Off until you point it at something

**There is no key of ours and nothing routes through STYGION.** You write an
address, a key and a model, whoever's; including a model running on the same
machine, in which case there is no key to fill in at all.

```
/keystone set assistant.address https://…      # up to but not including /chat/completions
/keystone set assistant.key <key>
/keystone set assistant.model <model name>
```

While `assistant.address` is empty the module says there is nothing to ask and
sends nothing anywhere.

## The commands

```
/keystone ask <question>          # ask about this server
/keystone assistant               # what is waiting on a decision
/keystone assistant incident      # read the last stretch of console and chat and say what looks wrong
/keystone assistant apply <n>     # make that proposed change
/keystone assistant leave <n>     # leave it alone
```

The permission is `keystone.assistant.use`, and like everything else it is given
to a group.

`incident` is not a second path into the log — it reads `/v1/console` and
`/v1/chat`, ordinary routes with ordinary scopes. It is a question with a good
wording, which means you can ask for the same work in your own words.

## What it may reach

```
assistant.scopes
```

The same scopes a key would hold — `status.read`, `console.read`,
`settings.read` and so on. **Give it only what it is meant to look at.** What
each scope means is on [the local API page](/docs/keystone/api).

## What leaves the machine

The question, with **secrets stripped out of it first**. The answer is worked out
off the server thread — a model takes seconds and a tick takes fifty
milliseconds — and comes back into the game on the next tick.

Where it goes is the address you wrote. None of it comes to us.

## Why it changes nothing on its own

Because "shall I fix that for you" and "I fixed that for you" are two different
things, and only the first one gives anybody a chance to say no. A proposal is a
numbered line in a list; `apply` does it, `leave` throws it away. Both are in the
editor too, on the Assistant screen.
