Skip to main content

Diagnose an instance with the AI assistant

Diagnose instance, on an instance's Diagnose tab, asks an AI provider what is wrong with the instance. The server gathers what you would look at yourself - the instance's state, its latest health report, the end of its Odoo log and of its web server's error log, its recent failed jobs and its resource usage - takes people's names, e-mail addresses and credentials out, sends it to the provider, and shows the answer:

PartWhat it says
What is wrongOne or two sentences
Likely causeThe cause the evidence points to
EvidenceThe lines from the logs, the report or the jobs that prove it
StepsWhat to do about it, in order
CommandsThe ohm commands that help, each a single command you can copy
AskedThe model, the provider, whose key paid, who asked, and how many tokens it took

Three providers can answer:

ProviderModels
AnthropicClaude Opus 5.5 (most thorough, the default), Claude Sonnet 5.5 (faster, cheaper), Claude Haiku 5.5 (fastest, cheapest)
OpenAIGPT-6 Astra (most thorough, the default), GPT-6.1 Sol (faster, cheaper), GPT-6 Luna (fastest, cheapest)
Azure OpenAIThe model deployed on your own Azure OpenAI resource, by its deployment name

The assistant only explains. Nothing it answers is run: every step and every command is yours to take or leave. What was sent, under each diagnosis, shows exactly what left the server.

Each diagnosis is a job. The button holds while it runs, usually ten to twenty seconds, and the answer opens under the list when it is done. A second press while one runs joins it. The list shows which provider answered each diagnosis. The tab keeps the 20 newest diagnoses of the instance; removing the instance removes them.

A diagnosis needs three things in the license: the AI assistant (ai), AI diagnostics (ai-diagnostics) and the provider it asks (ai-provider-anthropic, ai-provider-openai or ai-provider-azure-openai). The Professional and Provider editions carry them. A license issued before these codes existed, which carries AI diagnostics alone, counts as carrying Anthropic: it keeps Diagnose with Claude until its offer is applied to it again.

Turn it on​

The AI assistant is off until an administrator turns it on, under Configuration > AI assistant. The first card is the assistant as a whole:

SettingWhat it does
Diagnose may ask an AI providerThe switch. Off, Diagnose is refused for everybody, whatever keys are set
Default providerThe provider this server's keys ask. A provider that is switched off shows as "(off)"
Who may use the server keysEveryone, Nobody, or Selected users: the accounts with May use the server AI keys switched on under Security > Users

Under it, each provider has a card of its own, with its own license badge:

SettingWhat it does
Diagnose may ask (the provider)Switches this provider on. Several can be on at once
EndpointAzure OpenAI only: the resource's address from the Azure portal (Keys and Endpoint), such as https://name.openai.azure.com/
Anthropic API key, OpenAI API key, Azure OpenAI keyThe server's own key for this provider. It is stored encrypted and never shown again; the card only says whether one is set. Remove the key takes it away
ModelAnthropic and OpenAI: which model the server's key asks
DeploymentAzure OpenAI: the name the model's deployment has on the resource

Save with the page's Save. Nothing on the host changes, so no apply follows.

The keys come from each provider's own console: the Anthropic Console, the OpenAI platform, or the Azure portal for an Azure OpenAI resource. The calls go out over HTTPS - to api.anthropic.com, to api.openai.com, or to the Azure OpenAI resource's endpoint - through the outbound proxy when one is set. A firewall in front of the server must let it reach the providers that are on.

A key of your own​

Anyone may keep keys of their own on My Account > AI assistant: a key per provider, with the model it asks, and for Azure OpenAI an endpoint and deployment of their own (without them, the server's are used). Preferred provider says which of your keys is tried first. Your own key is then used whenever you press Diagnose, and each diagnosis is billed to your account at that provider. That is the way to use Diagnose when the server has no key, or when its keys are not open to you.

Which key a diagnosis uses​

  1. The switch is off: refused, for everybody.
  2. You have keys of your own: your preferred provider's first, then your others, with your model (or the server's, when you chose none). A provider is used only when it is switched on on this server and the license carries it; one that is not is skipped, and a refusal says why.
  3. Otherwise the server's Default provider, with the server's key, when Who may use the server keys lets you: Everyone, or Selected users with your account selected. Nobody refuses.
  4. The default provider is off, has no key or is not in the license: refused. The server never falls back to another provider by itself.

