Skip to content
ivralo
Sections

Docs / Install

ivralo doctor

ivralo doctor checks everything ivralo depends on, section by section, and gives each problem one line with its fix. Run it after an install, after an upgrade, and before blaming the model.

Running it

ivralo doctor

It takes no options. It reads the same settings every other command reads and changes nothing, with one exception: a stopped PostgreSQL cluster that ivralo made is started, as any ivralo command would start it. It still runs when the workspace cannot be entered, since that is one of the things it diagnoses.

ivralo init ends by running the same report over the settings it has just written.

Reading a row

postgres
    ok  postgres from  docker compose (the ivralo-postgres container)
  fail  reachable  postgresql+psycopg://ivralo:***@127.0.0.1:5432/ivralo - OperationalError: (psycopg.OperationalError) connection failed: ...
        start it with: docker compose up -d
MarkMeaning
ok, greenThe check passed. The text after the label says what was found.
fail, redThe check failed. The indented grey line under it is the fix.
An indented grey line aloneA note: something off by choice, not configured, or worth knowing. It never fails the report.

There is no yellow in doctor's report: a row passes or fails, and everything else is a note. The yellow hint rows you may have seen come from ivralo init, whose report marks a step that needs nothing now but says what you could do.

The verdict and the exit code

The report ends with one of two lines:

Everything checks out. Start with: ivralo
Some checks failed. Fix those first.

The exit code is 0 when every row passed and 1 when any row failed, so a script or a deploy step can run ivralo doctor as a gate. Notes never change the exit code.

The sections

The sections come in this order. A feature you have not configured gets a single note saying so, never a red row.

The machine and its storage

SectionWhat it checks
environmentPython; the home and how it was found (IVRALO_HOME, or the checkout you started in); the code root and its skill shelf; which .env files were read; whether the workspace is writable, trusted and a git repository; IVRALO.md or AGENTS.md. Says when the installed version carries more skills than the home's shelf.
private filesThat .env, google-token.json and api-token are readable by their owner only.
postgresWhere the database comes from (Docker, a URL you named, or a cluster ivralo made), whether it answers, and the address its port is published on. For a made cluster: the data directory, the port and the pg_dump line (PostgreSQL).
diskFree space on the workspace's drive, the size of the file history, the database's size.
librariesThat every library the engine imports can be imported.

Models

SectionWhat it checks
ollamaWhen a role or the embedder runs on Ollama: the server, the tags pulled against the tags in use, and how much of each loaded model the GPU holds.
providersEach hosted provider in use: its SDK, its key, and what leaves the machine. An OpenAI-compatible endpoint is asked for its model list; if the gateway forbids the listing, a one-token completion decides. Also says which models count as hosted for incident evidence.
contextThe configured context window against what Ollama actually runs.

Skills, knowledge and tools

SectionWhat it checks
skillsBoth shelves validated and linted, files repaired on load, and who owns each skill.
mcpThe servers declared in mcp.json. Connections are probed only on demand, with ivralo mcp test <name>.
knowledgeThe knowledge index: the vector extension, one real embedding request and the size it returns, and what the index holds.
webThe web tools: the search libraries, the browser, a SearXNG if configured. Off on a server.
ocrThe docling command and its languages, for scanned documents.

Integrations

SectionWhat it checks
tracingWhether spans are exported, and where.
databaseEach database connection you declared for the team to query. Not ivralo's own PostgreSQL, which is postgres above.
terminalWhether the terminal can show pictures, and your key bindings.
photosThe stock photo tools' dependencies.
mail, notifyThe mail account and who may be written to; the Telegram or Slack channel.
google, githubThe Google login and its services; the GitHub token, the gh command and the GitHub Clerk.
forgeivralo's git identity, the forge credential and whose it is, and the mode (Install on a server).
schedulesEach scheduled request, whether the operating system's scheduler has it, and its last run.

Running code

SectionWhat it checks
python runtimeThe worker's sandbox: the process, its limits, its scrubbed environment.
permissionsThe home's and the repository's permissions.json, each summarised, and the merged shell policy.
egressThe egress policy: what is denied everywhere, your host lists, and what each exit (web, browser, worker, shell) does with a host nobody decided.
language serversEach server IVRALO.md declares: on the PATH, allowed to start, and whether it answers.
apiThe local API: the token file, and whether ivralo serve is running on its port, off, or the port is taken by something else.
code indexWhat the repository's code index reflects and holds; a declared language server that produced no symbols is red.
changesetsOn or off, and any changeset still staged.
evidenceThe folders # Evidence in IVRALO.md opens to search, and the files each adds. A declared folder that cannot be one is red.
capabilitiesThe profile, the capability table, each specialist's grants, the baseline, and what the main agent holds.
sessionThe database URL with its password hidden, the schema, the instance limits, the active session and the memory count.

When something is red

Fix the rows in order: a red postgres or environment row usually explains red rows further down. Each failed row's grey line says what to run or change. Then run ivralo doctor again.