AI Assistant¶
admin devops developer
Open it with the AI assistant button at the bottom right of every screen (above the shortcuts badge). Ask about stacks, clusters, or install status in plain language; the server checks with the MCP read tools and answers. The organization's admin picks the model — Upstage Solar · OpenAI · Anthropic Claude · Google Gemini · an OpenAI-compatible in-house server.
No button until an admin turns it on
An admin has to register a provider and API key and turn it on under Admin › AI Assistant (see
Turning it on). It is per organization; while it is off, GET /api/v1/assistant/status
returns {"enabled": false} and the screen does not draw the button.
What you can ask¶
An empty conversation shows three suggested questions — Are any stacks failing? · Why did the last stack install fail? · Which stack templates are available?
The model picks from the tools below and answers from their results. Each answer carries a Tools used line, and a tool that failed is marked "(failed)".
| Tool | Used for |
|---|---|
stack_list |
Stacks and their status |
stack_status |
Deploy progress · the failed step and its reason |
stack_logs_tail |
The last lines of the install log — why an install failed |
cluster_list |
Registered clusters (secrets such as kubeconfig removed) |
template_list |
The stack template catalog |
compat_check |
Compatibility of a tool combination |
It sees only what the person asking can see¶
The tools call the API carrying the requester's own credentials. Whatever you cannot see on screen, the assistant cannot see either — for example, a developer has no access to the stack and cluster APIs, so the assistant answers that they lack permission (Permissions).
It only reads¶
Change tools such as deploy and rollback are not in the assistant's tool list at all. When a change is needed, it tells you where on screen to make it.
Data that leaves the platform¶
Tool results are sent to an external model
While it is on, the results of the tools above (stack config · status · parts of install logs) go to the chosen provider. The panel says so at the bottom. If you do not want that, leave it off, or pick OpenAI-compatible (in-house server) and use a model running in-house (vLLM · Ollama, for example).
- Before sending, it masks
Bearertokens · JWTs · GitLab tokens (glpat-) · AWS access keys · private key blocks · values such aspassword=inside strings - Conversations are not stored on the server. The screen keeps the conversation and sends all of it with each question, so closing and reopening the panel keeps it, and a reload clears it
Turning it on¶
/admin/assistant admin
Register the organization's provider, model, and API key under Admin › AI Assistant.
| Provider | Default model | Address |
|---|---|---|
| Upstage Solar | solar-pro4 |
https://api.upstage.ai/v1 |
| OpenAI | Enter it | https://api.openai.com/v1 |
| Anthropic Claude | claude-sonnet-5-5 |
https://api.anthropic.com |
| Google Gemini | Enter it | https://generativelanguage.googleapis.com/v1beta/openai |
| OpenAI-compatible (in-house server) | Enter it | Enter it — the key is optional |
- Pick a provider, and enter a model name and address if needed (empty means the defaults above)
- Enter the API key. After saving it is never shown again, only its last four characters — leave the field empty when saving to keep the saved key. Changing the provider or the address needs the key again — so the saved key is never sent to a different server
- Test connection asks the model once with those settings (nothing is saved)
- Tick Turn on the assistant for this organization and click Save
The key is encrypted with the server's ENCRYPTION_KEY — without it, the key is not saved, and if the value
changes so the saved key cannot be read, the screen says so and asks for the key again. Saving, deleting and
connection tests are recorded in the audit log (never the key itself), and Delete settings removes the key
too and turns the assistant off.
An address an admin enters can reach the internal network
Private ranges are not blocked, so in-house servers work. Addresses with ? or # are rejected,
redirects are not followed, and link-local addresses (cloud metadata such as 169.254.169.254) are never
connected to. When a connection test fails, only the provider's JSON error message is shown — never the rest
of the response body.
Limitations¶
- A conversation holds up to 20 turns, each up to 4,000 characters. One question can use up to 6 rounds of tool calls · 8 calls per round · 20 calls in all
- One question gets up to 55 seconds. Past that, the panel asks you to try a narrower question
- A tool result longer than 12,000 characters is cut, and only its beginning and end go to the model (an install log has the failure at the end)
- The answer appears all at once when it is ready (no streaming)
- Tool calls go to the API itself over loopback (127.0.0.1), so every user's tool calls share one IP ceiling (600 per minute by default), and they also count against the requester's own user rate limit
APIs it calls¶
GET /api/v1/assistant/status · POST /api/v1/assistant/chat · admin:
GET · PUT · DELETE /api/v1/admin/assistant · POST /api/v1/admin/assistant/test