The tab says, above the list, which model at which provider it will ask and whose key it will use; when Diagnose cannot be used, the button is greyed and the line says why. An API key with no account behind it may use the server's keys only under Everyone. Read-only roles see the button greyed.

What it costs​

Each Diagnose is one request to the provider, billed per token to the key it is made with. A typical diagnosis sends about 20,000 tokens and receives one to two thousand. At Anthropic's list prices as of 2 November 2026, that is roughly:

ModelOne diagnosis
Claude Opus 5.5about $0.06 to $0.20
Claude Sonnet 5.5about $0.03 to $0.10
Claude Haiku 5.5under $0.01

OpenAI and Azure OpenAI bill the same request by their own price lists, per model and, on Azure, per deployment type. A long log, many failed jobs or a long answer cost more; an instance with little to report costs less. The Tokens column of the list (hidden by default, under the column picker) and the Asked line of each diagnosis show what it took. The providers' own pricing pages have the current prices - Anthropic, OpenAI and Azure OpenAI - and each provider's console shows what a key has spent; a spending limit there caps it.

What leaves the server​

A diagnosis sends the provider, for that one instance:

  • its state and configuration as the console shows them, without any credential;
  • its latest health report;
  • the last 400 lines of its Odoo log, from the last day;
  • the last 150 lines of its web server's error log;
  • up to five failed or interrupted jobs of the last day, each with the end of its log;
  • its resource usage, when the license carries resource usage.

Before anything is sent, everything goes through the same scrubber as the support bundle, whichever provider is asked: the names, user names and e-mail addresses of the server's accounts and of the people its configuration names are replaced, and passwords, keys, tokens and anything shaped like a credential are masked. Every part is cut to a fixed size, from its oldest lines. What reaches the model are the log messages themselves - module names, errors, paths, addresses of visitors in an error line - because that is what a diagnosis is made from.

What was sent, under each diagnosis, is that text exactly as it left the server. Read it before you diagnose an instance whose logs you would rather keep to yourself, and switch the AI assistant off, or set Who may use the server keys to Nobody, where nothing may leave.

The diagnoses themselves stay on the server, in its master database, readable by everyone who may see the instance. OpenAI and Azure OpenAI are asked not to store the request. How a provider handles what it receives is set by the terms of the account the key belongs to: Anthropic's commercial terms, OpenAI's business terms, or your Azure subscription's terms, where an Azure OpenAI resource processes requests in the region, or data zone, it was deployed to.

Delete a diagnosis​

An Administrator, and an Operator who has the instance, may delete diagnoses:

  • One: the delete button at the end of its row, then Delete in the confirmation under it.
  • Several: select the rows with Ctrl-click (one more) or Shift-click (a range), then the delete button in the bar above the list. A confirmation above the list names every diagnosis that goes, by its time; Delete there deletes them.

A plain click on a row still opens the diagnosis. Deleting is a job; the list updates when it ends, and an open diagnosis that was deleted closes. A deleted diagnosis cannot be brought back. Viewers and Read-only administrators see the controls greyed.

When the license stops covering it​

When it does not work​

  • The button is greyed. Its title, and the line above the list, say why: the AI assistant is off, the provider it would ask is off or not in the license, there is no key you may use, your role is read-only, or the license does not carry the AI assistant.

The job's result says what went wrong, naming the provider:

  • The provider refused the key. The key is wrong, revoked or expired. Enter it again under Configuration > AI assistant, or on My Account > AI assistant.
  • The provider refused this key the model. The key's workspace (Anthropic) or project (OpenAI) does not allow that model. Choose another one, or change the settings at the provider.
  • Azure OpenAI has no deployment by that name. Check the deployment name and the endpoint under Configuration > AI assistant against the resource in the Azure portal.
  • This key has no credit left. Add credit to the key's account at the provider, or use another key.
  • The provider is limiting this key's requests, or could not answer right now. Diagnose again in a minute or two.
  • This server could not reach the provider. It needs to reach the provider's address over HTTPS: check its Internet access, the Azure OpenAI endpoint, and the outbound proxy.
  • The model declined to diagnose this instance, or its answer was cut off. Rare; diagnosing again usually works.

To ask questions of your own about a server - several instances, a follow-up, a longer look at a log - use Ask AI in the top bar, or connect an AI assistant.